]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
aster new
authorPascale Noyret <pascale.noyret@edf.fr>
Tue, 25 Nov 2014 16:36:59 +0000 (16:36 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Tue, 25 Nov 2014 16:36:59 +0000 (16:36 +0000)
Aster/Cata/cataSTA11/__init__.py
Aster/Cata/cataSTA11/cata.py
Aster/Cata/cataSTA11/ops.py

index 3cdb1caf7fb0bff02a68f535b3ebc82e6f0c68e4..6494af99a3317204ae8ef28a1238ea554df8530a 100644 (file)
@@ -1,18 +1 @@
-import os,sys
-sys.modules["Cata"]=sys.modules[__name__]
-rep_macro = os.path.dirname(__file__)
-sys.path.insert(0,rep_macro)
-rep_macro=os.path.join(rep_macro,'Macro')
-sys.path.insert(0,rep_macro)
-
-if sys.modules.has_key("SD"):
-  del sys.modules["SD"]
-for k in sys.modules.keys():
-  if k[0:3] == "SD.":
-    del sys.modules[k]
-
-
 from cata import *
-from math import ceil
-from Extensions import param2
-pi=param2.Variable('pi',pi)
index 36daee42e484c645cefc2ef41b2fb04bd3f66217..4c1abc2c706a6aeef2aa3592ddd827234970297d 100755 (executable)
 # person_in_charge: mathieu.courtois at edf.fr
 
 import os
+import os.path as osp
 from math import sin, cos, tan, asin, acos, atan2, atan, sinh, cosh, tanh
-from math import pi ,exp,log, log10, sqrt
+from math import pi, exp, log, log10, sqrt
+
+# translation of the docstrings of the commands and keywords is
+# used within Eficas, that's why we are using PyQt i18n functions here
+try:
+    from PyQt4 import QtCore, QtGui
+    app = QtGui.QApplication
+    # define the tr function
+    try:
+        _encoding = app.UnicodeUTF8
+        def tr(text):
+            return app.translate("@default", text, None, _encoding)
+    except AttributeError:
+        def tr(text):
+            return app.translate("@default", text, None)
+    # install the translator
+    translator = QtCore.QTranslator()
+    # ask Eficas for the selected language
+    try:
+        from Extensions.localisation import get_locale
+        locale = get_locale()
+    except ImportError:
+        locale = QtCore.QLocale.system().name()
+    localedir = osp.normpath(osp.dirname(__file__))
+    if translator.load("catapy_" + locale, localedir):
+        app.installTranslator(translator)
+except ImportError:
+    try:
+        # let gettext function in place
+        tr = _
+    except NameError:
+        def tr(string):
+            return string
 
 import Accas
 from Accas import *
@@ -43,7 +76,7 @@ except ImportError:
 
 JdC = JDC_CATA(code='ASTER',
                execmodul=None,
-               regles=(AU_MOINS_UN('DEBUT', 'POURSUITE'),
+               regles=(UN_PARMI('DEBUT', 'POURSUITE'),
                        AU_MOINS_UN('FIN'),
                        A_CLASSER(('DEBUT', 'POURSUITE'), 'FIN')))
 
@@ -1388,70 +1421,109 @@ class mater_sdaster(ASSD):
       return aster.rcvale(self.nom, phenomene, nompar, valpar, nomres, stop)
 
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 2014 STEFAN H. REITERER stefan.harald.reiterer@gmail.com
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 
 class matr_asse(ASSD):
     cata_sdj = "SD.sd_matr_asse.sd_matr_asse"
 
-    def EXTR_MATR(self) :
-        """ retourne les valeurs de la matrice  dans un format numpy
-            Attributs retourne
-              - self.valeurs : numpy.array contenant les valeurs """
-        import numpy
+    def EXTR_MATR(self, sparse=False) :
+        """Retourne les valeurs de la matrice dans un format numpy
+        Si sparse=True, la valeur de retour est un triplet de numpy.array.
+        Attributs retourne si sparse=False:
+        - valeurs : numpy.array contenant les valeurs
+        ou si sparse=True:
+        - valeurs : numpy.array contenant les valeurs
+        - lignes : numpy.array numpy.array contenant les indices des lignes
+        - colonnes : numpy.array contenant les indices des colonnes
+        - dim : int qui donne la dimension de la matrice
+        """
+        import numpy as NP
         from SD.sd_stoc_morse import sd_stoc_morse
-
         if not self.accessible():
             raise Accas.AsException("Erreur dans matr_asse.EXTR_MATR en PAR_LOT='OUI'")
-
-        refa = numpy.array(self.sdj.REFA.get())
-        ma=refa[0]
-        nu=refa[1]
+        refa = NP.array(self.sdj.REFA.get())
+        ma = refa[0]
+        nu = refa[1]
         smos = sd_stoc_morse(nu[:14]+'.SMOS')
-
-        valm=self.sdj.VALM.get()
-        smhc=smos.SMHC.get()
-        smdi=smos.SMDI.get()
-
-        sym=len(valm)==1
-        dim=len(smdi)
-        nnz=smdi[dim-1]
-
-        triang_sup = numpy.array(valm[1])
+        valm = self.sdj.VALM.get()
+        smhc = smos.SMHC.get()
+        smdi = smos.SMDI.get()
+        sym = len(valm) == 1
+        dim = len(smdi)
+        nnz = smdi[dim-1]
+        triang_sup = NP.array(valm[1])
         if sym:
             triang_inf = triang_sup
         else:
-            triang_inf = numpy.array(valm[2])
-
-        if type(valm[1][0]) == type(1.j) :
-            dtype=complex
+            triang_inf = NP.array(valm[2])
+        if type(valm[1][0]) == complex:
+            dtype = complex
         else :
-            dtype=float
-        valeur=numpy.zeros([dim, dim], dtype=dtype)
-
-        jcol=1
-        for kterm in range(1,nnz+1):
-            ilig=smhc[kterm-1]
-            if (smdi[jcol-1] < kterm):
-                jcol=jcol+1
-            valeur[jcol-1,ilig-1]=triang_inf[kterm-1]
-            valeur[ilig-1,jcol-1]=triang_sup[kterm-1]
-
-        return valeur
+            dtype = float
+
+        if sparse :
+            smhc = NP.array(smhc)-1
+            smdi = NP.array(smdi)-1
+            class SparseMatrixIterator :
+                """classe d'itération pour la liste de la colonne"""
+                def __init__(self) :
+                    self.jcol=0
+                    self.kterm=0
+
+                def __iter__(self) :
+                    return self
+
+                def next(self) :
+                    if self.kterm == 0:
+                        self.kterm += 1
+                        return self.jcol
+                    if smdi[self.jcol] < self.kterm:
+                        self.jcol += 1
+                    self.kterm += 1
+                    return self.jcol
+
+            col_iter = SparseMatrixIterator()
+            # générer la liste de colonnes
+            cols = NP.fromiter(col_iter, count=nnz, dtype=int)
+            # entrées filtre de pivot de triang_inf
+            helper = smhc - cols
+            indices_to_filter = NP.where(helper == 0)[0]
+            smdi_inf = NP.copy(smhc)
+            smdi_inf = NP.delete(smdi_inf, indices_to_filter)
+            smhc_inf = NP.copy(cols)
+            smhc_inf = NP.delete(smhc_inf, indices_to_filter)
+            triang_inf = NP.delete(triang_inf, indices_to_filter)
+            # joindre les listes
+            lignes = NP.concatenate((cols,smdi_inf))
+            colonnes = NP.concatenate((smhc,smhc_inf))
+            valeurs = NP.concatenate((triang_sup, triang_inf))
+            return valeurs, lignes, colonnes, dim
+        else :
+            valeur = NP.zeros([dim, dim], dtype=dtype)
+            jcol = 1
+            for kterm in xrange(1,nnz+1):
+                ilig=smhc[kterm-1]
+                if smdi[jcol-1] < kterm:
+                    jcol += 1
+                valeur[jcol-1,ilig-1] = triang_inf[kterm-1]
+                valeur[ilig-1,jcol-1] = triang_sup[kterm-1]
+            return valeur
 
 class matr_asse_gd(matr_asse):
     cata_sdj = "SD.sd_matr_asse.sd_matr_asse"
@@ -1968,8 +2040,6 @@ class evol_noli(evol_sdaster): pass
 class evol_ther(evol_sdaster): pass
 class evol_varc(evol_sdaster): pass
 
-
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
@@ -2009,6 +2079,7 @@ class mode_meca_c(mode_meca) : pass
 
 # TODO : convertir mode_gene en format généralisé
 class mode_gene  (dyna_phys) : pass
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -2134,6 +2205,19 @@ class table_sdaster(ASSD):
             titr = ''
         return titr
 
+    def get_nom_para(self):
+        """Produit une liste des noms des colonnes
+        """
+        if not self.accessible():
+            raise Accas.AsException("Erreur dans table.get_nom_para en PAR_LOT='OUI'")
+        l_name = []
+        shape = self.sdj.TBNP.get()
+        desc  = self.sdj.TBLP.get()
+        for n in range(shape[0]):
+            nom = desc[4*n]
+            l_name.append( nom.strip() )
+        return l_name
+
     def EXTR_TABLE(self, para=None) :
         """Produit un objet Table à partir du contenu d'une table Aster.
         On peut limiter aux paramètres listés dans 'para'.
@@ -2371,6 +2455,961 @@ class vect_elem_pres_c(vect_elem):
 class vect_elem_temp_r(vect_elem):
    pass
 
+#
+# Automatically-generated file. Do not edit!
+#
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
+#
+def C_MFRONT_OFFICIAL():
+    keywords = {
+
+        'AnisoLemaitre' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            a_0 = SIMP(statut='o', typ='R'),
+            a_1 = SIMP(statut='o', typ='R'),
+            a_2 = SIMP(statut='o', typ='R'),
+            m_0 = SIMP(statut='o', typ='R'),
+            m_1 = SIMP(statut='o', typ='R'),
+            m_2 = SIMP(statut='o', typ='R'),
+            pn_0 = SIMP(statut='o', typ='R'),
+            pn_1 = SIMP(statut='o', typ='R'),
+            pn_2 = SIMP(statut='o', typ='R'),
+            Q_0 = SIMP(statut='o', typ='R'),
+            Q_1 = SIMP(statut='o', typ='R'),
+            Q_2 = SIMP(statut='o', typ='R'),
+            M1_0 = SIMP(statut='o', typ='R'),
+            M1_1 = SIMP(statut='o', typ='R'),
+            M1_2 = SIMP(statut='o', typ='R'),
+            M1_3 = SIMP(statut='o', typ='R'),
+            M1_4 = SIMP(statut='o', typ='R'),
+            M1_5 = SIMP(statut='o', typ='R'),
+            M3_0 = SIMP(statut='o', typ='R'),
+            M3_1 = SIMP(statut='o', typ='R'),
+            M3_2 = SIMP(statut='o', typ='R'),
+            M3_3 = SIMP(statut='o', typ='R'),
+            M3_4 = SIMP(statut='o', typ='R'),
+            M3_5 = SIMP(statut='o', typ='R'),
+        ),
+        'AnisoLemaitre_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            a_0 = SIMP(statut='o', typ=fonction_sdaster),
+            a_1 = SIMP(statut='o', typ=fonction_sdaster),
+            a_2 = SIMP(statut='o', typ=fonction_sdaster),
+            m_0 = SIMP(statut='o', typ=fonction_sdaster),
+            m_1 = SIMP(statut='o', typ=fonction_sdaster),
+            m_2 = SIMP(statut='o', typ=fonction_sdaster),
+            pn_0 = SIMP(statut='o', typ=fonction_sdaster),
+            pn_1 = SIMP(statut='o', typ=fonction_sdaster),
+            pn_2 = SIMP(statut='o', typ=fonction_sdaster),
+            Q_0 = SIMP(statut='o', typ=fonction_sdaster),
+            Q_1 = SIMP(statut='o', typ=fonction_sdaster),
+            Q_2 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_0 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_1 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_2 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_3 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_4 = SIMP(statut='o', typ=fonction_sdaster),
+            M1_5 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_0 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_1 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_2 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_3 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_4 = SIMP(statut='o', typ=fonction_sdaster),
+            M3_5 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Burger' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            KRS = SIMP(statut='o', typ='R'),
+            NRS = SIMP(statut='o', typ='R'),
+            KAPPA = SIMP(statut='o', typ='R'),
+            NIS = SIMP(statut='o', typ='R'),
+            KRD = SIMP(statut='o', typ='R'),
+            NRD = SIMP(statut='o', typ='R'),
+            NID = SIMP(statut='o', typ='R'),
+            NFD = SIMP(statut='o', typ='R'),
+            Cini = SIMP(statut='o', typ='R'),
+        ),
+        'Burger_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            KRS = SIMP(statut='o', typ=fonction_sdaster),
+            NRS = SIMP(statut='o', typ=fonction_sdaster),
+            KAPPA = SIMP(statut='o', typ=fonction_sdaster),
+            NIS = SIMP(statut='o', typ=fonction_sdaster),
+            KRD = SIMP(statut='o', typ=fonction_sdaster),
+            NRD = SIMP(statut='o', typ=fonction_sdaster),
+            NID = SIMP(statut='o', typ=fonction_sdaster),
+            NFD = SIMP(statut='o', typ=fonction_sdaster),
+            Cini = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Chaboche' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            R_inf = SIMP(statut='o', typ='R'),
+            R_0 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            k = SIMP(statut='o', typ='R'),
+            w = SIMP(statut='o', typ='R'),
+            C_inf_0 = SIMP(statut='o', typ='R'),
+            C_inf_1 = SIMP(statut='o', typ='R'),
+            g_0_0 = SIMP(statut='o', typ='R'),
+            g_0_1 = SIMP(statut='o', typ='R'),
+            a_inf = SIMP(statut='o', typ='R'),
+        ),
+        'Chaboche_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            R_inf = SIMP(statut='o', typ=fonction_sdaster),
+            R_0 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            k = SIMP(statut='o', typ=fonction_sdaster),
+            w = SIMP(statut='o', typ=fonction_sdaster),
+            C_inf_0 = SIMP(statut='o', typ=fonction_sdaster),
+            C_inf_1 = SIMP(statut='o', typ=fonction_sdaster),
+            g_0_0 = SIMP(statut='o', typ=fonction_sdaster),
+            g_0_1 = SIMP(statut='o', typ=fonction_sdaster),
+            a_inf = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'DruckPragEcroLin' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            a = SIMP(statut='o', typ='R'),
+            p_ult = SIMP(statut='o', typ='R'),
+            sy = SIMP(statut='o', typ='R'),
+            H = SIMP(statut='o', typ='R'),
+        ),
+        'DruckPragEcroLin_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            a = SIMP(statut='o', typ=fonction_sdaster),
+            p_ult = SIMP(statut='o', typ=fonction_sdaster),
+            sy = SIMP(statut='o', typ=fonction_sdaster),
+            H = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'DruckerPrager' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            tau = SIMP(statut='o', typ='R'),
+            sigc = SIMP(statut='o', typ='R'),
+        ),
+        'DruckerPrager_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            tau = SIMP(statut='o', typ=fonction_sdaster),
+            sigc = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'GTN' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+        ),
+        'GTN_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'GdefMonoCristal' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            C = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            Q = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            d1 = SIMP(statut='o', typ='R'),
+        ),
+        'GdefMonoCristal_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            C = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            Q = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            d1 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'GdefMono_Jacnum' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            C = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            Q = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            d1 = SIMP(statut='o', typ='R'),
+        ),
+        'GdefMono_Jacnum_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            C = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            Q = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            d1 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Hayhurst' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            epsi0 = SIMP(statut='o', typ='R'),
+            sigma0 = SIMP(statut='o', typ='R'),
+            h1 = SIMP(statut='o', typ='R'),
+            h2 = SIMP(statut='o', typ='R'),
+            H1star = SIMP(statut='o', typ='R'),
+            H2star = SIMP(statut='o', typ='R'),
+            A0 = SIMP(statut='o', typ='R'),
+            alphaD = SIMP(statut='o', typ='R'),
+            delta1 = SIMP(statut='o', typ='R'),
+            delta2 = SIMP(statut='o', typ='R'),
+            sequid = SIMP(statut='o', typ='R'),
+        ),
+        'Hayhurst_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            epsi0 = SIMP(statut='o', typ=fonction_sdaster),
+            sigma0 = SIMP(statut='o', typ=fonction_sdaster),
+            h1 = SIMP(statut='o', typ=fonction_sdaster),
+            h2 = SIMP(statut='o', typ=fonction_sdaster),
+            H1star = SIMP(statut='o', typ=fonction_sdaster),
+            H2star = SIMP(statut='o', typ=fonction_sdaster),
+            A0 = SIMP(statut='o', typ=fonction_sdaster),
+            alphaD = SIMP(statut='o', typ=fonction_sdaster),
+            delta1 = SIMP(statut='o', typ=fonction_sdaster),
+            delta2 = SIMP(statut='o', typ=fonction_sdaster),
+            sequid = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'ImplicitHayhurst' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            epsi0 = SIMP(statut='o', typ='R'),
+            sigma0 = SIMP(statut='o', typ='R'),
+            h1 = SIMP(statut='o', typ='R'),
+            h2 = SIMP(statut='o', typ='R'),
+            H1star = SIMP(statut='o', typ='R'),
+            H2star = SIMP(statut='o', typ='R'),
+            A0 = SIMP(statut='o', typ='R'),
+            alphaD = SIMP(statut='o', typ='R'),
+            delta1 = SIMP(statut='o', typ='R'),
+            delta2 = SIMP(statut='o', typ='R'),
+            sequid = SIMP(statut='o', typ='R'),
+        ),
+        'ImplicitHayhurst_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            epsi0 = SIMP(statut='o', typ=fonction_sdaster),
+            sigma0 = SIMP(statut='o', typ=fonction_sdaster),
+            h1 = SIMP(statut='o', typ=fonction_sdaster),
+            h2 = SIMP(statut='o', typ=fonction_sdaster),
+            H1star = SIMP(statut='o', typ=fonction_sdaster),
+            H2star = SIMP(statut='o', typ=fonction_sdaster),
+            A0 = SIMP(statut='o', typ=fonction_sdaster),
+            alphaD = SIMP(statut='o', typ=fonction_sdaster),
+            delta1 = SIMP(statut='o', typ=fonction_sdaster),
+            delta2 = SIMP(statut='o', typ=fonction_sdaster),
+            sequid = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'ImplicitMazars' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            Ac = SIMP(statut='o', typ='R'),
+            At = SIMP(statut='o', typ='R'),
+            Bc = SIMP(statut='o', typ='R'),
+            Bt = SIMP(statut='o', typ='R'),
+            k = SIMP(statut='o', typ='R'),
+            ed0 = SIMP(statut='o', typ='R'),
+        ),
+        'ImplicitMazars_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            Ac = SIMP(statut='o', typ=fonction_sdaster),
+            At = SIMP(statut='o', typ=fonction_sdaster),
+            Bc = SIMP(statut='o', typ=fonction_sdaster),
+            Bt = SIMP(statut='o', typ=fonction_sdaster),
+            k = SIMP(statut='o', typ=fonction_sdaster),
+            ed0 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'ImplicitNorton' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            A = SIMP(statut='o', typ='R'),
+            E = SIMP(statut='o', typ='R'),
+        ),
+        'ImplicitNorton_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            A = SIMP(statut='o', typ=fonction_sdaster),
+            E = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Mazars' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            Ac = SIMP(statut='o', typ='R'),
+            At = SIMP(statut='o', typ='R'),
+            Bc = SIMP(statut='o', typ='R'),
+            Bt = SIMP(statut='o', typ='R'),
+            k = SIMP(statut='o', typ='R'),
+            ed0 = SIMP(statut='o', typ='R'),
+        ),
+        'Mazars_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            Ac = SIMP(statut='o', typ=fonction_sdaster),
+            At = SIMP(statut='o', typ=fonction_sdaster),
+            Bc = SIMP(statut='o', typ=fonction_sdaster),
+            Bt = SIMP(statut='o', typ=fonction_sdaster),
+            k = SIMP(statut='o', typ=fonction_sdaster),
+            ed0 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'MonoCristalDDCC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            H = SIMP(statut='o', typ='R'),
+            DeltaG_0 = SIMP(statut='o', typ='R'),
+            tau_0 = SIMP(statut='o', typ='R'),
+            tau_f = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            omega_mob = SIMP(statut='o', typ='R'),
+            d = SIMP(statut='o', typ='R'),
+            d_lath = SIMP(statut='o', typ='R'),
+            y_at = SIMP(statut='o', typ='R'),
+            K_f = SIMP(statut='o', typ='R'),
+            K_self = SIMP(statut='o', typ='R'),
+            k_b = SIMP(statut='o', typ='R'),
+            epsi_1 = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+            h0 = SIMP(statut='o', typ='R'),
+            h1 = SIMP(statut='o', typ='R'),
+            h2 = SIMP(statut='o', typ='R'),
+            h3 = SIMP(statut='o', typ='R'),
+            h4 = SIMP(statut='o', typ='R'),
+            h5 = SIMP(statut='o', typ='R'),
+        ),
+        'MonoCristalDDCC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            H = SIMP(statut='o', typ=fonction_sdaster),
+            DeltaG_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_f = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            omega_mob = SIMP(statut='o', typ=fonction_sdaster),
+            d = SIMP(statut='o', typ=fonction_sdaster),
+            d_lath = SIMP(statut='o', typ=fonction_sdaster),
+            y_at = SIMP(statut='o', typ=fonction_sdaster),
+            K_f = SIMP(statut='o', typ=fonction_sdaster),
+            K_self = SIMP(statut='o', typ=fonction_sdaster),
+            k_b = SIMP(statut='o', typ=fonction_sdaster),
+            epsi_1 = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+            h0 = SIMP(statut='o', typ=fonction_sdaster),
+            h1 = SIMP(statut='o', typ=fonction_sdaster),
+            h2 = SIMP(statut='o', typ=fonction_sdaster),
+            h3 = SIMP(statut='o', typ=fonction_sdaster),
+            h4 = SIMP(statut='o', typ=fonction_sdaster),
+            h5 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'MonoCristalDDCFC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            tauf = SIMP(statut='o', typ='R'),
+            y = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            a = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            rhoref = SIMP(statut='o', typ='R'),
+            alpha = SIMP(statut='o', typ='R'),
+            beta = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+        ),
+        'MonoCristalDDCFC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            tauf = SIMP(statut='o', typ=fonction_sdaster),
+            y = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            a = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            rhoref = SIMP(statut='o', typ=fonction_sdaster),
+            alpha = SIMP(statut='o', typ=fonction_sdaster),
+            beta = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'MonoCristal_CFC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            C = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            Q = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            d1 = SIMP(statut='o', typ='R'),
+        ),
+        'MonoCristal_CFC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            C = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            Q = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            d1 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'MonoDDCC_Irra' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            H = SIMP(statut='o', typ='R'),
+            DeltaG_0 = SIMP(statut='o', typ='R'),
+            tau_0 = SIMP(statut='o', typ='R'),
+            tau_f = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            omega_mob = SIMP(statut='o', typ='R'),
+            d = SIMP(statut='o', typ='R'),
+            d_lath = SIMP(statut='o', typ='R'),
+            y_at = SIMP(statut='o', typ='R'),
+            K_f = SIMP(statut='o', typ='R'),
+            K_self = SIMP(statut='o', typ='R'),
+            k_b = SIMP(statut='o', typ='R'),
+            epsi_1 = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+            a_irr = SIMP(statut='o', typ='R'),
+            xi_irr = SIMP(statut='o', typ='R'),
+            h0 = SIMP(statut='o', typ='R'),
+            h1 = SIMP(statut='o', typ='R'),
+            h2 = SIMP(statut='o', typ='R'),
+            h3 = SIMP(statut='o', typ='R'),
+            h4 = SIMP(statut='o', typ='R'),
+            h5 = SIMP(statut='o', typ='R'),
+        ),
+        'MonoDDCC_Irra_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            H = SIMP(statut='o', typ=fonction_sdaster),
+            DeltaG_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_f = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            omega_mob = SIMP(statut='o', typ=fonction_sdaster),
+            d = SIMP(statut='o', typ=fonction_sdaster),
+            d_lath = SIMP(statut='o', typ=fonction_sdaster),
+            y_at = SIMP(statut='o', typ=fonction_sdaster),
+            K_f = SIMP(statut='o', typ=fonction_sdaster),
+            K_self = SIMP(statut='o', typ=fonction_sdaster),
+            k_b = SIMP(statut='o', typ=fonction_sdaster),
+            epsi_1 = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+            a_irr = SIMP(statut='o', typ=fonction_sdaster),
+            xi_irr = SIMP(statut='o', typ=fonction_sdaster),
+            h0 = SIMP(statut='o', typ=fonction_sdaster),
+            h1 = SIMP(statut='o', typ=fonction_sdaster),
+            h2 = SIMP(statut='o', typ=fonction_sdaster),
+            h3 = SIMP(statut='o', typ=fonction_sdaster),
+            h4 = SIMP(statut='o', typ=fonction_sdaster),
+            h5 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'MonoDDCFC_Irra' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            tauf = SIMP(statut='o', typ='R'),
+            y = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            a = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            rhoref = SIMP(statut='o', typ='R'),
+            alpha = SIMP(statut='o', typ='R'),
+            beta = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+            RHO_VOID = SIMP(statut='o', typ='R'),
+            PHI_LOOP = SIMP(statut='o', typ='R'),
+            ALP_VOID = SIMP(statut='o', typ='R'),
+            ALP_LOOP = SIMP(statut='o', typ='R'),
+            RHO_SAT = SIMP(statut='o', typ='R'),
+            PHI_SAT = SIMP(statut='o', typ='R'),
+            XI_IRRA = SIMP(statut='o', typ='R'),
+            DZ_IRRA = SIMP(statut='o', typ='R'),
+        ),
+        'MonoDDCFC_Irra_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            tauf = SIMP(statut='o', typ=fonction_sdaster),
+            y = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            a = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            rhoref = SIMP(statut='o', typ=fonction_sdaster),
+            alpha = SIMP(statut='o', typ=fonction_sdaster),
+            beta = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+            RHO_VOID = SIMP(statut='o', typ=fonction_sdaster),
+            PHI_LOOP = SIMP(statut='o', typ=fonction_sdaster),
+            ALP_VOID = SIMP(statut='o', typ=fonction_sdaster),
+            ALP_LOOP = SIMP(statut='o', typ=fonction_sdaster),
+            RHO_SAT = SIMP(statut='o', typ=fonction_sdaster),
+            PHI_SAT = SIMP(statut='o', typ=fonction_sdaster),
+            XI_IRRA = SIMP(statut='o', typ=fonction_sdaster),
+            DZ_IRRA = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Norton' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            A = SIMP(statut='o', typ='R'),
+            E = SIMP(statut='o', typ='R'),
+        ),
+        'Norton_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            A = SIMP(statut='o', typ=fonction_sdaster),
+            E = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Norton_Jacnum' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            A = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+        ),
+        'Norton_Jacnum_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            A = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Norton_RK54' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            A = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+        ),
+        'Norton_RK54_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            A = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'OrthotropicElast' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+        ),
+        'OrthotropicElast_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Plasticity' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            ThermalExpansion = SIMP(statut='o', typ='R'),
+            s0 = SIMP(statut='o', typ='R'),
+            ET = SIMP(statut='o', typ='R'),
+        ),
+        'Plasticity_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            ThermalExpansion = SIMP(statut='o', typ=fonction_sdaster),
+            s0 = SIMP(statut='o', typ=fonction_sdaster),
+            ET = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'PlasticityTH' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            ThermalExpansion = SIMP(statut='o', typ='R'),
+            ET = SIMP(statut='o', typ='R'),
+        ),
+        'PlasticityTH_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            ThermalExpansion = SIMP(statut='o', typ=fonction_sdaster),
+            ET = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'PolyCristalDDCC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            H = SIMP(statut='o', typ='R'),
+            DeltaG_0 = SIMP(statut='o', typ='R'),
+            tau_0 = SIMP(statut='o', typ='R'),
+            tau_f = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            omega_mob = SIMP(statut='o', typ='R'),
+            d = SIMP(statut='o', typ='R'),
+            d_lath = SIMP(statut='o', typ='R'),
+            y_at = SIMP(statut='o', typ='R'),
+            K_f = SIMP(statut='o', typ='R'),
+            K_self = SIMP(statut='o', typ='R'),
+            k_b = SIMP(statut='o', typ='R'),
+            epsi_1 = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+            h0 = SIMP(statut='o', typ='R'),
+            h1 = SIMP(statut='o', typ='R'),
+            h2 = SIMP(statut='o', typ='R'),
+            h3 = SIMP(statut='o', typ='R'),
+            h4 = SIMP(statut='o', typ='R'),
+            h5 = SIMP(statut='o', typ='R'),
+        ),
+        'PolyCristalDDCC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            H = SIMP(statut='o', typ=fonction_sdaster),
+            DeltaG_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_0 = SIMP(statut='o', typ=fonction_sdaster),
+            tau_f = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            omega_mob = SIMP(statut='o', typ=fonction_sdaster),
+            d = SIMP(statut='o', typ=fonction_sdaster),
+            d_lath = SIMP(statut='o', typ=fonction_sdaster),
+            y_at = SIMP(statut='o', typ=fonction_sdaster),
+            K_f = SIMP(statut='o', typ=fonction_sdaster),
+            K_self = SIMP(statut='o', typ=fonction_sdaster),
+            k_b = SIMP(statut='o', typ=fonction_sdaster),
+            epsi_1 = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+            h0 = SIMP(statut='o', typ=fonction_sdaster),
+            h1 = SIMP(statut='o', typ=fonction_sdaster),
+            h2 = SIMP(statut='o', typ=fonction_sdaster),
+            h3 = SIMP(statut='o', typ=fonction_sdaster),
+            h4 = SIMP(statut='o', typ=fonction_sdaster),
+            h5 = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'PolyCristalDDCFC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            tauf = SIMP(statut='o', typ='R'),
+            y = SIMP(statut='o', typ='R'),
+            pn = SIMP(statut='o', typ='R'),
+            gamma0 = SIMP(statut='o', typ='R'),
+            a = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            rhoref = SIMP(statut='o', typ='R'),
+            alpha = SIMP(statut='o', typ='R'),
+            beta = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+        ),
+        'PolyCristalDDCFC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            tauf = SIMP(statut='o', typ=fonction_sdaster),
+            y = SIMP(statut='o', typ=fonction_sdaster),
+            pn = SIMP(statut='o', typ=fonction_sdaster),
+            gamma0 = SIMP(statut='o', typ=fonction_sdaster),
+            a = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            rhoref = SIMP(statut='o', typ=fonction_sdaster),
+            alpha = SIMP(statut='o', typ=fonction_sdaster),
+            beta = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'PolyCristal_MC' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ='R'),
+            YoungModulus2 = SIMP(statut='o', typ='R'),
+            YoungModulus3 = SIMP(statut='o', typ='R'),
+            PoissonRatio12 = SIMP(statut='o', typ='R'),
+            PoissonRatio23 = SIMP(statut='o', typ='R'),
+            PoissonRatio13 = SIMP(statut='o', typ='R'),
+            ShearModulus12 = SIMP(statut='o', typ='R'),
+            ShearModulus23 = SIMP(statut='o', typ='R'),
+            ShearModulus13 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            K = SIMP(statut='o', typ='R'),
+            C = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            Q = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            H = SIMP(statut='o', typ='R'),
+            d1 = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+        ),
+        'PolyCristal_MC_FO' : FACT(statut='f',
+            YoungModulus1 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus2 = SIMP(statut='o', typ=fonction_sdaster),
+            YoungModulus3 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio12 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio23 = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio13 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus12 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus23 = SIMP(statut='o', typ=fonction_sdaster),
+            ShearModulus13 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            K = SIMP(statut='o', typ=fonction_sdaster),
+            C = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            Q = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            H = SIMP(statut='o', typ=fonction_sdaster),
+            d1 = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'SVenantKirchhoff' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+        ),
+        'SVenantKirchhoff_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'SimoMieheVmis' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            ThermalExpansion = SIMP(statut='o', typ='R'),
+            s_y = SIMP(statut='o', typ='R'),
+            ET = SIMP(statut='o', typ='R'),
+        ),
+        'SimoMieheVmis_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            ThermalExpansion = SIMP(statut='o', typ=fonction_sdaster),
+            s_y = SIMP(statut='o', typ=fonction_sdaster),
+            ET = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'Tvergaard' : FACT(statut='f',
+            NormalStiffness = SIMP(statut='o', typ='R'),
+            TangentStiffness = SIMP(statut='o', typ='R'),
+            UltTensStrength = SIMP(statut='o', typ='R'),
+            MaxOpeningDispl = SIMP(statut='o', typ='R'),
+        ),
+        'Tvergaard_FO' : FACT(statut='f',
+            NormalStiffness = SIMP(statut='o', typ=fonction_sdaster),
+            TangentStiffness = SIMP(statut='o', typ=fonction_sdaster),
+            UltTensStrength = SIMP(statut='o', typ=fonction_sdaster),
+            MaxOpeningDispl = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'ViscoChaboche' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            alpha = SIMP(statut='o', typ='R'),
+            Rinf = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            C_0 = SIMP(statut='o', typ='R'),
+            C_1 = SIMP(statut='o', typ='R'),
+            g_0 = SIMP(statut='o', typ='R'),
+            g_1 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            UNsurK = SIMP(statut='o', typ='R'),
+        ),
+        'ViscoChaboche_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            alpha = SIMP(statut='o', typ=fonction_sdaster),
+            Rinf = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            C_0 = SIMP(statut='o', typ=fonction_sdaster),
+            C_1 = SIMP(statut='o', typ=fonction_sdaster),
+            g_0 = SIMP(statut='o', typ=fonction_sdaster),
+            g_1 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            UNsurK = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+        'ViscoMemoNrad' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ='R'),
+            PoissonRatio = SIMP(statut='o', typ='R'),
+            delta1 = SIMP(statut='o', typ='R'),
+            delta2 = SIMP(statut='o', typ='R'),
+            Rinf = SIMP(statut='o', typ='R'),
+            R0 = SIMP(statut='o', typ='R'),
+            b = SIMP(statut='o', typ='R'),
+            k = SIMP(statut='o', typ='R'),
+            w = SIMP(statut='o', typ='R'),
+            C1inf = SIMP(statut='o', typ='R'),
+            g1 = SIMP(statut='o', typ='R'),
+            C2inf = SIMP(statut='o', typ='R'),
+            g2 = SIMP(statut='o', typ='R'),
+            m = SIMP(statut='o', typ='R'),
+            UNsurK = SIMP(statut='o', typ='R'),
+            ainf = SIMP(statut='o', typ='R'),
+            Eta = SIMP(statut='o', typ='R'),
+            Qm = SIMP(statut='o', typ='R'),
+            Q0 = SIMP(statut='o', typ='R'),
+            Mu = SIMP(statut='o', typ='R'),
+        ),
+        'ViscoMemoNrad_FO' : FACT(statut='f',
+            YoungModulus = SIMP(statut='o', typ=fonction_sdaster),
+            PoissonRatio = SIMP(statut='o', typ=fonction_sdaster),
+            delta1 = SIMP(statut='o', typ=fonction_sdaster),
+            delta2 = SIMP(statut='o', typ=fonction_sdaster),
+            Rinf = SIMP(statut='o', typ=fonction_sdaster),
+            R0 = SIMP(statut='o', typ=fonction_sdaster),
+            b = SIMP(statut='o', typ=fonction_sdaster),
+            k = SIMP(statut='o', typ=fonction_sdaster),
+            w = SIMP(statut='o', typ=fonction_sdaster),
+            C1inf = SIMP(statut='o', typ=fonction_sdaster),
+            g1 = SIMP(statut='o', typ=fonction_sdaster),
+            C2inf = SIMP(statut='o', typ=fonction_sdaster),
+            g2 = SIMP(statut='o', typ=fonction_sdaster),
+            m = SIMP(statut='o', typ=fonction_sdaster),
+            UNsurK = SIMP(statut='o', typ=fonction_sdaster),
+            ainf = SIMP(statut='o', typ=fonction_sdaster),
+            Eta = SIMP(statut='o', typ=fonction_sdaster),
+            Qm = SIMP(statut='o', typ=fonction_sdaster),
+            Q0 = SIMP(statut='o', typ=fonction_sdaster),
+            Mu = SIMP(statut='o', typ=fonction_sdaster),
+        ),
+    }
+    return keywords
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
@@ -2449,38 +3488,48 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
                        'CALC_POINT_MAT','SIMU_POINT_MAT', 'DYNA_NON_LINE','STAT_NON_LINE','CALCUL','CALC_FORC_NONL',
                        'CALC_IFS_DNL','CALC_PRECONT','CREA_RESU','LIRE_RESU','MACR_ECREVISSE','TEST_COMPOR',None)
 
-    if COMMAND !='CALC_EUROPLEXUS':
+    if COMMAND =='CALC_EUROPLEXUS':
+        mcfact = FACT(statut='o',min=1,max='**',  #COMMUN#
+
+           RELATION  = SIMP( statut='o',typ='TXM',defaut="ELAS",into=('ELAS','GLRC_DAMAGE','VMIS_ISOT_TRAC')),
+           GROUP_MA  = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+        )
+    elif COMMAND == 'CREA_RESU' or COMMAND == 'LIRE_RESU' or COMMAND == 'CALC_FORC_NONL':
         mcfact = FACT(statut='f',min=1,max='**',
 
+           regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+
            RELATION  =SIMP( statut='o',typ='TXM',defaut="ELAS",into=C_RELATION(COMMAND)),
            b_monox     = BLOC(condition = "RELATION == 'MONOCRISTAL' ",
-                                 fr="SD issue de DEFI_COMPOR",
+                                 fr=tr("SD issue de DEFI_COMPOR"),
                    COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
            b_polyx     = BLOC(condition = "RELATION == 'POLYCRISTAL' ",
-                                 fr="SD issue de DEFI_COMPOR",
+                                 fr=tr("SD issue de DEFI_COMPOR"),
                    COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
            b_zmat      = BLOC(condition = "RELATION == 'ZMAT' ",
-                                 fr="Comportement de la bibliotheque Zmat",
+                                 fr=tr("Comportement de la bibliotheque Zmat"),
                    NB_VARI =SIMP(statut='o',typ='I',max=1),
                    UNITE =SIMP(statut='o',typ='I',max=1),),
            b_umat      = BLOC(condition = "RELATION == 'UMAT' ",
-                                 fr="Comportement utilisateur de type UMAT",
-                   NB_VARI =SIMP(statut='o',typ='I',max=1,fr="Nombre de variables internes"),
+                                 fr=tr("Comportement utilisateur de type UMAT"),
+                   NB_VARI =SIMP(statut='o',typ='I',max=1,fr=tr("Nombre de variables internes")),
                    LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128),
-                        fr="Chemin vers la bibliothèque dynamique définissant le comportement UMAT"),
+                        fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement UMAT")),
                    NOM_ROUTINE = SIMP(statut='o', typ='TXM',
-                        fr="Nom de la routine UMAT dans la bibliothèque"),),
+                        fr=tr("Nom de la routine UMAT dans la bibliothèque")),),
            b_mfront      = BLOC(condition = "RELATION == 'MFRONT' ",
-                                 fr="Comportement utilisateur de type MFRONT",
-                   NB_VARI =SIMP(statut='o',typ='I',max=1,fr="Nombre de variables internes"),
+                                 fr=tr("Comportement utilisateur de type MFRONT"),
                    LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128),
-                        fr="Chemin vers la bibliothèque dynamique définissant le comportement MFRONT"),
+                        fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement MFRONT")),
                    NOM_ROUTINE = SIMP(statut='o', typ='TXM',
-                        fr="Nom de la routine MFRONT dans la bibliothèque"),),
+                        fr=tr("Nom de la routine MFRONT dans la bibliothèque")),),
 
 # KITs
            b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ",
-                            fr="relations de couplage fluage-plasticite",
+                            fr=tr("relations de couplage fluage-plasticite"),
                RELATION_KIT    =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(),
                                  into=(
                                        "VMIS_CINE_LINE",
@@ -2495,11 +3544,13 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
                                        "ROUSS_PR",
                                        "BETON_DOUBLE_DP",
                                        "ENDO_ISOT_BETON",
-                                       "MAZARS"
+                                       "MAZARS",
+                                       "ENDO_PORO_BETON",
+                                       "FLUA_PORO_BETON"
                                        ),),
                    ),
            b_kit_cg= BLOC(condition = "RELATION == 'KIT_CG' ",
-                            fr="relations pour elements cables gaines",
+                            fr=tr("relations pour elements cables gaines"),
                RELATION_KIT    =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(),
                                  into=(
                                        "CABLE_GAINE_FROT",
@@ -2514,13 +3565,14 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
 
            b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_H','KIT_HM','KIT_THHM', \
                                                       'KIT_THH','KIT_THM','KIT_THV']",
-                            fr="lois de comportements thermo-hydro-mecaniques",
+                            fr=tr("lois de comportements thermo-hydro-mecaniques"),
                RELATION_KIT    =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(),
                                  into=(
 # MECA
                                        "ELAS",
                                        "CJS",
                                        "HUJEUX",
+                                       "MOHR_COULOMB",
                                        "CAM_CLAY",
                                        "BARCELONE",
                                        "LAIGLE",
@@ -2536,6 +3588,8 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
                                        "JOINT_BANDIS",
                                        "CZM_LIN_REG",
                                        "CZM_EXP_REG",
+                                       "MFRONT",                                       
+
 # THMC
                                        "GAZ",
                                        "LIQU_SATU",
@@ -2549,15 +3603,24 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
                                        "HYDR_UTIL",
                                        "HYDR_VGM",
                                        "HYDR_VGC",
-                                       "HYDR",
                                        "HYDR_ENDO",
                                        ),),
+
+ # mfront pour la loi meca de THM                                     
+           b_mfront_thm = BLOC(condition = "'MFRONT' in RELATION_KIT",fr=tr("Comportement utilisateur meca THM de type MFRONT"),
+                                          LIBRAIRIE = SIMP(statut='o', typ='TXM',
+                                                           fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement MFRONT")),
+                                          NOM_ROUTINE = SIMP(statut='o', typ='TXM',
+                                                           fr=tr("Nom de la routine MFRONT dans la bibliothèque")),
+                                      ),
+
                                        ),
+                
            b_kit_meta = BLOC(condition = "RELATION in ('META_LEMA_ANI','META_P_CL_PT_RE','META_P_CL_PT','META_P_CL_RE','META_P_CL',\
-       'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\
+           'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\
            'META_V_CL_PT_RE','META_V_CL_PT','META_V_CL_RE','META_V_CL','META_V_IL_PT_RE','META_V_IL_PT','META_V_IL_RE','META_V_IL',\
            'META_V_INL_PT_RE','META_V_INL_PT','META_V_INL_RE','META_V_INL')",
-                            fr="nombre de phases metallurgiques",
+                            fr=tr("nombre de phases metallurgiques"),
                RELATION_KIT    =SIMP(statut='o',typ='TXM',max=1,validators=NoRepeat(),
                                  into=("ACIER","ZIRC"),),
                                  ),
@@ -2565,80 +3628,224 @@ def C_COMPORTEMENT(COMMAND=None) :  #COMMUN#
            DEFORMATION       =SIMP(statut='f',typ='TXM',defaut="PETIT",
                                    into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),
 
+
+
            # gestion des contraintes planes par la méthode itérative
+            RESI_CPLAN_MAXI    =SIMP(statut='f',typ='R',
+                                  fr=tr("Critère d'arret absolu pour assurer la condition de contraintes planes")),
 
-              RESI_CPLAN_MAXI    =SIMP(statut='f',typ='R',
-                                      fr="Critère d'arret absolu pour assurer la condition de contraintes planes"),
+            b_resi_cplan  =BLOC(condition = " RESI_CPLAN_MAXI == None ",
+                                RESI_CPLAN_RELA   =SIMP(statut='f',typ='R',defaut= 1.0E-6,
+                                fr=tr("Critère d'arret relatif pour assurer la condition de contraintes planes")),
+                                ),
 
-                   b_resi_cplan  =BLOC(condition = " RESI_CPLAN_MAXI == None ",
+            ITER_CPLAN_MAXI =SIMP(statut='f',typ='I',defaut= 1,
+                                fr=tr("Nombre d'itérations maxi pour assurer la condition de contraintes planes")),
+        )
+    else:
+        mcfact = FACT(statut='f',min=1,max='**',
 
-              RESI_CPLAN_RELA   =SIMP(statut='f',typ='R',defaut= 1.0E-6,
-                                      fr="Critère d'arret relatif pour assurer la condition de contraintes planes"),
-                                  ),
+           regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
 
-              ITER_CPLAN_MAXI =SIMP(statut='f',typ='I',defaut= 1,
-                                      fr="Nombre d'itérations maxi pour assurer la condition de contraintes planes"),
-           #
-           RESI_INTE_RELA    =SIMP(statut='f',typ='R',defaut= 1.0E-6),
-           ITER_INTE_MAXI    =SIMP(statut='f',typ='I',defaut= 20 ),
+           RELATION  =SIMP( statut='o',typ='TXM',defaut="ELAS",into=C_RELATION(COMMAND)),
+           b_monox     = BLOC(condition = "RELATION == 'MONOCRISTAL' ",
+                                 fr=tr("SD issue de DEFI_COMPOR"),
+                   COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
+           b_polyx     = BLOC(condition = "RELATION == 'POLYCRISTAL' ",
+                                 fr=tr("SD issue de DEFI_COMPOR"),
+                   COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
+           b_zmat      = BLOC(condition = "RELATION == 'ZMAT' ",
+                                 fr=tr("Comportement de la bibliotheque Zmat"),
+                   NB_VARI =SIMP(statut='o',typ='I',max=1),
+                   UNITE =SIMP(statut='o',typ='I',max=1),),
+           b_umat      = BLOC(condition = "RELATION == 'UMAT' ",
+                                 fr=tr("Comportement utilisateur de type UMAT"),
+                   NB_VARI =SIMP(statut='o',typ='I',max=1,fr=tr("Nombre de variables internes")),
+                   LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128),
+                        fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement UMAT")),
+                   NOM_ROUTINE = SIMP(statut='o', typ='TXM',
+                        fr=tr("Nom de la routine UMAT dans la bibliothèque")),),
+           b_mfront      = BLOC(condition = "RELATION == 'MFRONT' ",
+                                 fr=tr("Comportement utilisateur de type MFRONT"),
+                   LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128),
+                        fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement MFRONT")),
+                   NOM_ROUTINE = SIMP(statut='o', typ='TXM',
+                        fr=tr("Nom de la routine MFRONT dans la bibliothèque")),),
 
-           b_redec_local      = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",
-                                     fr="Nombre de redécoupages internes du pas de temps",
-               ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
-                                     ),
+# KITs
+           b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ",
+                            fr=tr("relations de couplage fluage-plasticite"),
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(),
+                                 into=(
+                                       "VMIS_CINE_LINE",
+                                       "VMIS_ISOT_TRAC",
+                                       "VMIS_ISOT_LINE",
+                                       "VMIS_ISOT_PUIS",
+                                       "GLRC_DM",
+                                       "GRANGER_FP",
+                                       "GRANGER_FP_INDT",
+                                       "GRANGER_FP_V",
+                                       "BETON_UMLV_FP",
+                                       "ROUSS_PR",
+                                       "BETON_DOUBLE_DP",
+                                       "ENDO_ISOT_BETON",
+                                       "MAZARS",
+                                       "ENDO_PORO_BETON",
+                                       "FLUA_PORO_BETON"
+                                       ),),
+                   ),
+           b_kit_cg= BLOC(condition = "RELATION == 'KIT_CG' ",
+                            fr=tr("relations pour elements cables gaines"),
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(),
+                                 into=(
+                                       "CABLE_GAINE_FROT",
+                                       "VMIS_ISOT_LINE",
+                                       "VMIS_ISOT_TRAC",
+                                       "VMIS_CINE_LINE",
+                                       "PINTO_MENEGOTTO",
+                                       "ELAS",
+                                       "SANS"
+                                       ),),
+                   ),
 
-           ALGO_INTE         =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",
-                                                              "NEWTON", "NEWTON_RELI", "NEWTON_PERT", "RUNGE_KUTTA",
-                                                              "SPECIFIQUE", "SANS_OBJET")),
+           b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_H','KIT_HM','KIT_THHM', \
+                                                      'KIT_THH','KIT_THM','KIT_THV']",
+                            fr=tr("lois de comportements thermo-hydro-mecaniques"),
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(),
+                                 into=(
+# MECA
+                                       "ELAS",
+                                       "CJS",
+                                       "HUJEUX",
+                                       "MOHR_COULOMB",
+                                       "CAM_CLAY",
+                                       "BARCELONE",
+                                       "LAIGLE",
+                                       "LETK",
+                                       "DRUCK_PRAGER",
+                                       "DRUCK_PRAG_N_A",
+                                       "VISC_DRUC_PRAG",
+                                       "ELAS_GONF",
+                                       "HOEK_BROWN_EFF",
+                                       "HOEK_BROWN_TOT",
+                                       "MAZARS",
+                                       "ENDO_ISOT_BETON",
+                                       "JOINT_BANDIS",
+                                       "CZM_LIN_REG",
+                                       "CZM_EXP_REG",
+                                       "MFRONT",                                       
 
-           TYPE_MATR_TANG    =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")),
+# THMC
+                                       "GAZ",
+                                       "LIQU_SATU",
+                                       "LIQU_GAZ_ATM",
+                                       "LIQU_VAPE_GAZ",
+                                       "LIQU_AD_GAZ_VAPE",
+                                       "LIQU_AD_GAZ",
+                                       "LIQU_VAPE",
+                                       "LIQU_GAZ",
+# HYDR
+                                       "HYDR_UTIL",
+                                       "HYDR_VGM",
+                                       "HYDR_VGC",
+                                       "HYDR_ENDO",
+                                       ),),
 
-           b_perturb         =BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ",
-                                   fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation",
-                VALE_PERT_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-5),
-                                  ),
+ # mfront pour la loi meca de THM                                     
+           b_mfront_thm = BLOC(condition = "'MFRONT' in RELATION_KIT",fr=tr("Comportement utilisateur meca THM de type MFRONT"),
+                                          LIBRAIRIE = SIMP(statut='o', typ='TXM',
+                                                           fr=tr("Chemin vers la bibliothèque dynamique définissant le comportement MFRONT")),
+                                          NOM_ROUTINE = SIMP(statut='o', typ='TXM',
+                                                           fr=tr("Nom de la routine MFRONT dans la bibliothèque")),
+                                      ),
 
-           b_tangsec        = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ",
-                                   fr="Modification evolutive de la matrice tangente/secante",
-                 SEUIL        =SIMP(statut='f',typ='R',defaut= 3. ),
-                 AMPLITUDE    =SIMP(statut='f',typ='R',defaut= 1.5 ),
-                 TAUX_RETOUR  =SIMP(statut='f',typ='R',defaut= 0.05 ),
-                                  ),
+                                       ),
+                
+           b_kit_meta = BLOC(condition = "RELATION in ('META_LEMA_ANI','META_P_CL_PT_RE','META_P_CL_PT','META_P_CL_RE','META_P_CL',\
+           'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\
+           'META_V_CL_PT_RE','META_V_CL_PT','META_V_CL_RE','META_V_CL','META_V_IL_PT_RE','META_V_IL_PT','META_V_IL_RE','META_V_IL',\
+           'META_V_INL_PT_RE','META_V_INL_PT','META_V_INL_RE','META_V_INL')",
+                            fr=tr("nombre de phases metallurgiques"),
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',max=1,validators=NoRepeat(),
+                                 into=("ACIER","ZIRC"),),
+                                 ),
 
-           b_crirupt        = BLOC(condition =
-           " RELATION in ('VMIS_ISOT_LINE','VMIS_ISOT_TRAC','VISCOCHAB','VISC_ISOT_LINE','VISC_ISOT_TRAC',)",
-                                   fr="Critere de rupture selon une contrainte critique",
-                 POST_ITER    =SIMP(statut='f',typ='TXM',into=("CRIT_RUPT",), ),
-                                  ),
+           DEFORMATION       =SIMP(statut='f',typ='TXM',defaut="PETIT",
+                                   into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),
 
-           PARM_THETA      =SIMP(statut='f',typ='R',val_min=0.,val_max=1., defaut= 1.),
-           PARM_ALPHA      =SIMP(statut='f',typ='R',defaut= 1. ),
 
-           b_radi          =BLOC(condition = "TYPE_MATR_TANG == None",
-              RESI_RADI_RELA  =SIMP(statut='f',typ='R', ),
-                               ),
 
-           regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
-           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+           # gestion des contraintes planes par la méthode itérative
+            RESI_CPLAN_MAXI    =SIMP(statut='f',typ='R',
+                                  fr=tr("Critère d'arret absolu pour assurer la condition de contraintes planes")),
 
-         )
+            b_resi_cplan  =BLOC(condition = " RESI_CPLAN_MAXI == None ",
+                                RESI_CPLAN_RELA   =SIMP(statut='f',typ='R',defaut= 1.0E-6,
+                                fr=tr("Critère d'arret relatif pour assurer la condition de contraintes planes")),
+                                ),
 
-    else:
-        mcfact = FACT(statut='o',min=1,max='**',  #COMMUN#
+            ITER_CPLAN_MAXI =SIMP(statut='f',typ='I',defaut= 1,
+                                fr=tr("Nombre d'itérations maxi pour assurer la condition de contraintes planes")),
 
-           RELATION  = SIMP( statut='o',typ='TXM',defaut="ELAS",into=('ELAS','GLRC_DAMAGE')),
-           GROUP_MA  = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
-        )
 
 
-    return mcfact
+            # Parametres d'integration
 
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+                b_mfront_resi      = BLOC(condition = "RELATION =='MFRONT'",
+                    RESI_INTE_MAXI    =SIMP(statut='f',typ='R',defaut= 1.0E-8),
+                    ITER_INTE_MAXI    =SIMP(statut='f',typ='I',defaut= 100 ),
+                ),
+               
+                b_no_mfront      = BLOC(condition = "RELATION !='MFRONT'",
+                    RESI_INTE_RELA    =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+                    ITER_INTE_MAXI    =SIMP(statut='f',typ='I',defaut= 20 ),
+                ),
+
+                b_redec_local      = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",
+                                     fr=tr("Nombre de redécoupages internes du pas de temps"),
+                                    ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
+                                     ),
+
+                ALGO_INTE         =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",
+                                                              "NEWTON", "NEWTON_RELI", "NEWTON_PERT", "RUNGE_KUTTA",
+                                                              "SPECIFIQUE", "SANS_OBJET")),
+
+                TYPE_MATR_TANG    =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")),
+
+                b_perturb         =BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ",
+                                   fr=tr("Calcul de la matrice tangente par perturbation, valeur de la perturbation"),
+                    VALE_PERT_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-5),
+                                  ),
+
+                b_tangsec        = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ",
+                                   fr=tr("Modification evolutive de la matrice tangente/secante"),
+                    SEUIL        =SIMP(statut='f',typ='R',defaut= 3. ),
+                    AMPLITUDE    =SIMP(statut='f',typ='R',defaut= 1.5 ),
+                    TAUX_RETOUR  =SIMP(statut='f',typ='R',defaut= 0.05 ),
+                                  ),
+
+                b_crirupt        = BLOC(condition =
+                    " RELATION in ('VMIS_ISOT_LINE','VMIS_ISOT_TRAC','VISCOCHAB','VISC_ISOT_LINE','VISC_ISOT_TRAC',)",
+                                   fr=tr("Critere de rupture selon une contrainte critique"),
+                    POST_ITER    =SIMP(statut='f',typ='TXM',into=("CRIT_RUPT",), ),
+                                  ),
+
+                PARM_THETA      =SIMP(statut='f',typ='R',val_min=0.,val_max=1., defaut= 1.),
+                PARM_ALPHA      =SIMP(statut='f',typ='R',defaut= 1. ),
+
+                b_radi          =BLOC(condition = "TYPE_MATR_TANG == None", RESI_RADI_RELA  =SIMP(statut='f',typ='R', ),),
+            )
+
+
+    return mcfact
+
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
 # (AT YOUR OPTION) ANY LATER VERSION.                                                  
 #                                                                       
@@ -2656,9 +3863,9 @@ def C_CONVERGENCE() : return FACT(statut='d',
            regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA','RESI_COMP_RELA'),),
            b_refe_rela    =BLOC(condition = "RESI_REFE_RELA != None",
              regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE','FORC_REFE',
-                                  'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE','DEPL_REFE','LAGR_REFE'),),
+                                  'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE','DEPL_REFE','LAGR_REFE','PI_REFE'),),
              FORC_REFE       =SIMP(statut='f',typ='R',min=2,max=2,
-                fr="Force et Moment de référence pour les éléments de structure."),
+                fr=tr("Force et Moment de référence pour les éléments de structure.")),
              SIGM_REFE       =SIMP(statut='f',typ='R'),
              DEPL_REFE       =SIMP(statut='f',typ='R'),
              EPSI_REFE       =SIMP(statut='f',typ='R'),
@@ -2667,6 +3874,7 @@ def C_CONVERGENCE() : return FACT(statut='d',
              FLUX_HYD2_REFE  =SIMP(statut='f',typ='R'),
              VARI_REFE       =SIMP(statut='f',typ='R'),
              LAGR_REFE       =SIMP(statut='f',typ='R'),
+             PI_REFE         =SIMP(statut='f',typ='R'),
            ),
            RESI_REFE_RELA  =SIMP(statut='f',typ='R'),
            RESI_GLOB_MAXI  =SIMP(statut='f',typ='R'),
@@ -2677,6 +3885,70 @@ def C_CONVERGENCE() : return FACT(statut='d',
            ARRET           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
          );
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# person_in_charge: mickael.abbas at edf.fr
+
+def C_ETAT_INIT( COMMAND, statut ) :  #COMMUN#
+
+    kwargs = {}
+
+    kwargs['DEPL']           = SIMP(statut='f',typ=cham_no_sdaster)
+    kwargs['SIGM']           = SIMP(statut='f',typ=(cham_elem,carte_sdaster))
+    kwargs['VARI']           = SIMP(statut='f',typ=cham_elem)
+    kwargs['STRX']           = SIMP(statut='f',typ=cham_elem)
+
+    if COMMAND == 'STAT_NON_LINE':
+        kwargs['COHE']      = SIMP(statut='f',typ=cham_elem)
+
+    if COMMAND == 'DYNA_NON_LINE':
+        kwargs['VITE']       = SIMP(statut='f',typ=cham_no_sdaster)
+        kwargs['ACCE']       = SIMP(statut='f',typ=cham_no_sdaster)
+
+    kwargs['EVOL_NOLI']      = SIMP(statut='f',typ=evol_noli)
+    kwargs['NUME_ORDRE']     = SIMP(statut='f',typ='I')
+    kwargs['INST']           = SIMP(statut='f',typ='R')
+    kwargs['NUME_DIDI']      = SIMP(statut='f',typ='I')
+    kwargs['INST_ETAT_INIT'] = SIMP(statut='f',typ='R')
+    kwargs['CRITERE']        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"))
+
+    if COMMAND == 'DYNA_NON_LINE':
+        mcfact = FACT(statut=statut,max='**',            
+                  regles=(AU_MOINS_UN('EVOL_NOLI','ACCE','VITE','DEPL','SIGM','VARI','COHE',),
+                          EXCLUS('NUME_ORDRE','INST'), ),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                                   PRECISION       =SIMP(statut='o',typ='R',),),
+                    **kwargs
+                 )
+    else:
+        mcfact = FACT(statut=statut,max='**',            
+                  regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','COHE',),
+                          EXCLUS('NUME_ORDRE','INST'), ),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                                   PRECISION       =SIMP(statut='o',typ='R',),),
+                    **kwargs
+                 )
+
+    return mcfact
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
@@ -3048,6 +4320,8 @@ class NOM_CHAM_INTO:  #COMMUN#
                                  _(u"Vitesse absolue aux noeuds"), ),
         }
         d['AUTRES'] = {
+            "COHE_ELEM":        ( ("nonlin",),
+                                 _(u"Variables internes cohésives XFEM"), ),
             "COMPORTEMENT":     ( (),
                                  _(u"Carte de comportement mécanique"), ),
             "COMPORTHER":       ( (),
@@ -3386,68 +4660,88 @@ def C_NOM_GRANDEUR() : return  ( #COMMUN#
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 
-def C_OBSERVATION() : return FACT(statut='f',max=99,
-           TITRE           =SIMP(statut='f',typ='TXM',max=1),
-           NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+def C_OBSERVATION(PHYSIQUE) : 
+
+        assert PHYSIQUE in ('MECANIQUE','THERMIQUE')
+        _meca = False
+        _ther = False
+        _meca = PHYSIQUE == 'MECANIQUE'
+        _ther = PHYSIQUE == 'THERMIQUE'
+
+# Select nodal fields
+        _BlocNode  = {}
+        _BlocNode['TOUT']       = SIMP(statut='d',typ='TXM',into=("OUI",) )
+        _BlocNode['NOEUD']      = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**')
+        _BlocNode['GROUP_NO']   = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**')
+        _BlocNode['MAILLE']     = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**')
+        _BlocNode['GROUP_MA']   = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**')
+
+# Select element fields
+        _BlocElem = {}
+        _BlocElem['TOUT']       = SIMP(statut='d',typ='TXM',into=("OUI",) )
+        _BlocElem['MAILLE']     = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**')
+        _BlocElem['GROUP_MA']   = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**')
+        _BlocElem['EVAL_ELGA']  = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',into=("MIN","MAX","VALE",),)
+
+# All keywords
+        _Keywords={}
+        _Keywords['TITRE']          = SIMP(statut='f',typ='TXM',max=1)
+        _Keywords['OBSE_ETAT_INIT'] = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut='OUI' )
+        _Keywords['EVAL_CHAM']      = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
+                                                into=("MIN","MAX","MOY","MAXI_ABS","MINI_ABS","VALE",),)
+        _Keywords['NOM_CMP']        = SIMP(statut='o',typ='TXM',max=20)
+        _Keywords['EVAL_CMP']       = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
+                                                 into=("VALE","FORMULE",),)
+        _Keywords['INST']           = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' )
+        _Keywords['LIST_INST']      = SIMP(statut='f',typ=listr8_sdaster)
+        _Keywords['PAS_OBSE']       = SIMP(statut='f',typ='I')
+        _Keywords['CRITERE']        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") )
+        if _meca :
+            _Keywords['NOM_CHAM'] = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
                                    into=("VALE_CONT","FORC_NODA",
-                                         "DEPL","VITE","ACCE","TEMP",
-                                         "SIEF_ELGA","VARI_ELGA",
-                                         "DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)),
-
-           EVAL_CHAM       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
-                                   into=("MIN","MAX","MOY","MAXI_ABS","MINI_ABS","VALE",),),
-
-           NOM_CMP         =SIMP(statut='o',typ='TXM',max=20),
-           EVAL_CMP        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
-                                   into=("VALE","FORMULE",),),
-
-           b_formule       =BLOC(condition="(EVAL_CMP=='FORMULE')",
-                                   FORMULE = SIMP(statut='o',typ=formule,max=1),
-                                ),
-
-           b_cham_no       =BLOC(condition="(NOM_CHAM=='DEPL') or \
-                                            (NOM_CHAM=='VITE') or \
-                                            (NOM_CHAM=='ACCE') or \
-                                            (NOM_CHAM=='TEMP') or \
-                                            (NOM_CHAM=='FORC_NODA') or \
-                                            (NOM_CHAM=='VALE_CONT') or \
-                                            (NOM_CHAM=='DEPL_ABSOLU') or \
-                                            (NOM_CHAM=='VITE_ABSOLU') or \
-                                            (NOM_CHAM=='ACCE_ABSOLU')",
-                                 regles   =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')),
-                                 TOUT            =SIMP(statut='d',typ='TXM',into=("OUI",) ),
-                                 NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                                 GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                                 MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-                                 GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-                                ),
-
+                                         "DEPL","VITE","ACCE",
+                                         "SIEF_ELGA","VARI_ELGA","EPSI_ELGA",
+                                         "DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",))
+        if _ther :
+            _Keywords['NOM_CHAM'] = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+                                   into=("TEMP",))
+
+        mcfact = FACT(statut='f', max=99,
+
+            b_formule       =BLOC(condition="(EVAL_CMP=='FORMULE')",
+                                   FORMULE = SIMP(statut='o',typ=formule,max=1),),
+
+            b_cham_no       =BLOC(condition="(NOM_CHAM=='DEPL') or \
+                                        (NOM_CHAM=='VITE') or \
+                                        (NOM_CHAM=='ACCE') or \
+                                        (NOM_CHAM=='TEMP') or \
+                                        (NOM_CHAM=='FORC_NODA') or \
+                                        (NOM_CHAM=='VALE_CONT') or \
+                                        (NOM_CHAM=='DEPL_ABSOLU') or \
+                                        (NOM_CHAM=='VITE_ABSOLU') or \
+                                        (NOM_CHAM=='ACCE_ABSOLU')",
+                             regles   =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')),
+                             **_BlocNode
+                            ),
 
-           b_cham_elga     =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \
-                                            (NOM_CHAM=='VARI_ELGA')",
-                                 regles          =(UN_PARMI('GROUP_MA','MAILLE','TOUT')),
-                                 TOUT            =SIMP(statut='d',typ='TXM',into=("OUI",) ),
-                                 MAILLE          =SIMP(statut='f',typ=ma   ,validators=NoRepeat(),max='**'),
-                                 GROUP_MA        =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
-                                 EVAL_ELGA       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
-                                                        into=("MIN","MAX","VALE",),),
+            b_cham_elga     =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \
+                                        (NOM_CHAM=='EPSI_ELGA') or \
+                                        (NOM_CHAM=='VARI_ELGA')",
+                             regles          =(UN_PARMI('GROUP_MA','MAILLE','TOUT')), 
                                  b_elga_vale     =BLOC(condition="(EVAL_ELGA=='VALE')",
                                    POINT           =SIMP(statut='o',typ='I'  ,validators=NoRepeat(),max='**'),
                                    SOUS_POINT      =SIMP(statut='f',typ='I'  ,validators=NoRepeat(),max='**'),
                                  ),
+                             **_BlocElem
                                 ),
+            b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+            b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                             PRECISION       =SIMP(statut='o',typ='R',),),
+            **_Keywords
+            )
 
-           INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
-           LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-           PAS_OBSE        =SIMP(statut='f',typ='I'),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-              PRECISION       =SIMP(statut='o',typ='R',),),
-
-
-       );
+        return mcfact
 
 # person_in_charge: mathieu.courtois at edf.fr
 # ======================================================================
@@ -3470,9 +4764,9 @@ def C_OBSERVATION() : return FACT(statut='f',max=99,
 def C_PARA_FONCTION() : return  ( #COMMUN#
                    "DX","DY","DZ","DRX","DRY","DRZ","TEMP","TSEC",
                    "INST","X","Y","Z","EPSI","META","FREQ","PULS","DSP",
-                   "AMOR","ABSC","ABSC_CURV","SIGM","HYDR","SECH","PORO","SAT",
+                   "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
                    "PGAZ","PCAP","PLIQ","PVAP","PAD","VITE","ENDO",
-                   "NORM","EPAIS","NEUT1","NEUT2",)
+                   "NORM","EPAIS","NEUT1","NEUT2","XF","YF","ZF")
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -3574,15 +4868,16 @@ def C_RELATION( COMMAND ):
                                         #"VMIS_ISOT_PUIS",
                                      )
     elif COMMAND in ('MACR_ASCOUF_CALC','MACR_ASPIC_CALC',):
-                   return (             "ELAS",           
+                   return (             "ELAS",
                                         "ELAS_VMIS_TRAC",
-                                        "VMIS_ISOT_TRAC",
                                      )
     elif COMMAND =='DEFI_COMPOR' :
                    return (             "ELAS",  #uniquement ce qui a du sens (cf doc) et qui fait l'objet d'un test
                                         "BETON_UMLV_FP",
                                         "BETON_DOUBLE_DP",
                                         "CORR_ACIER",
+                                        "ENDO_PORO_BETON",
+                                        "FLUA_PORO_BETON",
                                         "GRANGER_FP",
                                         "GRANGER_FP_V",
                                         "GRANGER_FP_INDT",
@@ -3595,8 +4890,9 @@ def C_RELATION( COMMAND ):
                                         "VMIS_ISOT_TRAC",
                                         "VMIS_ISOT_PUIS",
                                      )
-    else :
-                   return (             "ELAS",            
+    else:
+        native = [
+                                        "ELAS",
                                         "ELAS_VMIS_LINE",
                                         "ELAS_VMIS_TRAC",
                                         "ELAS_VMIS_PUIS",
@@ -3617,6 +4913,7 @@ def C_RELATION( COMMAND ):
                                         "CORR_ACIER",
                                         "CZM_EXP",
                                         "CZM_EXP_REG",
+                                        "CZM_EXP_MIX",
                                         "CZM_FAT_MIX",
                                         "CZM_LIN_REG",
                                         "CZM_OUV_MIX",
@@ -3634,6 +4931,7 @@ def C_RELATION( COMMAND ):
                                         "DRUCK_PRAG_N_A",
                                         "ELAS_GONF",
                                         "ELAS_HYPER",
+                                        "ENDO_PORO_BETON",
                                         "ENDO_CARRE",
                                         "ENDO_FISS_EXP",
                                         "ENDO_FRAGILE",
@@ -3641,6 +4939,7 @@ def C_RELATION( COMMAND ):
                                         "ENDO_ISOT_BETON",
                                         "ENDO_ORTH_BETON",
                                         "ENDO_SCALAIRE",
+                                        "FLUA_PORO_BETON",
                                         "GATT_MONERIE",
                                         "GLRC_DAMAGE",
                                         "GLRC_DM",
@@ -3712,6 +5011,7 @@ def C_RELATION( COMMAND ):
                                         "NORTON_HOFF",
                                         "PINTO_MENEGOTTO",
                                         "POLYCRISTAL",
+                                        "RGI_BETON",
                                         "ROUSSELIER",
                                         "ROUSS_PR",
                                         "ROUSS_VISC",
@@ -3747,7 +5047,10 @@ def C_RELATION( COMMAND ):
                                         "ZMAT",
                                         "UMAT",
                                         "MFRONT",
-                                     )
+        ]
+        mfront = [ i for i in C_MFRONT_OFFICIAL().keys() \
+                     if not i.endswith('_FO') ]
+        return tuple(native + mfront)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -3940,6 +5243,7 @@ def C_SOLVEUR( COMMAND, BASE=None ) :  #COMMUN#
    _BlocXX_SP={}
    _BlocPE_ML={}
    _BlocPE_BOOMER={}
+   _BlocPE_GAMG={}
    _BlocXX_Autres={}
 
 # ----------------------------------------------------------------------------------------------------------------------------------
@@ -4007,6 +5311,7 @@ def C_SOLVEUR( COMMAND, BASE=None ) :  #COMMUN#
       _BlocPE['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="NON" , into=("OUI", "NON"), )
       _BlocMF['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="NON" , into=("OUI", "NON"), )
       _BlocLD['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="NON" , into=("OUI", "NON"), )
+      _BlocGC['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="NON" , into=("OUI", "NON"), )
       _BlocMU['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="LAGR2" , into=("OUI", "NON", "LAGR2"), )
    else :
       _BlocMU['ELIM_LAGR'     ] = SIMP(statut='f', typ='TXM', defaut="LAGR2" , into=("NON", "LAGR2"), )
@@ -4082,7 +5387,7 @@ def C_SOLVEUR( COMMAND, BASE=None ) :  #COMMUN#
 
    _BlocGC['PRE_COND'] = SIMP(statut='f', typ='TXM', defaut="LDLT_INC", into=("LDLT_INC", "LDLT_SP", ), )
    _BlocPE['PRE_COND'] = SIMP(statut='f', typ='TXM', defaut="LDLT_SP" ,
-                              into=("LDLT_INC", "LDLT_SP", "JACOBI", "SOR", "ML", "BOOMER", "SANS", ), )
+                              into=("LDLT_INC", "LDLT_SP", "JACOBI", "SOR", "ML", "BOOMER", "GAMG", "SANS", ), )
 
 # ----------------------------------------------------------------------------------------------------------------------------------
 
@@ -4129,6 +5434,9 @@ def C_SOLVEUR( COMMAND, BASE=None ) :  #COMMUN#
 # ----------------------------------------------------------------------------------------------------------------------------------
 
    _BlocPE_BOOMER['RENUM'] = SIMP(statut='f', typ='TXM', defaut="SANS", into=("SANS",), )
+# ----------------------------------------------------------------------------------------------------------------------------------
+
+   _BlocPE_GAMG['RENUM'] = SIMP(statut='f', typ='TXM', defaut="SANS", into=("SANS",), )
 
 # ----------------------------------------------------------------------------------------------------------------------------------
 
@@ -4143,47 +5451,51 @@ def C_SOLVEUR( COMMAND, BASE=None ) :  #COMMUN#
 
    mcfact = FACT(statut='d',
                  b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ",
-                                     fr="Paramètres de la méthode multi frontale",
+                                     fr=tr("Paramètres de la méthode multi frontale"),
                                      **_BlocMF
                                      ),
                  b_ldlt       = BLOC(condition = "METHODE == 'LDLT' ",
-                                     fr="Paramètres de la méthode LDLT",
+                                     fr=tr("Paramètres de la méthode LDLT"),
                                      **_BlocLD
                                      ),
                  b_mumps      = BLOC(condition = "METHODE == 'MUMPS' ",
-                                     fr="Paramètres de la méthode MUMPS",
+                                     fr=tr("Paramètres de la méthode MUMPS"),
                                      **_BlocMU
                                      ),
                  b_gcpc       = BLOC(condition = "METHODE == 'GCPC' ",
-                                      fr="Paramètres de la méthode du gradient conjugué",
+                                      fr=tr("Paramètres de la méthode du gradient conjugué"),
                                      b_ldltinc    = BLOC(condition = "PRE_COND == 'LDLT_INC' ",
-                                                         fr="Paramètres de la factorisation incomplète",
+                                                         fr=tr("Paramètres de la factorisation incomplète"),
                                                          **_BlocGC_INC
                                                          ),
                                      b_simple     = BLOC(condition = "PRE_COND == 'LDLT_SP' ",
-                                                         fr="Paramètres de la factorisation simple précision",
+                                                         fr=tr("Paramètres de la factorisation simple précision"),
                                                          **_BlocXX_SP
                                                          ),
                                      **_BlocGC
                                      ),
                  b_petsc      = BLOC(condition = "METHODE == 'PETSC' ",
-                                     fr="Paramètres de la méthode PETSC",
+                                     fr=tr("Paramètres de la méthode PETSC"),
                                      b_ldltinc    = BLOC(condition = "PRE_COND == 'LDLT_INC' ",
-                                                         fr="Paramètres de la factorisation incomplète",
+                                                         fr=tr("Paramètres de la factorisation incomplète"),
                                                          **_BlocPE_INC
                                                          ),
                                      b_simple     = BLOC(condition = "PRE_COND == 'LDLT_SP' ",
-                                                         fr="Paramètres de la factorisation simple précision",
+                                                         fr=tr("Paramètres de la factorisation simple précision"),
                                                          **_BlocXX_SP
                                                          ),
                                      b_ml         = BLOC(condition = "PRE_COND == 'ML' ",
-                                                         fr="Paramètres du multigrille algébrique ML",
+                                                         fr=tr("Paramètres du multigrille algébrique ML"),
                                                          **_BlocPE_ML
                                                          ),
-                                     b_boomer        = BLOC(condition = "PRE_COND == 'BOOMER' ",
-                                                         fr="Paramètres du multigrille algébrique HYPRE",
+                                     b_boomer      = BLOC(condition = "PRE_COND == 'BOOMER' ",
+                                                         fr=tr("Paramètres du multigrille algébrique HYPRE"),
                                                          **_BlocPE_BOOMER
                                                          ),
+                                     b_gamg        = BLOC(condition = "PRE_COND == 'GAMG' ",
+                                                         fr=tr("Paramètres du multigrille algébrique GAMG"),
+                                                         **_BlocPE_GAMG
+                                                         ),
                                      b_autres     = BLOC(condition = "PRE_COND == 'JACOBI' or \
                                                                       PRE_COND == 'SOR'    or \
                                                                       PRE_COND == 'SANS'",
@@ -4219,7 +5531,7 @@ def C_SUIVI_DDL() : return FACT(statut='f',max=4,
            NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
                                    into=("DEPL","VITE","ACCE",
                                          "FORC_NODA",
-                                         "SIEF_ELGA","VARI_ELGA",)),
+                                         "SIEF_ELGA","VARI_ELGA","EPSI_ELGA",)),
 
            EVAL_CHAM       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE',
                                    into=("MIN","MAX","MOY","MAXI_ABS","MINI_ABS","VALE",),),
@@ -4246,6 +5558,7 @@ def C_SUIVI_DDL() : return FACT(statut='f',max=4,
                                 ),
 
            b_cham_elga     =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \
+                                            (NOM_CHAM=='EPSI_ELGA') or \
                                             (NOM_CHAM=='VARI_ELGA')",
                                  regles          =(UN_PARMI('GROUP_MA','MAILLE','TOUT')),
                                  TOUT            =SIMP(statut='d',typ='TXM',into=("OUI",) ),
@@ -4332,6 +5645,10 @@ def C_TEST_REFERENCE(keyword, max=1):       #COMMUN#
     kwargs = {
         'b_values' : BLOC(condition = "True",
             VALE_CALC    = SIMP(statut='f',typ='R',max=max),
+            # tricky because VALE_CALC may be a tuple or a scalar
+            b_ordre_grandeur = BLOC(condition="VALE_CALC is not None and abs(VALE_CALC if type(VALE_CALC) not in (list, tuple) else VALE_CALC[0]) < 1.e-16",
+                ORDRE_GRANDEUR = SIMP(statut='f',typ='R'),
+            ),
             LEGENDE      = SIMP(statut='f',typ='TXM'),
             **opts
         )
@@ -4398,7 +5715,7 @@ def C_TYPE_CHAM_INTO( type_cham=None ) : #COMMUN#
 # ======================================================================
 # person_in_charge: jean-luc.flejou at edf.fr
 AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
-   fr="Affectation de caractéristiques à des éléments de structure",
+   fr=tr("Affectation de caractéristiques à des éléments de structure"),
    reentrant='n',
    UIinfo ={"groupes":("Modélisation",)},
    regles = (AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF',
@@ -4423,13 +5740,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             TABLE_CARA           = SIMP(statut= 'f',typ=table_sdaster),
             NOM_SEC             = SIMP(statut= 'f',typ= 'TXM'),
             CARA                 = SIMP(statut= 'f',typ= 'TXM',validators= NoRepeat(),min= 4 ,max= 15,
-                                       fr= "A,IY,IZ,JX sont des paramètres obligatoires",
+                                       fr= tr("A,IY,IZ,JX sont des paramètres obligatoires"),
                                        into= ("A","IY","IZ","AY","AZ","EY","EZ","JX","RY","RZ","RT",
                                              "JG","IYR2","IZR2","AI") ),
             VALE                    = SIMP(statut= 'f',typ= 'R',min= 4 ,max= 15), ),
          b_homothetique       = BLOC(condition = "VARI_SECT == 'HOMOTHETIQUE'",
             CARA                 = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 8 ,max= 30,
-                                       fr= "A1,A2,IY1,IY2,IZ1,IZ2,JX1,JX2 sont des paramètres obligatoires",
+                                       fr= tr("A1,A2,IY1,IY2,IZ1,IZ2,JX1,JX2 sont des paramètres obligatoires"),
                                        into= ("A1","IY1","IZ1","AY1","AZ1","EY1","EZ1","JX1","RY1",
                                              "RZ1","RT1","JG1","IYR21","IZR21","AI1",
                                              "A2","IY2","IZ2","AY2","AZ2","EY2","EZ2","JX2","RY2",
@@ -4456,12 +5773,12 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
          VARI_SECT            = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE"),defaut= "CONSTANT"),
          b_constant           = BLOC(condition = "VARI_SECT == 'CONSTANT'",
             CARA                 = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 1 ,max= 2,
-                                       fr= "R est un paramètre obligatoire",
+                                       fr= tr("R est un paramètre obligatoire"),
                                        into= ("R","EP") ),
             VALE                 = SIMP(statut= 'o',typ= 'R',min= 1 ,max= 2), ),
          b_homothetique       = BLOC(condition = "VARI_SECT == 'HOMOTHETIQUE'",
             CARA                 = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 2 ,max= 4,
-                                       fr= "R1, R2 sont des paramètres obligatoires",
+                                       fr= tr("R1, R2 sont des paramètres obligatoires"),
                                        into= ("R1","R2","EP1","EP2") ),
             VALE                 = SIMP(statut= 'o',typ= 'R',min= 2 ,max= 4), ),
          MODI_METRIQUE     = SIMP(statut= 'f',typ= 'TXM',defaut= "NON",into= ("OUI","NON") ),
@@ -4535,14 +5852,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
 
       SYME                 = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),),
       b_SYME_OUI           = BLOC(condition="SYME=='OUI'",
-         fr="SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+         fr=tr("SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds"),
          CARA                 = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None",
             into=("K_T_D_N", "K_T_D_L", "K_TR_D_N", "K_TR_D_L", "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
                   "M_T_D_N", "M_T_D_L", "M_TR_D_N", "M_TR_D_L", "M_T_N", "M_T_L", "M_TR_N", "M_TR_L",
                   "A_T_D_N", "A_T_D_L", "A_TR_D_N", "A_TR_D_L", "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),),
          #  Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE
          b_AK_T_D_N            = BLOC(condition = "((CARA=='K_T_D_N')or(CARA=='A_T_D_N'))",
-            fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 3 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4550,13 +5867,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=3 ,max=3 ),),
          b_AK_T_D_L            = BLOC(condition = "((CARA=='K_T_D_L')or(CARA=='A_T_D_L'))",
-            fr="SEGMENT: 3 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 3 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=3 ,max=3 ),),
          b_AK_TR_D_N           = BLOC(condition = "((CARA=='K_TR_D_N')or(CARA=='A_TR_D_N'))",
-            fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 6 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4564,13 +5881,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=6 ,max=6 ),),
          b_AK_TR_D_L           = BLOC(condition = "((CARA=='K_TR_D_L')or(CARA=='A_TR_D_L'))",
-            fr="SEGMENT: 6 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 6 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=6 ,max=6 ),),
          b_MAK_T_N              = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))",
-            fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 6 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4578,13 +5895,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=6 ,max=6 ),),
          b_MAK_T_L              = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))",
-            fr="SEGMENT: 21 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 21 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=21,max=21),),
          b_MAK_TR_N             = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))",
-            fr="NOEUD: 21 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 21 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4592,14 +5909,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=21,max=21),),
          b_MAK_TR_L             = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))",
-            fr="SEGMENT: 78 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 78 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=78,max=78),),
          #  Affection des caractéristiques de MASSE
          b_M_T_D_N           = BLOC(condition = "(CARA=='M_T_D_N')",
-            fr="NOEUD: 1 valeur de masse",
+            fr=tr("NOEUD: 1 valeur de masse"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4607,7 +5924,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=1 ,max=1 ),),
          b_M_T_D_L           = BLOC(condition = "(CARA=='M_T_D_L')",
-            fr="SEGMENT: 1 valeur de masse",
+            fr=tr("SEGMENT: 1 valeur de masse"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4615,7 +5932,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=1 ,max=1 ),),
          b_M_TR_D_N           = BLOC(condition = "(CARA=='M_TR_D_N')",
-            fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentrement",
+            fr=tr("NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentrement"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4623,7 +5940,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=10,max=10),),
          b_M_TR_D_L           = BLOC(condition = "(CARA=='M_TR_D_L')",
-            fr="SEGMENT: 1 valeur de masse, 3 valeurs du tenseur d'inertie",
+            fr=tr("SEGMENT: 1 valeur de masse, 3 valeurs du tenseur d'inertie"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4637,14 +5954,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
       #        b_MAK_TR_N_NS      'K_TR_N'    'A_TR_N'   'M_TR_N'
       #        b_MAK_TR_L_NS      'K_TR_L'    'A_TR_L'   'M_TR_L'
       b_SYME_NON           = BLOC(condition="SYME=='NON'",
-         fr="NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+         fr=tr("NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds"),
          CARA                 = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None",
             into=("K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
                   "M_T_N", "M_T_L", "M_TR_N", "M_TR_L",
                   "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),),
          #  Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE : NON-SYMETRIQUE
          b_MAK_T_N_NS           = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))",
-            fr="NOEUD: 9 valeurs (matrice pleine par colonne)",
+            fr=tr("NOEUD: 9 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4652,13 +5969,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=9 ,max=9 ),),
          b_MAK_T_L_NS           = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))",
-            fr="SEGMENT: 36 valeurs (matrice pleine par colonne)",
+            fr=tr("SEGMENT: 36 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=36,max=36),),
          b_MAK_TR_N_NS          = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))",
-            fr="NOEUD: 36 valeurs (matrice pleine par colonne)",
+            fr=tr("NOEUD: 36 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4666,7 +5983,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=36,max=36),),
          b_MAK_TR_L_NS          = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))",
-            fr="SEGMENT: 144 valeurs (matrice pleine par colonne)",
+            fr=tr("SEGMENT: 144 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -4679,14 +5996,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
       AMOR_HYST            = SIMP(statut='f',typ='R' ),
       SYME                 = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),),
       b_SYME_OUI           = BLOC(condition="SYME=='OUI'",
-         fr="SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+         fr=tr("SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds"),
          CARA                 = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None",
             into=("K_T_D_N", "K_T_D_L", "K_TR_D_N", "K_TR_D_L", "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
                   "M_T_D_N", "M_T_D_L", "M_TR_D_N", "M_TR_D_L", "M_T_N", "M_T_L", "M_TR_N", "M_TR_L",
                   "A_T_D_N", "A_T_D_L", "A_TR_D_N", "A_TR_D_L", "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),),
          #  Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE
          b_AK_T_D_N            = BLOC(condition = "((CARA=='K_T_D_N')or(CARA=='A_T_D_N'))",
-            fr="NOEUD: 2 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 2 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4694,13 +6011,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=2 ,max=2 ),),
          b_AK_T_D_L            = BLOC(condition = "((CARA=='K_T_D_L')or(CARA=='A_T_D_L'))",
-            fr="SEGMENT: 2 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 2 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=2 ,max=2 ),),
          b_AK_TR_D_N           = BLOC(condition = "((CARA=='K_TR_D_N')or(CARA=='A_TR_D_N'))",
-            fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 3 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4708,13 +6025,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=3 ,max=3 ),),
          b_AK_TR_D_L           = BLOC(condition = "((CARA=='K_TR_D_L')or(CARA=='A_TR_D_L'))",
-            fr="SEGMENT: 3 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 3 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=3 ,max=3 ),),
          b_MAK_T_N              = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))",
-            fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 3 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4722,13 +6039,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=3 ,max=3 ),),
          b_MAK_T_L              = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))",
-            fr="SEGMENT: 10 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 10 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=10,max=10),),
          b_MAK_TR_N             = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))",
-            fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("NOEUD: 6 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
            NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4736,14 +6053,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=6 ,max=6),),
          b_MAK_TR_L             = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))",
-            fr="SEGMENT: 21 valeurs (triangulaire supérieure par colonne)",
+            fr=tr("SEGMENT: 21 valeurs (triangulaire supérieure par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=21,max=21),),
          #  Affection des caractéristiques de MASSE
          b_M_T_D_N            = BLOC(condition = "(CARA=='M_T_D_N')",
-            fr="NOEUD: 1 valeur de masse",
+            fr=tr("NOEUD: 1 valeur de masse"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4751,7 +6068,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=1 ,max=1 ),),
          b_M_T_D_L            = BLOC(condition = "(CARA=='M_T_D_L')",
-            fr="SEGMENT: 1 valeur de masse",
+            fr=tr("SEGMENT: 1 valeur de masse"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4759,7 +6076,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=1 ,max=1 ),),
          b_M_TR_D_N           = BLOC(condition = "(CARA=='M_TR_D_N')",
-            fr="NOEUD: 1 valeur de masse, 1 valeur d'inertie, 2 composantes du vecteur d'excentrement",
+            fr=tr("NOEUD: 1 valeur de masse, 1 valeur d'inertie, 2 composantes du vecteur d'excentrement"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4767,7 +6084,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=4 ,max=4 ),),
          b_M_TR_D_L           = BLOC(condition = "(CARA=='M_TR_D_L')",
-            fr="SEGMENT: 1 valeur de masse, 1 valeur d'inertie",
+            fr=tr("SEGMENT: 1 valeur de masse, 1 valeur d'inertie"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4781,14 +6098,14 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
       #        b_MAK_TR_N_NS      'K_TR_N'    'A_TR_N'   'M_TR_N'
       #        b_MAK_TR_L_NS      'K_TR_L'    'A_TR_L'   'M_TR_L'
       b_SYME_NON           = BLOC(condition="SYME=='NON'",
-         fr="NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+         fr=tr("NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds"),
          CARA                 = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None",
             into=("K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
                   "M_T_N", "M_T_L", "M_TR_N", "M_TR_L",
                   "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),),
          #  Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE : NON-SYMETRIQUE
          b_MAK_T_N_NS           = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))",
-            fr="NOEUD: 4 valeurs (matrice pleine par colonne)",
+            fr=tr("NOEUD: 4 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4796,13 +6113,13 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=4 ,max=4 ),),
          b_MAK_T_L_NS           = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))",
-            fr="SEGMENT: 16 valeurs (matrice pleine par colonne)",
+            fr=tr("SEGMENT: 16 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=16,max=16),),
          b_MAK_TR_N_NS          = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))",
-            fr="NOEUD: 9 valeurs (matrice pleine par colonne)",
+            fr=tr("NOEUD: 9 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
             NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -4810,7 +6127,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             VALE                 = SIMP(statut='o',typ='R',min=9 ,max=9),),
          b_MAK_TR_L_NS          = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))",
-            fr="SEGMENT: 36 valeurs (matrice pleine par colonne)",
+            fr=tr("SEGMENT: 36 valeurs (matrice pleine par colonne)"),
             regles               = (UN_PARMI('MAILLE','GROUP_MA'),),
             MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -4818,18 +6135,35 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
       ),
    ),
 #  ============================================================================
-   ORIENTATION          = FACT(statut='f',max='**',
-      regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),),
-      MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-      GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-      NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-      GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-      CARA                 = SIMP(statut='o',typ='TXM',
-                                 into=("VECT_Y","ANGL_VRIL","VECT_X_Y","ANGL_NAUT","GENE_TUYAU") ),
-      VALE                 = SIMP(statut='o',typ='R',max='**'),
-      PRECISION            = SIMP(statut='f',typ='R',defaut= 1.0E-4 ),
-      CRITERE              = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-   ),
+    ORIENTATION         = FACT(statut='f',max='**',
+        regles               = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),),
+        MAILLE               = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+        GROUP_MA             = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+        NOEUD                = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+        GROUP_NO             = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+        CARA                 = SIMP(statut='o',typ='TXM', into=("VECT_Y","ANGL_VRIL","VECT_X_Y","ANGL_NAUT","GENE_TUYAU"),),
+        b_cara_vect_y   = BLOC(condition = "(CARA=='VECT_Y')", fr=tr("Maille de longueur non nulle."),
+            VALE        = SIMP(statut='o',typ='R',max=3,min=3, fr=tr("Vecteur dont la projection sur le plan normal à l'axe X local donne Y local."),),
+            PRECISION   = SIMP(statut='f',typ='R', fr=tr("valeur en-dessous de laquelle la maille est considérée comme de longueur nulle"),),
+        ),
+        b_cara_angl_vril = BLOC(condition = "(CARA=='ANGL_VRIL')", fr=tr("Maille de longueur non nulle."),
+            VALE        = SIMP(statut='o',typ='R', fr=tr("Angle de rotation du repère autour de l'axe X local."),),
+            PRECISION   = SIMP(statut='f',typ='R', fr=tr("valeur en-dessous de laquelle la maille est considérée comme de longueur nulle")),
+        ),
+        b_cara_vect_x_y = BLOC(condition = "(CARA=='VECT_X_Y')", fr=tr("Noeud ou Maille de longueur nulle."),
+            VALE        = SIMP(statut='o',typ='R',max=6,min=6, fr=tr("Les 2 vecteurs formant les axes X et Y locaux."),),
+            PRECISION   = SIMP(statut='f',typ='R', fr=tr("valeur en-dessous de laquelle la maille est considérée comme de longueur nulle")),
+        ),
+        b_cara_angl_naut = BLOC(condition = "(CARA=='ANGL_NAUT')", fr=tr("Noeud ou Maille de longueur nulle."),
+            VALE        = SIMP(statut='o',typ='R',max=3,min=3, fr=tr("Les 3 angles nautiques alpha, beta, gamma.")),
+            PRECISION   = SIMP(statut='f',typ='R', fr=tr("valeur en-dessous de laquelle la maille est considérée comme de longueur nulle")),
+        ),
+        b_cara_gene_tuyau = BLOC(condition = "(CARA=='GENE_TUYAU')", fr=tr("Tuyau."),
+            VALE        = SIMP(statut='o',typ='R', max=3,min=3, fr=tr("Vecteur donnant la position de la génératrice.")),
+            PRECISION   = SIMP(statut='f',typ='R', defaut= 1.0E-4 ),
+            CRITERE     = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+        ),
+    ),
 
 # ============================================================================
    DEFI_ARC             = FACT(statut='f',max='**',
@@ -4926,24 +6260,24 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                               UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),
                               EXCLUS('GROUP_MA_POI1','GROUP_MA_SEG2'),),
       GROUP_MA             = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**',
-         fr="Surface servant à répartir les caractéristiques des discrets"),
+         fr=tr("Surface servant à répartir les caractéristiques des discrets")),
       GROUP_MA_POI1        = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1,
-         fr="Mailles de type point correspondant aux discrets"),
+         fr=tr("Mailles de type point correspondant aux discrets")),
       GROUP_MA_SEG2        = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1,
-         fr="Mailles de type seg2 correspondant aux discrets"),
+         fr=tr("Mailles de type seg2 correspondant aux discrets")),
       FONC_GROUP           = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
       COEF_GROUP           = SIMP(statut='f',typ='R',max='**'),
       REPERE               = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
       CARA                 = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,
                                  into=("K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L",
                                        "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"),
-                                 fr="Choix des types de discrets du tapis de ressorts." ),
-      b_cara= BLOC(condition =""" au_moins_un(CARA, ["K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L",
-                                            "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"]) or \
-                                  (len(CARA)==2 and CARA[0][2:]==CARA[1][2:])""",
-                   fr="Valeurs pour les discrets du tapis de ressorts.",
+                                 fr=tr("Choix des types de discrets du tapis de ressorts.") ),
+      b_cara= BLOC(condition ="""CARA and (au_moins_un(CARA, ["K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L",
+                                           "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"]) or \
+                                           len(CARA) == 2 and CARA[0][2:] == CARA[1][2:])""",
+                   fr=tr("Valeurs pour les discrets du tapis de ressorts."),
          VALE = SIMP(statut='o',typ='R',max='**',
-              fr="Valeurs pour les discrets du tapis de ressorts.",),
+              fr=tr("Valeurs pour les discrets du tapis de ressorts."),),
       ),
       GROUP_NO_CENTRE      = SIMP(statut='f',typ=grno),
       NOEUD_CENTRE         = SIMP(statut='f',typ=no),
@@ -4963,15 +6297,15 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
 #============================================================================
    MASS_AJOU            = FACT(statut='f',max='**',
       GROUP_MA             = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**',
-         fr="Surface servant à répartir les caractéristiques des discrets"),
+         fr=tr("Surface servant à répartir les caractéristiques des discrets")),
       GROUP_MA_POI1        = SIMP(statut='o',typ=grma,validators=NoRepeat(),max=1,
-         fr="Mailles de type point correspondant aux discrets"),
+         fr=tr("Mailles de type point correspondant aux discrets")),
       FONC_GROUP           = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
    ),
 
 #============================================================================
    GEOM_FIBRE           = SIMP(statut='f',max=1,typ=gfibre_sdaster,
-      fr="Donner le nom de la SD regroupant tous les groupes de fibres (issue de DEFI_GEOM_FIBRE)"),
+      fr=tr("Donner le nom de la SD regroupant tous les groupes de fibres (issue de DEFI_GEOM_FIBRE)")),
 
    MULTIFIBRE           = FACT(statut='f',max='**',
       regles               = (AU_MOINS_UN('GROUP_MA','MAILLE'),),
@@ -5001,14 +6335,11 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
 # ======================================================================
 #
 AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op=  68,sd_prod=char_acou,
-                    fr="Affectation de charges et conditions aux limites acoustiques constantes",
+                    fr=tr("Affectation de charges et conditions aux limites acoustiques constantes"),
                     reentrant='n',
             UIinfo={"groupes":("Chargements","Acoustique",)},
          regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
-         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les pressions imposées",
-                               into=('DUALISATION',),defaut='DUALISATION',),
-                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
          PRES_IMPO       =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -5081,7 +6412,7 @@ def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,EVOL_IMPO,**args):
 
 
 AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
-                    ,fr="Affectation de conditions aux limites cinématiques (U=U0) pour un traitement sans dualisation",
+                    ,fr=tr("Affectation de conditions aux limites cinématiques (U=U0) pour un traitement sans dualisation"),
                      reentrant='n',
             UIinfo={"groupes":("Chargements","Mécanique",)},
          regles=(UN_PARMI('MECA_IMPO','THER_IMPO','ACOU_IMPO','EVOL_IMPO'),
@@ -5211,7 +6542,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
            PRES            =SIMP(statut='o',typ='C' ),
          ),
 
-         EVOL_IMPO  =SIMP(statut='f',typ=(evol_noli,evol_elas,evol_ther),fr="Pour imposer les ddls d'un evol_xxx"),
+         EVOL_IMPO  =SIMP(statut='f',typ=(evol_noli,evol_elas,evol_ther),fr=tr("Pour imposer les ddls d'un evol_xxx")),
          b_evol_impo = BLOC ( condition = "EVOL_IMPO != None",
            NOM_CMP         =SIMP(statut='f',typ='TXM',max='**',), # pour n'imposer que certaines CMPS (par défaut : toutes)
          ),
@@ -5242,8 +6573,8 @@ def affe_char_cine_f_prod(MECA_IMPO,THER_IMPO,**args):
   raise AsException("type de concept resultat non prevu")
 
 AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_prod,
-                      fr="Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres"
-                        +" pour un traitement sans dualisation",
+                      fr=tr("Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres" \
+                        " pour un traitement sans dualisation"),
                      reentrant='n',
             UIinfo={"groupes":("Chargements","Mécanique",)},
          regles=(UN_PARMI('MECA_IMPO','THER_IMPO')),
@@ -5381,7 +6712,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
-                    fr="Affectation de charges et conditions aux limites mécaniques constantes",
+                    fr=tr("Affectation de charges et conditions aux limites mécaniques constantes"),
                      reentrant='n',
             UIinfo={"groupes":("Chargements","Mécanique",)},
          regles=(AU_MOINS_UN('EVOL_CHAR','PESANTEUR','ROTATION','DDL_IMPO','DDL_POUTRE','FACE_IMPO',
@@ -5397,21 +6728,18 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
                          ),
          VERI_NORM       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
-         EVOL_CHAR       =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
-                               typ=evol_char ),
+         EVOL_CHAR       =SIMP(statut='f',fr=tr("Champ de pression issu d'un autre calcul"),
+                               typ=evol_char,min=1,max=1),
 
-         PESANTEUR       =FACT(statut='f',max=1,fr="Champ de pesanteur",
+         PESANTEUR       =FACT(statut='f',max=1,fr=tr("Champ de pesanteur"),
             GROUP_MA         =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             MAILLE           =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GRAVITE          =SIMP(statut='o',typ='R',min=1,max=1),
             DIRECTION        =SIMP(statut='o',typ='R',min=3,max=3),),
 
-         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
-                               into=('DUALISATION',),defaut='DUALISATION',),
-                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
 
-         ROTATION        =FACT(statut='f', max=1, 
-             fr="Définition d'un chargement de rotation",
+         ROTATION        =FACT(statut='f', max=1,
+             fr=tr("Définition d'un chargement de rotation"),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(), max='**'),
              MAILLE          =SIMP(statut='f',typ=ma, validators=NoRepeat(),max='**'),
              SANS_GROUP_MA   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5423,7 +6751,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
                        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),),),
 
          DDL_IMPO        =FACT(statut='f',max='**',
-             fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
+             fr=tr("Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
                      AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
                                  'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
@@ -5432,7 +6760,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
                                  'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON',
                                  'H1X','H1Y','H1Z','H2X','H2Y','H2Z','H3X','H3Y','H3Z','H4X','H4Y','H4Z',
                                  'E1X','E1Y','E1Z','E2X','E2Y','E2Z','E3X','E3Y','E3Z','E4X','E4Y','E4Z',
-                                 'LAGS_C','LAGS_F1','LAGS_F2','LAG2_C','LAG2_F1','LAG2_F2','LAG3_C','LAG3_F1',
+                                 'LAGS_C','LAGS_F1','LAGS_F2','LAG2_C','LAG2_F1','LAG2_F2','LAG3_C','LAG3_F1','HPRE1',
                                  'V11','V12','V13','V21','V22','V23','V31','V32','V33',
                                  'PRES11','PRES12','PRES13','PRES21','PRES22','PRES23','PRES31','PRES32','PRES33','LH1','GLIS'),),
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -5523,6 +6851,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              LAG2_F2         =SIMP(statut='f',typ='R' ),
              LAG3_C          =SIMP(statut='f',typ='R' ),
              LAG3_F1         =SIMP(statut='f',typ='R' ),
+             HPRE1           =SIMP(statut='f',typ='R' ),
              V11             =SIMP(statut='f',typ='R' ),
              V12             =SIMP(statut='f',typ='R' ),
              V13             =SIMP(statut='f',typ='R' ),
@@ -5548,7 +6877,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 
 
          DDL_POUTRE    =FACT(statut='f',max='**',
-             fr="Bloque des DDLs dans un repère local d'une poutre",
+             fr=tr("Bloque des DDLs dans un repère local d'une poutre"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
                      AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),
                      UN_PARMI('VECT_Y','ANGL_VRIL'),),
@@ -5580,7 +6909,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 
 
            FACE_IMPO       =FACT(statut='f',max='**',
-             fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)",
+             fr=tr("Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)"),
              regles=(UN_PARMI('GROUP_MA','MAILLE',),
                      AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
                                  'TEMP','PRE1','PRE2','DNOR','DTAN'),
@@ -5620,7 +6949,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          CHAMNO_IMPO  =FACT(statut='f',max='**',
-             fr="Impose des DDLs aux valeurs d'un concept cham_no_sdaster",
+             fr=tr("Impose des DDLs aux valeurs d'un concept cham_no_sdaster"),
 #  type de cham_no_sdaster CO()
              CHAM_NO         =SIMP(statut='o',typ=cham_no_sdaster), #CO()
              COEF_MULT       =SIMP(statut='o',typ='R' ),
@@ -5628,7 +6957,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          ARETE_IMPO       =FACT(statut='f',max='**',
-             fr="Impose à tous les noeuds d'une arete des elements 3D une ou plusieurs valeurs de déplacement",
+             fr=tr("Impose à tous les noeuds d'une arete des elements 3D une ou plusieurs valeurs de déplacement"),
              regles=(UN_PARMI('GROUP_MA','MAILLE',),
                      AU_MOINS_UN('DX','DY','DZ','DTAN','PRES','PHI','TEMP','PRE1','PRE2'),
                      EXCLUS('DTAN','DX'),
@@ -5652,7 +6981,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
            LIAISON_DDL     =FACT(statut='f',max='**',
-             fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds",
+             fr=tr("Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds"),
              regles=(UN_PARMI('GROUP_NO','NOEUD'),),
              GROUP_NO        =SIMP(statut='f',typ=grno ,max='**'),
              NOEUD           =SIMP(statut='f',typ=no   ,max='**'),
@@ -5662,8 +6991,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
            LIAISON_OBLIQUE =FACT(statut='f',max='**',
-             fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante"
-              +" dans un repère oblique quelconque",
+             fr=tr("Applique à des noeuds la meme valeur de déplacement définie composante par composante"
+              " dans un repère oblique quelconque"),
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
                      AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),),
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -5684,7 +7013,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
            LIAISON_GROUP   =FACT(statut='f',max='**',
-             fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds",
+             fr=tr("Définit la meme relation linéaire entre certains DDLs de couples de noeuds"),
              regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
                      UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
                      EXCLUS('GROUP_MA_1','GROUP_NO_2'),
@@ -5720,7 +7049,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
            LIAISON_MAIL    =FACT(statut='f',max='**',
-             fr="Définit des relations linéaires permettant de recoller deux bords d'une structure",
+             fr=tr("Définit des relations linéaires permettant de recoller deux bords d'une structure"),
              regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
                      AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL')),
               GROUP_MA_MAIT   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5729,6 +7058,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
               MAILLE_ESCL     =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
               GROUP_NO_ESCL   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
               NOEUD_ESCL      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+              DISTANCE_MAX    =SIMP(statut='f',typ='R'),
 
               TYPE_RACCORD    =SIMP(statut='o',typ='TXM',defaut="MASSIF",into=("MASSIF","COQUE","COQUE_MASSIF","MASSIF_COQUE",)),
 
@@ -5748,7 +7078,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
            LIAISON_CYCL    =FACT(statut='f',max='**',
-             fr="Définit des relations linéaires permettant de recoller les bords de deux parties symétriquement cycliques",
+             fr=tr("Définit des relations linéaires permettant de recoller les bords de deux parties symétriquement cycliques"),
              regles=(AU_MOINS_UN('GROUP_MA_MAIT1','MAILLE_MAIT1'),
                      AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
                      PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),
@@ -5773,8 +7103,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 
 
            LIAISON_SOLIDE  =FACT(statut='f',max='**',
-             fr="Modélise une partie indéformable d'une structure."
-              +" Le mot clé TRAN permettent d'imposer le déplacement de la partie indéformable.",
+             fr=tr("Modélise une partie indéformable d'une structure. "
+                  "Le mot clé TRAN permettent d'imposer le déplacement de la partie indéformable."),
              regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
 
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -5792,15 +7122,21 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          LIAISON_ELEM    =FACT(statut='f',max='**',
-            fr="Modélise le raccord : d'une partie massive 3D avec une poutre ou avec un tuyau, d'une coque"
-               +" avec une poutre ou avec un tuyau, d'une plaque avec une poutre",
-            regles      =(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_NO_2','NOEUD_2'),),
-            OPTION      =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","2D_POU","COQ_POU","COQ_TUYAU","PLAQ_POUT_ORTH") ),
+            fr=tr("Modélise le raccord : d'une partie massive 3D avec une poutre ou avec un tuyau, d'une coque "
+                 "avec une poutre ou avec un tuyau, d'une plaque avec une poutre"),
+            regles      =(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_NO_2','NOEUD_2','GROUP_MA_2'),),
+            OPTION      =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","3D_POU_ARLEQUIN","2D_POU","COQ_POU","COQ_TUYAU","PLAQ_POUT_ORTH") ),
 
             GROUP_MA_1  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             MAILLE_1    =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             GROUP_NO_2  =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
             NOEUD_2     =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+            GROUP_MA_2  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+
+            b_3d_pou_arlequin =BLOC( condition = "OPTION == '3D_POU_ARLEQUIN'",
+               CARA_ELEM      =SIMP(statut='o',typ=cara_elem ),
+               CHAM_MATER     =SIMP(statut='o',typ=cham_mater ),
+            ),
 
             b_plaq_pout_orth =BLOC( condition = "OPTION == 'PLAQ_POUT_ORTH'",
                VERIF_EXCENT   =SIMP(statut='o',typ='TXM',defaut="OUI",into=("OUI","NON") ),
@@ -5818,7 +7154,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
            LIAISON_UNIF    =FACT(statut='f',max='**',
-             fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
+             fr=tr("Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds"),
              regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
 
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -5834,7 +7170,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          LIAISON_CHAMNO  =FACT(statut='f',max='**',
-             fr="Définit une relation linéaire entre tous les DDLs présents dans un concept CHAM_NO",
+             fr=tr("Définit une relation linéaire entre tous les DDLs présents dans un concept CHAM_NO"),
 #  type de cham_no_sdaster CO()
              CHAM_NO         =SIMP(statut='o',typ=cham_no_sdaster), #CO()
              COEF_IMPO       =SIMP(statut='o',typ='R' ),
@@ -5842,8 +7178,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          LIAISON_RBE3    =FACT(statut='f',max='**',
-            fr="""Modélise des relations linéaires de type RBE3 entre
-                les degrés de liberté d'un noeud maître et des noeuds esclaves.""",
+            fr=tr("Modélise des relations linéaires de type RBE3 entre "
+                 "les degrés de liberté d'un noeud maître et des noeuds esclaves."),
             regles          =(UN_PARMI('GROUP_NO_MAIT','NOEUD_MAIT'), UN_PARMI('GROUP_NO_ESCL','NOEUD_ESCL'),),
             GROUP_NO_MAIT   =SIMP(statut='f',typ=grno,max=1),
             NOEUD_MAIT      =SIMP(statut='f',typ=no  ,max=1),
@@ -5856,7 +7192,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
          LIAISON_INTERF  =FACT(statut='f',max='**',
-             fr="Définit une relation linéaire entre les DDLs d'interface à partir d'un MACRELEM",
+             fr=tr("Définit une relation linéaire entre les DDLs d'interface à partir d'un MACRELEM"),
              MACR_ELEM_DYNA  =SIMP(statut='o',typ=macr_elem_dyna),
              TYPE_LIAISON    =SIMP(statut='f',typ='TXM',defaut="RIGIDE",into=("RIGIDE","SOUPLE") ),
            ),
@@ -5867,7 +7203,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 #
 # FORCES
 #
-         FORCE_NODALE    =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**',
+         FORCE_NODALE    =FACT(statut='f',fr=tr("Applique à des noeuds des forces nodales"),max='**',
            regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -5882,7 +7218,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
          FORCE_FACE      =FACT(statut='f',max='**',
-             fr="Applique des forces surfaciques sur une face d'élément volumique",
+             fr=tr("Applique des forces surfaciques sur une face d'élément volumique"),
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                      AU_MOINS_UN('FX','FY','FZ'),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5893,7 +7229,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FORCE_ARETE     =FACT(statut='f',max='**',
-         fr="Applique des forces linéiques à une arete d'élément volumique ou de coque",
+         fr=tr("Applique des forces linéiques à une arete d'élément volumique ou de coque"),
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),
                      AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5907,7 +7243,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FORCE_CONTOUR   =FACT(statut='f',max='**',
-             fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER",
+             fr=tr("Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER"),
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                      AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5921,7 +7257,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FORCE_INTERNE   =FACT(statut='f',max='**',
-             fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique",
+             fr=tr("Applique des forces volumiques (2D ou 3D) à un domaine volumique"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      AU_MOINS_UN('FX','FY','FZ' ),),
@@ -5934,13 +7270,13 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          PRE_SIGM   =FACT(statut='f',max='**',
-             fr="Applique des contraintes volumiques (2D ou 3D) à un domaine volumique",
+             fr=tr("Applique des contraintes volumiques (2D ou 3D) à un domaine volumique"),
              #INST            =SIMP(statut='f',typ='R' ),
              SIGM            =SIMP(statut='o',typ=(cham_elem,carte_sdaster)),
            ),
 
          PRES_REP        =FACT(statut='f',max='**',
-             fr="Applique une pression à un domaine de milieu continu 2D ou 3D, ou à un domaine de coques et tuyaux",
+             fr=tr("Applique une pression à un domaine de milieu continu 2D ou 3D, ou à un domaine de coques et tuyaux"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','FISSURE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','FISSURE'),
                      AU_MOINS_UN('PRES','CISA_2D' ),),
@@ -5953,7 +7289,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          EFFE_FOND       =FACT(statut='f',max='**',
-           fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise à une pression",
+           fr=tr("Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise à une pression"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
            GROUP_MA_INT    =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -5962,7 +7298,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
          PRE_EPSI       =FACT(statut='f',max='**',
-             fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure",
+             fr=tr("Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX',
@@ -5988,7 +7324,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
         FORCE_POUTRE    =FACT(statut='f',max='**',
-             fr="Applique des forces linéiques sur des éléments de type poutre",
+             fr=tr("Applique des forces linéiques sur des éléments de type poutre"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      ),
@@ -6045,7 +7381,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FORCE_TUYAU     =FACT(statut='f',max='**',
-             fr="Applique une pression sur des éléments TUYAU",
+             fr=tr("Applique une pression sur des éléments TUYAU"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -6055,7 +7391,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FORCE_COQUE     =FACT(statut='f',max='**',
-             fr="Applique des forces surfaciques sur des éléments de types coques",
+             fr=tr("Applique des forces surfaciques sur des éléments de types coques"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
@@ -6094,7 +7430,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
            LIAISON_COQUE   =FACT(statut='f',max='**',
-             fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
+             fr=tr("Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires"),
              regles=(AU_MOINS_UN('GROUP_MA_1','MAILLE_1','GROUP_MA_2','MAILLE_2',
                                'GROUP_NO_1','NOEUD_1','GROUP_NO_2','NOEUD_2',),),
              GROUP_MA_1      =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6117,8 +7453,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          RELA_CINE_BP    =FACT(statut='f',max='**',
-           fr="Etablir des relations cinématiques permettant de relier les noeuds cable aux noeuds du béton, et spécifier"
-              +" la prise en compte des contraintes initiales dans les cables",
+           fr=tr("Etablir des relations cinématiques permettant de relier les noeuds cable aux noeuds du béton, et spécifier "
+                "la prise en compte des contraintes initiales dans les cables"),
            CABLE_BP        =SIMP(statut='o',typ=cabl_precont ),
            SIGM_BPEL       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
            RELA_CINE       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
@@ -6126,8 +7462,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          ),
 
          FORCE_ELEC      =FACT(statut='f',max='**',
-             fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
-                 +" secondaire droit",
+             fr=tr("Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur "
+                  "secondaire droit"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
 
@@ -6135,7 +7471,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
              MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
 
-             POSITION        =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ),
+             POSITION        =SIMP(statut='f',typ='TXM',fr=tr("Direction prédéfinie"),into=("PARA","INFI","FINI",) ),
              b_fxyz  =BLOC ( condition = "POSITION == None",
                   FX   =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
                   FY   =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
@@ -6160,8 +7496,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 
 
         INTE_ELEC       =FACT(statut='f',max='**',
-             fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
-               +" secondaire non nécessairement droit",
+             fr=tr("Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur "
+                  "secondaire non nécessairement droit"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      AU_MOINS_UN('GROUP_MA_2','MAILLE_2','TRANS','SYME'),
@@ -6176,14 +7512,14 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
 
-         IMPE_FACE       =FACT(statut='f',fr="Applique une impédance acoustique à une face",max='**',
+         IMPE_FACE       =FACT(statut='f',fr=tr("Applique une impédance acoustique à une face"),max='**',
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
              MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
              IMPE            =SIMP(statut='o',typ='R' ),
            ),
 
-         VITE_FACE       =FACT(statut='f',fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE), ",max='**',
+         VITE_FACE       =FACT(statut='f',fr=tr("Impose des vitesses normales à une face (phénomène ACOUSTIQUE), "),max='**',
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
              MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -6193,7 +7529,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 
 
          ONDE_FLUI       =FACT(statut='f',max='**',
-             fr="Applique une amplitude de pression d'onde incidente sinusoidale arrivant normalement à une face",
+             fr=tr("Applique une amplitude de pression d'onde incidente sinusoidale arrivant normalement à une face"),
              regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
              MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -6201,8 +7537,8 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
            ),
 
          FLUX_THM_REP    =FACT(statut='f',max='**',
-             fr="Applique à un domaine de milieu continu 2D ou 3D un flux de chaleur et/ou un apport de masse fluide"
-                 +" (flux hydraulique)",
+             fr=tr("Applique à un domaine de milieu continu 2D ou 3D un flux de chaleur et/ou un apport de masse fluide "
+                  "(flux hydraulique)"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                      PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                      AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
@@ -6214,7 +7550,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              FLUN_HYDR2      =SIMP(statut='f',typ='R' ),
            ),
          FORCE_SOL       =FACT(statut='f',max=1,
-             fr="Définition des impédances et forces  de sol temporelles",
+             fr=tr("Définition des impédances et forces  de sol temporelles"),
            regles=(UN_PARMI('GROUP_NO_INTERF','SUPER_MAILLE'),
                    AU_MOINS_UN('UNITE_RESU_MASS','UNITE_RESU_RIGI','UNITE_RESU_AMOR'),),
            GROUP_NO_INTERF =SIMP(statut='f',typ=grno,),
@@ -6246,16 +7582,13 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
-                     fr="Affectation de charges et conditions aux limites mécaniques complexes",
+                     fr=tr("Affectation de charges et conditions aux limites mécaniques complexes"),
                      reentrant='n',
             UIinfo={"groupes":("Chargements","Mécanique",)},
          regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
-         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
-                               into=('DUALISATION',),defaut='DUALISATION',),
-                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
          DDL_IMPO        =FACT(statut='f',max='**',
-           fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
+           fr=tr("Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
                    AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','LIAISON','GLIS' ),),
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -6280,7 +7613,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
            GLIS            =SIMP(statut='f',typ='C' ),
          ),
          FORCE_POUTRE    =FACT(statut='f',max='**',
-           fr="Applique des forces linéiques sur des éléments de type poutre",
+           fr=tr("Applique des forces linéiques sur des éléments de type poutre"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',),
@@ -6302,7 +7635,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
            VZ              =SIMP(statut='f',typ='C' ),
          ),
          LIAISON_DDL     =FACT(statut='f',max='**',
-           fr="Définit une relation linéaire entre les DDLs de deux ou plusieurs noeuds",
+           fr=tr("Définit une relation linéaire entre les DDLs de deux ou plusieurs noeuds"),
            regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
            GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
            NOEUD           =SIMP(statut='f',typ=no  ,max='**'),
@@ -6331,7 +7664,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
-                      fr="Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres",
+                      fr=tr("Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres"),
                       reentrant='n',
             UIinfo={"groupes":("Chargements","Mécanique",)},
         regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE',
@@ -6342,13 +7675,10 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
                             'EFFE_FOND','FLUX_THM_REP',),),
          VERI_NORM       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
-         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
-                               into=('DUALISATION',),defaut='DUALISATION',),
-                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
 
          DDL_IMPO        =FACT(statut='f',max='**',
-           fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies"
-               +" par l'intermédiaire d'un concept fonction ",
+           fr=tr("Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies"
+                " par l'intermédiaire d'un concept fonction "),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
                    AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
                                'TEMP','PRE1','PRE2','GONF','LIAISON','H1X',
@@ -6397,8 +7727,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FACE_IMPO       =FACT(statut='f',max='**',
-           fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)"
-              +" fournies par l'intérmédiaire d'un concept fonction",
+           fr=tr("Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)"
+              " fournies par l'intérmédiaire d'un concept fonction"),
            regles=(UN_PARMI('GROUP_MA','MAILLE'),
                    AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'),
                    EXCLUS('DNOR','DX'),
@@ -6437,8 +7767,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          LIAISON_DDL     =FACT(statut='f',max='**',
-           fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds, les valeurs sont fournies par"
-               +" l'intermediaire d'un concept de type fonction",
+           fr=tr("Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds, les valeurs sont fournies par"
+                 " l'intermediaire d'un concept de type fonction"),
            regles=(UN_PARMI('GROUP_NO','NOEUD'),UN_PARMI('COEF_MULT','COEF_MULT_FONC'),),
            GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
            NOEUD           =SIMP(statut='f',typ=no  ,max='**'),
@@ -6449,8 +7779,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          LIAISON_OBLIQUE =FACT(statut='f',max='**',
-           fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante dans un repère oblique"
-              +" quelconque, les valeurs sont fournis par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique à des noeuds la meme valeur de déplacement définie composante par composante dans un repère oblique"
+                 " quelconque, les valeurs sont fournis par l'intermédiaire d'un concept fonction"),
              regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
                      AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),),
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -6471,8 +7801,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          LIAISON_GROUP   =FACT(statut='f',max='**',
-           fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds, les valeurs sont fournies par"
-               +" l'intermédiaire de concept fonction",
+           fr=tr("Définit la meme relation linéaire entre certains DDLs de couples de noeuds, les valeurs sont fournies par"
+               " l'intermédiaire de concept fonction"),
            regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
                    UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
                    EXCLUS('GROUP_MA_1','GROUP_NO_2'),
@@ -6506,7 +7836,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
           LIAISON_UNIF    =FACT(statut='f',max='**',
-           fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
+           fr=tr("Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds"),
            regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
              NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
@@ -6521,8 +7851,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
 
 
          LIAISON_SOLIDE  =FACT(statut='f',max='**',
-             fr="Modélise une partie indéformable d'une structure."
-              +" Le mot clé TRAN permettent d'imposer le déplacement de la partie indéformable.",
+             fr=tr("Modélise une partie indéformable d'une structure."
+              " Le mot clé TRAN permettent d'imposer le déplacement de la partie indéformable."),
              regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
 
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -6542,8 +7872,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
 
 
          FORCE_NODALE    =FACT(statut='f',max='**',
-           fr="Applique à des noeuds des forces nodales dont les valeurs des composantes sont fournies par l'intermédiaire"
-               +" d'un concept fonction",
+           fr=tr("Applique à des noeuds des forces nodales dont les valeurs des composantes sont fournies par l'intermédiaire"
+               " d'un concept fonction"),
            regles=(UN_PARMI('GROUP_NO','NOEUD'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -6558,8 +7888,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FORCE_FACE      =FACT(statut='f',max='**',
-           fr="Applique des forces surfaciques sur une face d'élément volumique dont les valeurs des composantes sont fournies"
-               +" par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique des forces surfaciques sur une face d'élément volumique dont les valeurs des composantes sont fournies"
+                " par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ'),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6569,8 +7899,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
            FZ              =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
          FORCE_ARETE     =FACT(statut='f',max='**',
-           fr="Applique des forces linéiques à une arete d'élément volumique ou de coque dont les valeurs des composantes sont"
-               +" fournies par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique des forces linéiques à une arete d'élément volumique ou de coque dont les valeurs des composantes sont"
+                " fournies par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6583,8 +7913,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
            MZ              =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
          FORCE_CONTOUR   =FACT(statut='f',max='**',
-           fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER, dont les valeurs des composantes"
-               +" sont fournies par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER, dont les valeurs des composantes"
+                " sont fournies par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6598,8 +7928,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FORCE_INTERNE   =FACT(statut='f',max='**',
-           fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique, dont les valeurs des composantes sont fournies"
-               +" par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique des forces volumiques (2D ou 3D) à un domaine volumique, dont les valeurs des composantes sont fournies"
+                " par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ'),),
@@ -6612,8 +7942,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          PRES_REP        =FACT(statut='f',max='**',
-           fr="Applique une pression à un domaine de milieu continu 2D ou 3D ou à un domaine de coques et tuyaux, dont les"
-               +" valeurs imposées (pression et/ou cisaillement) sont fournies par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique une pression à un domaine de milieu continu 2D ou 3D ou à un domaine de coques et tuyaux, dont les"
+                " valeurs imposées (pression et/ou cisaillement) sont fournies par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','FISSURE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','FISSURE'),
                    AU_MOINS_UN('PRES','CISA_2D'),),
@@ -6626,8 +7956,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          EFFE_FOND       =FACT(statut='f',max='**',
-           fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise"
-               +" à une pression dont la valeur est fournie par l'intermédiaire d'un concept fonction",
+           fr=tr("Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise"
+               " à une pression dont la valeur est fournie par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
            GROUP_MA_INT    =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6636,8 +7966,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          PRE_EPSI       =FACT(statut='f',max='**',
-           fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure dont les composantes"
-               +" du tenseur de déformation sont fournies par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure dont les composantes"
+                " du tenseur de déformation sont fournies par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                    AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),),
@@ -6653,8 +7983,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FORCE_POUTRE    =FACT(statut='f',max='**',
-           fr="Applique des forces linéiques sur des éléments de type poutre dont les valeurs sont fournies par"
-               +" l'intermédiaire d'un concept fonction",
+           fr=tr("Applique des forces linéiques sur des éléments de type poutre dont les valeurs sont fournies par"
+               " l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
 
@@ -6712,7 +8042,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FORCE_TUYAU     =FACT(statut='f',max='**',
-           fr="Applique une pression sur des éléments TUYAU, la valeur est fournie par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique une pression sur des éléments TUYAU, la valeur est fournie par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -6722,8 +8052,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          FORCE_COQUE     =FACT(statut='f',max='**',
-           fr="Applique des forces surfaciques sur des éléments de types coques dont les valeurs sont fournies par"
-               +" l'intermédiaires d'un concept fonction",
+           fr=tr("Applique des forces surfaciques sur des éléments de types coques dont les valeurs sont fournies par"
+                " l'intermédiaires d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
@@ -6760,7 +8090,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          ),
 
          LIAISON_COQUE   =FACT(statut='f',max='**',
-             fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
+             fr=tr("Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires"),
              regles=(AU_MOINS_UN('GROUP_MA_1','MAILLE_1','GROUP_MA_2','MAILLE_2',
                                  'GROUP_NO_1','NOEUD_1','GROUP_NO_2','NOEUD_2',),),
              GROUP_MA_1      =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6784,8 +8114,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
 
 
          VITE_FACE       =FACT(statut='f',max='**',
-           fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE) dont les valeurs sont fournies par"
-               +" l'intermédiaire d'un concept fonction",
+           fr=tr("Impose des vitesses normales à une face (phénomène ACOUSTIQUE) dont les valeurs sont fournies par"
+                " l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('GROUP_MA','MAILLE'),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6793,8 +8123,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
            VNOR            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
          IMPE_FACE       =FACT(statut='f',max='**',
-           fr="Applique à une face une impédance acoustique dont la valeur est fournie par l'intermédiaire"
-               +" d'un concept fonction",
+           fr=tr("Applique à une face une impédance acoustique dont la valeur est fournie par l'intermédiaire"
+                " d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('GROUP_MA','MAILLE'),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -6802,8 +8132,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
            IMPE            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
          ONDE_PLANE      =FACT(statut='f',max=1,
-           fr="Impose un chargement sismique par onde plane dont la valeur est fournie par l'intermédiaire"
-               +" d'un concept fonction",
+           fr=tr("Impose un chargement sismique par onde plane dont la valeur est fournie par l'intermédiaire"
+                " d'un concept fonction"),
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('GROUP_MA','MAILLE'),),
            DIRECTION       =SIMP(statut='o',typ='R',min=3, max=3),
@@ -6816,8 +8146,8 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
 
 
          FLUX_THM_REP    =FACT(statut='f',max='**',
-           fr="Applique à un domaine continue 2D ou 3D un flux de chaleur et/ou un apport de masse fluide (flux hydraulique)"
-               +" dont les valeurs des flux sont fournies par l'intermédiaire d'un concept fonction",
+           fr=tr("Applique à un domaine continue 2D ou 3D un flux de chaleur et/ou un apport de masse fluide (flux hydraulique)"
+                " dont les valeurs des flux sont fournies par l'intermédiaire d'un concept fonction"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
                    AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
@@ -6850,16 +8180,13 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
-                    ,fr="Affectation de charges et conditions aux limites thermiques constantes",
+                    ,fr=tr("Affectation de charges et conditions aux limites thermiques constantes"),
                     reentrant='n',
             UIinfo={"groupes":("Chargements","Thermique",)},
       regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE',
                           'ECHANGE_PAROI','PRE_GRAD_TEMP','LIAISON_DDL','LIAISON_GROUP',
                           'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),),
          MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
-         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les températures imposées",
-                               into=('DUALISATION',),defaut='DUALISATION',),
-                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
 
          TEMP_IMPO       =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
@@ -6894,7 +8221,7 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
 
 
          RAYONNEMENT     =FACT(statut='f',max='**',
-           fr="Attention, exprimer les températures en Celsius si rayonnement",
+           fr=tr("Attention, exprimer les températures en Celsius si rayonnement"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -7005,6 +8332,7 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
            ANGL_NAUT       =SIMP(statut='f',typ='R',max='**' ),
            CENTRE          =SIMP(statut='f',typ='R',max='**' ),
            ELIM_MULT       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+           DISTANCE_MAX    =SIMP(statut='f',typ='R'),
          ),
 
          ECHANGE_PAROI   =FACT(statut='f',max='**',
@@ -7072,8 +8400,8 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
 # ======================================================================
 # person_in_charge: mickael.abbas at edf.fr
 AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
-                     fr="Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)"
-                         +" paramètres (temps, ...)",
+                     fr=tr("Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)"
+                           " paramètres (temps, ...)"),
                      reentrant='n',
             UIinfo={"groupes":("Chargements","Thermique",)},
       regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','SOUR_NL','FLUX_REP','FLUX_NL','ECHANGE',
@@ -7125,7 +8453,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
 
 
          RAYONNEMENT     =FACT(statut='f',max='**',
-           fr="Attention, exprimer les températures en Celsius si rayonnement",
+           fr=tr("Attention, exprimer les températures en Celsius si rayonnement"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -7287,10 +8615,11 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
-                   fr="Affecter des matériaux à des zones géométriques d'un maillage",
+                   fr=tr("Affecter des matériaux à des zones géométriques d'un maillage"),
                          reentrant='n',
             UIinfo={"groupes":("Modélisation",)},
-         MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster),
+         regles=(AU_MOINS_UN('MAILLAGE','MODELE',),),
+         MAILLAGE        =SIMP(statut='f',typ=maillage_sdaster),
          MODELE          =SIMP(statut='f',typ=modele_sdaster),
 
          #  affectation du nom du matériau (par mailles):
@@ -7316,7 +8645,7 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
          #  affectation des variables de commande :
          #  --------------------------------------------------
          # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
-         LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","GEOM","CORR","IRRA","HYDR","SECH","EPSA",
+         LIST_NOM_VARC =SIMP(statut='c',typ='TXM', max='**', defaut=("TEMP","GEOM","CORR","IRRA","HYDR","SECH","EPSA",
                                                            "M_ACIER","M_ZIRC","NEUT1","NEUT2","PTOT","DIVU",)),
 
          AFFE_VARC    =FACT(statut='f',max='**',
@@ -7491,30 +8820,28 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
 # person_in_charge: jacques.pellet at edf.fr
 AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
             UIinfo={"groupes":("Modélisation",)},
-                 fr="Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage",reentrant='n',
-         regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),UN_PARMI('MAILLAGE','GRILLE')),
-         MAILLAGE        =SIMP(statut='f',typ=maillage_sdaster),
-         GRILLE          =SIMP(statut='f',typ=grille_sdaster),
+                 fr=tr("Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage"),reentrant='n',
+         regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),),
+         MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-         VERIF           =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,into=("MAILLE","NOEUD") ),
 #
 #====
 # Définition des grandeurs caractéristiques
 #====
 #
          GRANDEUR_CARA =FACT(statut='f',max=1,
-         fr="Grandeurs caractéristiques pour l'adimensionnement des indicateurs d'erreur HM",
-         ang="Characteristic data for HM error estimators adimensionalisation",
+         fr=tr("Grandeurs caractéristiques pour l'adimensionnement des indicateurs d'erreur HM"),
+         
 #
             LONGUEUR      =SIMP(statut='f',typ='R',val_min=0,
-                                fr ="Longueur caractéristique",
-                                ang="Characteristic length",),
+                                fr =tr("Longueur caractéristique"),
+                                ),
             PRESSION      =SIMP(statut='f',typ='R',val_min=0,
-                                fr ="Pression caractéristique",
-                                ang="Characteristic pressure",),
+                                fr =tr("Pression caractéristique"),
+                                ),
             TEMPERATURE   =SIMP(statut='f',typ='R',val_min=0,
-                                fr ="Température caractéristique",
-                                ang="Characteristic temperature",),),
+                                fr =tr("Température caractéristique"),
+                                ),),
 #
          AFFE_SOUS_STRUC =FACT(statut='f',
            regles=(UN_PARMI('TOUT','SUPER_MAILLE'),),
@@ -7532,8 +8859,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
            PHENOMENE       =SIMP(statut='o',typ='TXM',
                                  into=("MECANIQUE","THERMIQUE","ACOUSTIQUE") ),
                 b_mecanique     =BLOC( condition = "PHENOMENE=='MECANIQUE'",
-                                        fr="modélisations mécaniques",
-                    MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+                                        fr=tr("modélisations mécaniques"),
+                    MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=10,into=(
                                   "2D_DIS_T",        # RESP. : FLEJOU J.L.FLEJOU
                                   "2D_DIS_TR",       # RESP. : FLEJOU J.L.FLEJOU
                                   "2D_FLUI_ABSO",    # RESP. : DEVESA G.DEVESA
@@ -7545,12 +8872,10 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "3D_FAISCEAU",     # RESP. : VOLDOIRE F.VOLDOIRE
                                   "3D_FLUI_ABSO",    # RESP. : DEVESA G.DEVESA
                                   "3D_FLUIDE",       # RESP. : GREFFET N.GREFFET
-                                  "3D_INCO",         # RESP. : SFAYOLLE S.FAYOLLE
+                                  "3D_INCO_UPG",     # RESP. : SFAYOLLE S.FAYOLLE
+                                  "3D_INCO_UPGB",    # RESP. : SFAYOLLE S.FAYOLLE
                                   "3D_INCO_UP",      # RESP. : SFAYOLLE S.FAYOLLE
-                                  "3D_INCO_OSGS",    # RESP. : SFAYOLLE S.FAYOLLE
-                                  "3D_INCO_GD",      # RESP. : SFAYOLLE S.FAYOLLE
-                                  "3D_INCO_LOG",     # RESP. : SFAYOLLE S.FAYOLLE
-                                  "3D_INCO_LUP",     # RESP. : SFAYOLLE S.FAYOLLE
+                                  "3D_INCO_UPO",     # RESP. : SFAYOLLE S.FAYOLLE
                                   "3D_SI",           # RESP. : DESROCHES X.DESROCHES
                                   "3D_GRAD_EPSI",    # RESP. : MICHEL S.MICHEL
                                   "3D_GRAD_VARI",    # RESP. : MICHEL S.MICHEL
@@ -7563,12 +8888,10 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "AXIS_FLUI_STRU",  # RESP. : GREFFET N.GREFFET
                                   "AXIS_FLUIDE",     # RESP. : GREFFET N.GREFFET
                                   "AXIS_FOURIER",    # RESP. : DESROCHES X.DESROCHES
-                                  "AXIS_INCO",       # RESP. : SFAYOLLE S.FAYOLLE
+                                  "AXIS_INCO_UPG",   # RESP. : SFAYOLLE S.FAYOLLE
+                                  "AXIS_INCO_UPGB",  # RESP. : SFAYOLLE S.FAYOLLE
                                   "AXIS_INCO_UP",    # RESP. : SFAYOLLE S.FAYOLLE
-                                  "AXIS_INCO_OSGS",  # RESP. : SFAYOLLE S.FAYOLLE
-                                  "AXIS_INCO_GD",    # RESP. : SFAYOLLE S.FAYOLLE
-                                  "AXIS_INCO_LOG",   # RESP. : SFAYOLLE S.FAYOLLE
-                                  "AXIS_INCO_LUP",   # RESP. : SFAYOLLE S.FAYOLLE
+                                  "AXIS_INCO_UPO",   # RESP. : SFAYOLLE S.FAYOLLE
                                   "AXIS_SI",         # RESP. : DESROCHES X.DESROCHES
                                   "AXIS_GRAD_VARI",  # RESP. : MICHEL S.MICHEL
                                   "AXIS_GVNO",       # RESP. : BEAURAIN J.BEAURAIN
@@ -7599,12 +8922,10 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "PLAN_INTERFACE_S",# RESP. : LAVERNE J.LAVERNE
                                   "PLAN_ELDI",       # RESP. : LAVERNE J.LAVERNE
                                   "D_PLAN_ABSO",     # RESP. : DEVESA G.DEVESA
-                                  "D_PLAN_INCO",     # RESP. : SFAYOLLE S.FAYOLLE
+                                  "D_PLAN_INCO_UPG", # RESP. : SFAYOLLE S.FAYOLLE
+                                  "D_PLAN_INCO_UPGB",# RESP. : SFAYOLLE S.FAYOLLE
                                   "D_PLAN_INCO_UP",  # RESP. : SFAYOLLE S.FAYOLLE
-                                  "D_PLAN_INCO_OSGS",# RESP. : SFAYOLLE S.FAYOLLE
-                                  "D_PLAN_INCO_GD",  # RESP. : SFAYOLLE S.FAYOLLE
-                                  "D_PLAN_INCO_LOG", # RESP. : SFAYOLLE S.FAYOLLE
-                                  "D_PLAN_INCO_LUP", # RESP. : SFAYOLLE S.FAYOLLE
+                                  "D_PLAN_INCO_UPO", # RESP. : SFAYOLLE S.FAYOLLE
                                   "D_PLAN_SI",       # RESP. : DESROCHES X.DESROCHES
                                   "DIS_T",           # RESP. : FLEJOU J.L.FLEJOU
                                   "DIS_TR",          # RESP. : FLEJOU J.L.FLEJOU
@@ -7723,8 +9044,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                                                       )  )  ),
 
                 b_thermique     =BLOC( condition = "PHENOMENE=='THERMIQUE'",
-                                        fr="modélisations thermiques",
-                    MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+                                        fr=tr("modélisations thermiques"),
+                    MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=10,into=(
                                   "3D",              # RESP. : DURAND C.DURAND
                                   "3D_DIAG",         # RESP. : DURAND C.DURAND
                                   "AXIS",            # RESP. : DURAND C.DURAND
@@ -7738,8 +9059,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                                                       ),),),
 
                 b_acoustique    =BLOC( condition = "PHENOMENE=='ACOUSTIQUE'",
-                                        fr="modélisations acoustiques",
-                     MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+                                        fr=tr("modélisations acoustiques"),
+                     MODELISATION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=10,into=(
                                   "3D",              # RESP. : None
                                   "PLAN"             # RESP. : None
                                                                        ), ),),
@@ -7755,7 +9076,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
          ),
 
          VERI_JACOBIEN  =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',
-                              fr ="Vérification de la forme des mailles (jacobiens tous de meme signe).",),
+                              fr =tr("Vérification de la forme des mailles (jacobiens tous de meme signe)."),),
 ) ;
 
 # ======================================================================
@@ -7786,7 +9107,7 @@ def appl_cine_matr_prod(MATR_ASSE,**args):
   raise AsException("type de concept resultat non prevu")
 
 APPL_CINE_MATR=OPER(nom="APPL_CINE_MATR",op=158,sd_prod=appl_cine_matr_prod,
-               fr="Appliquer les C.L. cinématiques sur la matrice",
+               fr=tr("Appliquer les C.L. cinématiques sur la matrice"),
                reentrant='f', UIinfo={"groupes":("Résolution",)},
          MATR_ASSE       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
                                                matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
@@ -7813,7 +9134,7 @@ APPL_CINE_MATR=OPER(nom="APPL_CINE_MATR",op=158,sd_prod=appl_cine_matr_prod,
 # person_in_charge: jacques.pellet at edf.fr
 
 APPL_CINE_SCMB=OPER(nom="APPL_CINE_SCMB",op=159,sd_prod=cham_no_sdaster,reentrant='f',
-               fr="Application des C.L. cinématiques au second membre",
+               fr=tr("Application des C.L. cinématiques au second membre"),
                UIinfo={"groupes":("Résolution",)},
          CHAM_NO        =SIMP(statut='o',typ=cham_no_sdaster),
          MATR           =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
@@ -7860,7 +9181,7 @@ ASSE_ELEM_SSD=MACRO(nom="ASSE_ELEM_SSD",
                     op=OPS('Macro.asse_elem_ssd_ops.asse_elem_ssd_ops'),
                     sd_prod=asse_elem_ssd_prod,
                     reentrant='n',
-                    fr="Enchainer les commandes DEFI_MODELE_GENE, NUME_DDL_GENE et ASSE_MATR_GENE",
+                    fr=tr("Enchainer les commandes DEFI_MODELE_GENE, NUME_DDL_GENE et ASSE_MATR_GENE"),
                     UIinfo={"groupes":("Matrices/vecteurs",)},
 
 # pour les concepts de sortie
@@ -7868,9 +9189,9 @@ ASSE_ELEM_SSD=MACRO(nom="ASSE_ELEM_SSD",
                           regles=(PRESENT_PRESENT('RIGI_GENE','NUME_DDL_GENE'),
                                   PRESENT_PRESENT('MASS_GENE','NUME_DDL_GENE'),),
                               MODELE=SIMP(statut='o',typ=CO,defaut=None),
-                              NUME_DDL_GENE=SIMP(statut='f',typ=CO,defaut=None),
-                              RIGI_GENE=SIMP(statut='f',typ=CO,defaut=None),
-                              MASS_GENE=SIMP(statut='f',typ=CO,defaut=None),
+                              NUME_DDL_GENE=SIMP(statut='o',typ=CO,defaut=None),
+                              RIGI_GENE=SIMP(statut='o',typ=CO,defaut=None),
+                              MASS_GENE=SIMP(statut='o',typ=CO,defaut=None),
                            ),
 
         INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
@@ -7926,7 +9247,7 @@ ASSE_ELEM_SSD=MACRO(nom="ASSE_ELEM_SSD",
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster,
-                   fr="Assembler deux maillages pour en former un nouveau",
+                   fr=tr("Assembler deux maillages pour en former un nouveau"),
                    reentrant='n',
                    UIinfo={"groupes":("Maillage",)},
          MAILLAGE_1 =  SIMP(statut='o',typ=maillage_sdaster,),
@@ -7963,7 +9284,7 @@ def asse_matr_gene_prod(METHODE,**args):
     else : return matr_asse_gene_r
 
 ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod,
-                    fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée",
+                    fr=tr("Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
@@ -7998,7 +9319,7 @@ def asse_matrice_prod(MATR_ELEM,**args):
   raise AsException("type de concept resultat non prevu")
 
 ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
-                  fr="Construction d'une matrice assemblée",reentrant='n',
+                  fr=tr("Construction d'une matrice assemblée"),reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          MATR_ELEM       =SIMP(statut='o',
                                typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ),
@@ -8026,7 +9347,7 @@ ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
 # ======================================================================
 # person_in_charge: mathieu.corus at edf.fr
 ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
-                    fr="Projection des chargements sur la base modale d'une sous structure",
+                    fr=tr("Projection des chargements sur la base modale d'une sous structure"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
@@ -8058,7 +9379,7 @@ ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
 # person_in_charge: jacques.pellet at edf.fr
 
 ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster,
-                  fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n',
+                  fr=tr("Construire un champ aux noeuds par assemblage de vecteurs élémentaires"),reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          VECT_ELEM       =SIMP(statut='o',typ=vect_elem,max='**'),
          NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
@@ -8117,7 +9438,7 @@ ASSEMBLAGE=MACRO(nom="ASSEMBLAGE",
                       UIinfo={"groupes":("Matrices et vecteurs",)},
                       sd_prod=assemblage_prod,
                       regles=(AU_MOINS_UN('MATR_ASSE','VECT_ASSE'),),
-                      fr="Calcul des matrices et vecteurs assemblés ",
+                      fr=tr("Calcul des matrices et vecteurs assemblés "),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
          INST            =SIMP(statut='f',typ='R',defaut=0.),
@@ -8127,19 +9448,19 @@ ASSEMBLAGE=MACRO(nom="ASSEMBLAGE",
          NUME_DDL        =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)),
          SOLVEUR         =FACT(statut='d',
            METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
-         b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale",
+         b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr=tr("Paramètres associés à la méthode multifrontale"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
          ),
-         b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT",
+         b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr=tr("Paramètres associés à la méthode LDLT"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
-         b_mumps         =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+         b_mumps         =BLOC(condition = "METHODE == 'MUMPS' ",fr=tr("Paramètres de la méthode MUMPS"),
            RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")),
          ),
-         b_gcpc          =BLOC(condition="METHODE=='GCPC'",fr="Paramètres associés à la méthode gradient conjugué",
+         b_gcpc          =BLOC(condition="METHODE=='GCPC'",fr=tr("Paramètres associés à la méthode gradient conjugué"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
-         b_petsc         =BLOC(condition = "METHODE == 'PETSC'",fr="Paramètres de la méthode PETSC",
+         b_petsc         =BLOC(condition = "METHODE == 'PETSC'",fr=tr("Paramètres de la méthode PETSC"),
            RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
          ),
          ),
@@ -8172,16 +9493,16 @@ ASSEMBLAGE=MACRO(nom="ASSEMBLAGE",
          VECT_ASSE       =FACT(statut='f',max='**',
              VECTEUR         =SIMP(statut='o',typ=CO),             
              OPTION          =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_ACOU","CHAR_THER") ),
-           b_char_meca     =BLOC(condition = "OPTION == 'CHAR_MECA'", fr="chargement mécanique",
+           b_char_meca     =BLOC(condition = "OPTION == 'CHAR_MECA'", fr=tr("chargement mécanique"),
               CHARGE       =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
               MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
               ),
            
-           b_char_ther     =BLOC(condition = "OPTION=='CHAR_THER'", fr="chargement thermique",
+           b_char_ther     =BLOC(condition = "OPTION=='CHAR_THER'", fr=tr("chargement thermique"),
               CHARGE           =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**'),
               ),
 
-           b_char_acou     =BLOC(condition = "OPTION=='CHAR_ACOU'", fr="chargement acoustique",
+           b_char_acou     =BLOC(condition = "OPTION=='CHAR_ACOU'", fr=tr("chargement acoustique"),
               CHARGE           =SIMP(statut='f',typ=char_acou,validators=NoRepeat(),max='**'),
               ),
 #
@@ -8209,7 +9530,7 @@ ASSEMBLAGE=MACRO(nom="ASSEMBLAGE",
 # ======================================================================
 # person_in_charge: Georges-cc.devesa at edf.fr
 CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster,
-                     fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G",
+                     fr=tr("Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G"),
                      reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
        regles=(EXCLUS('AMOR_RAYLEIGH','ENER_SOL',),
@@ -8280,7 +9601,7 @@ CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster,
 # person_in_charge: josselin.delmas at edf.fr
 
 CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem,
-                    fr="Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés",
+                    fr=tr("Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés"),
                     reentrant='n',
             UIinfo={"groupes":("Résultats et champs","Post-traitements",)},
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
@@ -8335,13 +9656,13 @@ def calc_champ_prod(RESULTAT,**args):
 
 CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f',
                 UIinfo={"groupes":("Post traitements",)},
-                fr="Completer ou creer un resultat en calculant des champs par elements ou aux noeuds",
+                fr=tr("Completer ou creer un resultat en calculant des champs par elements ou aux noeuds"),
      MODELE           = SIMP(statut='f',typ=modele_sdaster),
      CHAM_MATER       = SIMP(statut='f',typ=cham_mater),
      CARA_ELEM        = SIMP(statut='f',typ=cara_elem),
 
      RESULTAT         = SIMP(statut='o',typ=resultat_sdaster,position='global',
-                             fr="Resultat d'une commande globale"),
+                             fr=tr("Resultat d'une commande globale")),
 
      regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
                     'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),
@@ -8364,14 +9685,14 @@ CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f',
      LIST_ORDRE       = SIMP(statut='f',typ=listis_sdaster),
 
      TOUT             = SIMP(statut='f',typ='TXM',into=("OUI",),
-                             fr="le calcul sera effectue sur toutes les mailles"),
+                             fr=tr("le calcul sera effectue sur toutes les mailles")),
      GROUP_MA         = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                             fr="le calcul ne sera effectue que sur ces groupes de mailles"),
+                             fr=tr("le calcul ne sera effectue que sur ces groupes de mailles")),
      MAILLE           = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**',
-                             fr="le calcul ne sera effectue que sur ces mailles"),
+                             fr=tr("le calcul ne sera effectue que sur ces mailles")),
 
      EXCIT       = FACT(statut='f',max='**',
-                        fr="Charges contenant les temperatures, les efforts repartis pour les poutres...",
+                        fr=tr("Charges contenant les temperatures, les efforts repartis pour les poutres..."),
                         regles=(EXCLUS('FONC_MULT','COEF_MULT',),),
          CHARGE       = SIMP(statut='o',typ=(char_meca,char_cine_meca),),
          FONC_MULT    = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),),
@@ -8382,51 +9703,51 @@ CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f',
      b_lineaire  = BLOC(condition = "AsType(RESULTAT) in (evol_elas,dyna_trans,dyna_harmo,mode_meca,\
                                                           comb_fourier,mult_elas,fourier_elas,mode_flamb)",
          CONTRAINTE   = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de contraintes et efforts generalises",
+                             fr=tr("Options pour le calcul de contraintes et efforts generalises"),
                              into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),),
 
          DEFORMATION  = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de deformations",
+                             fr=tr("Options pour le calcul de deformations"),
                              into=C_NOM_CHAM_INTO(phenomene='DEFORMATION',categorie='lin'),),
 
          ENERGIE      = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul d'energies",
+                             fr=tr("Options pour le calcul d'energies"),
                              into=C_NOM_CHAM_INTO(phenomene='ENERGIE',categorie='lin'),),
 
          CRITERES     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de criteres",
+                             fr=tr("Options pour le calcul de criteres"),
                              into=C_NOM_CHAM_INTO(phenomene='CRITERES',categorie='lin'),),
 
          VARI_INTERNE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de variables internes",
+                             fr=tr("Options pour le calcul de variables internes"),
                              into=C_NOM_CHAM_INTO(phenomene='VARI_INTERNE',categorie='lin'),),
                      ),
 
      # Bloc non-lineaire
      b_non_lin  = BLOC(condition = "AsType(RESULTAT) in (evol_noli,)",
          CONTRAINTE   = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de contraintes et efforts generalises",
+                             fr=tr("Options pour le calcul de contraintes et efforts generalises"),
                              into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='nonlin'),),
 
          DEFORMATION  = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de deformations",
+                             fr=tr("Options pour le calcul de deformations"),
                              into=C_NOM_CHAM_INTO(phenomene='DEFORMATION',categorie='nonlin'),),
 
          ENERGIE      = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul d'energies",
+                             fr=tr("Options pour le calcul d'energies"),
                              into=C_NOM_CHAM_INTO(phenomene='ENERGIE',categorie='nonlin'),),
 
          CRITERES     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de criteres",
+                             fr=tr("Options pour le calcul de criteres"),
                              into=C_NOM_CHAM_INTO(phenomene='CRITERES',categorie='nonlin'),),
 
          VARI_INTERNE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de variables internes",
+                             fr=tr("Options pour le calcul de variables internes"),
                              into=C_NOM_CHAM_INTO(phenomene='VARI_INTERNE',categorie='nonlin'),),
 
          b_nom_vari   = BLOC(condition = "au_moins_un(VARI_INTERNE, ('VAEX_ELNO','VAEX_ELGA','VAEX_NOEU'))",
              NOM_VARI = SIMP(statut='o',typ='TXM',min= 1,max='**',
-                             fr="nom de la variable a extraire",
+                             fr=tr("nom de la variable a extraire"),
                              into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX",
                                    "GAMP","PCR","SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV",
                                    "X11","X22","X33","X12","X13","X23","DIST_DEV","DEV_SUR_CRIT","DIST_ISO",
@@ -8436,44 +9757,44 @@ CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f',
                              ),),
 
          HYDRAULIQUE  = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour le calcul de flux hydraulique",
+                             fr=tr("Options pour le calcul de flux hydraulique"),
                              into=C_NOM_CHAM_INTO(phenomene='HYDRAULIQUE',categorie='nonlin'),),
                       ),
 
      # Bloc Thermique
      b_ther = BLOC(condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,
          THERMIQUE    = SIMP(statut='f',typ='TXM',validators=NoRepeat(), max='**',
-                             fr="Options pour le calcul de champs en thermique",
+                             fr=tr("Options pour le calcul de champs en thermique"),
                              into=C_NOM_CHAM_INTO(phenomene='THERMIQUE',),),
                   ),
 
      # Bloc acoustique
      b_acou = BLOC(condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,dyna_harmo)",
          ACOUSTIQUE   = SIMP(statut='f',typ='TXM',validators=NoRepeat(), max='**',
-                             fr="Options pour le calcul de champs en acoustique",
+                             fr=tr("Options pour le calcul de champs en acoustique"),
                              into=C_NOM_CHAM_INTO(phenomene='ACOUSTIQUE',),),
                   ),
 
      # Bloc FORC_NODA et REAC_NODA
      FORCE            = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
-                             fr="Options pour des forces nodales et des reactions nodales",
+                             fr=tr("Options pour des forces nodales et des reactions nodales"),
                              into=C_NOM_CHAM_INTO(phenomene='FORCE',),),
 
      # Mot-cle facteur CHAMp UTILisateur
      CHAM_UTIL = FACT(statut='f', max='**',
           regles = (UN_PARMI('FORMULE', 'CRITERE', 'NORME'), ),
           NOM_CHAM = SIMP(statut='o', typ='TXM',
-                          fr="Nom du champ utilisé en donnée",),
+                          fr=tr("Nom du champ utilisé en donnée"),),
           FORMULE  = SIMP(statut='f', typ=formule, max='**',
-                          fr="Formule permet d'obtenir le critère",),
+                          fr=tr("Formule permet d'obtenir le critère"),),
           CRITERE  = SIMP(statut='f', typ='TXM', max=1,
                           into=('TRACE', 'VMIS', 'INVA_2'),
-                          fr="Calcul d'un critère pré-défini",),
+                          fr=tr("Calcul d'un critère pré-défini"),),
           NORME    = SIMP(statut='f', typ='TXM', max=1,
                           into=('L2', 'FROBENIUS', ),
-                          fr="Calcul d'une norme pré-définie",),
+                          fr=tr("Calcul d'une norme pré-définie"),),
           NUME_CHAM_RESU = SIMP(statut='o', typ='I', val_min=1, val_max=20,
-                          fr="Numéro du champ produit. Exemple: 6 produit le champ UT06",),
+                          fr=tr("Numéro du champ produit. Exemple: 6 produit le champ UT06"),),
      ),
 
      INFO             = SIMP(statut='f',typ='I',defaut= 1,into=(1,2)),
@@ -8500,7 +9821,7 @@ CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f',
 # person_in_charge: jacques.pellet at edf.fr
 
 CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=cham_no_sdaster,
-                    fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)",
+                    fr=tr("Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
@@ -8531,11 +9852,11 @@ def calc_char_seisme_prod(MATR_MASS,**args ):
   raise AsException("type de concept resultat non prevu")
 
 CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op=  92,sd_prod=calc_char_seisme_prod,
-                      reentrant='n',fr="Calcul du chargement sismique",
+                      reentrant='n',fr=tr("Calcul du chargement sismique"),
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),),
-         MATR_MASS       =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ),
-         DIRECTION       =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"),
+         MATR_MASS       =SIMP(statut='o',typ=matr_asse_depl_r,fr=tr("Matrice de masse") ),
+         DIRECTION       =SIMP(statut='o',typ='R',max=6,fr=tr("Directions du séisme imposé")),
          MONO_APPUI      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
          MODE_STAT       =SIMP(statut='f',typ=(mode_meca,) ),
          b_mode_stat     =BLOC ( condition = "MODE_STAT != None",
@@ -8564,7 +9885,7 @@ CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op=  92,sd_prod=calc_char_seisme_pr
 # ======================================================================
 # person_in_charge: mathieu.corus at edf.fr
 CALC_CORR_SSD=OPER(nom="CALC_CORR_SSD",op=  91,sd_prod=table_container,
-                    fr="Qualite d'un modele reduit en dynamique",
+                    fr=tr("Qualite d'un modele reduit en dynamique"),
                     reentrant='n',
             UIinfo={"groupes":("Dynamique",)},
          MODELE_GENE    =SIMP(statut='o',typ=modele_gene),
@@ -8613,7 +9934,7 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",
                      op=OPS('Macro.calc_ecrevisse_ops.calc_ecrevisse_ops'),
                      sd_prod=calc_ecrevisse_prod,
                      reentrant='n',
-                     UIinfo={"groupes":("Outils-métier",)},fr="Procedure de couplage avec Ecrevisse",
+                     UIinfo={"groupes":("Outils-métier",)},fr=tr("Procedure de couplage avec Ecrevisse"),
                      regles   = (UN_PARMI('LOGICIEL','VERSION'),),
 
 #      CONCEPTS SORTANTS : 2 CHARGEMENTS THERMIQUE + 1 MECANIQUE + 2 TABLES POUR LE POST-TRAITEMENT
@@ -8647,28 +9968,28 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",
          FISSURE            =FACT(statut='o',min=1,max='**',
            PREFIXE_FICHIER     =SIMP(statut='f',typ='TXM',validators=LongStr(1,8),),
            GROUP_MA            =SIMP(statut='o',typ=grma,validators=NoRepeat(),min=2,max=2,
-                                     fr="Groupe(s) des noeuds definissant les levres de la fissure"),
+                                     fr=tr("Groupe(s) des noeuds definissant les levres de la fissure")),
            GROUP_NO_ORIG       =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2),
            GROUP_NO_EXTR       =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2),
-           ZETA                =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]" ),
-           RUGOSITE            =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]" ),
-           OUVERT_REMANENTE    =SIMP(statut='o',typ='R',val_min=0.,fr="Ouverture remanente"),
+           ZETA                =SIMP(statut='o',typ='R',fr=tr("Coefficient de la perte de charge singuliere a l'entree [zeta]") ),
+           RUGOSITE            =SIMP(statut='o',typ='R',fr=tr("Rugosite absolu (metres) [eps]") ),
+           OUVERT_REMANENTE    =SIMP(statut='o',typ='R',val_min=0.,fr=tr("Ouverture remanente")),
            TORTUOSITE          =SIMP(statut='f',typ='R',defaut=1.0, val_min=0., val_max=1.0,
-                                       fr="Coefficient de tortuosite de la fissure" ),
-           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]" ),
-           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique",
+                                       fr=tr("Coefficient de tortuosite de la fissure") ),
+           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr=tr("Type de section [is]") ),
+           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr=tr("Fissure a section elliptique"),
              LISTE_COTES_BL      =SIMP(statut='f',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant le petit axe de la section",
+                                       fr=tr("Liste des cotes des points definissant le petit axe de la section"),
                                        validators=NoRepeat() ),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant le petit axe de la section", ),
+                                       fr=tr("Liste des valeurs des points definissant le petit axe de la section"), ),
            ),
-           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire",
+           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr=tr("Fissure a section rectangulaire"),
              LISTE_COTES_BL      =SIMP(statut='f',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant la largeur de la section",
+                                       fr=tr("Liste des cotes des points definissant la largeur de la section"),
                                        validators=NoRepeat() ),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant la largeur de la section", ),
+                                       fr=tr("Liste des valeurs des points definissant la largeur de la section"), ),
            ),
          ),
 
@@ -8677,28 +9998,28 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",
 #      ********************************
 
          ECOULEMENT         =FACT(statut='o',min=1,max=1,
-           PRES_ENTREE         =SIMP(statut='o',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ),
-           PRES_SORTIE         =SIMP(statut='o',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ),
-           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ),
-           b_condition_1       =BLOC(condition="FLUIDE_ENTREE==1",fr="Eau sous-refroidie ou saturee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           PRES_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Pression de stagnation a l'entree (Pa) [pe]") ),
+           PRES_SORTIE         =SIMP(statut='o',typ='R',fr=tr("Pression de stagnation a la sortie (Pa) [ps]") ),
+           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr=tr("Condition du fluide a l'entree [iflow]") ),
+           b_condition_1       =BLOC(condition="FLUIDE_ENTREE==1",fr=tr("Eau sous-refroidie ou saturee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
-           b_condition_2       =BLOC(condition="FLUIDE_ENTREE==2",fr="Fluide diphasique",
-             TITR_MASS           =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
+           b_condition_2       =BLOC(condition="FLUIDE_ENTREE==2",fr=tr("Fluide diphasique"),
+             TITR_MASS           =SIMP(statut='o',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
            ),
-           b_condition_3       =BLOC(condition="FLUIDE_ENTREE==3",fr="Vapeur saturee ou surchauffee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           b_condition_3       =BLOC(condition="FLUIDE_ENTREE==3",fr=tr("Vapeur saturee ou surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
-           b_condition_4       =BLOC(condition="FLUIDE_ENTREE==4",fr="Air + vapeur surchauffee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
-             PRES_PART           =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+           b_condition_4       =BLOC(condition="FLUIDE_ENTREE==4",fr=tr("Air + vapeur surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
+             PRES_PART           =SIMP(statut='o',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
            ),
-           b_condition_5       =BLOC(condition="FLUIDE_ENTREE==5",fr="Air + vapeur saturee",
-             TITR_MASS           =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
-             PRES_PART           =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+           b_condition_5       =BLOC(condition="FLUIDE_ENTREE==5",fr=tr("Air + vapeur saturee"),
+             TITR_MASS           =SIMP(statut='o',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
+             PRES_PART           =SIMP(statut='o',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
            ),
-           b_condition_6       =BLOC(condition="FLUIDE_ENTREE==6",fr="Air seul",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           b_condition_6       =BLOC(condition="FLUIDE_ENTREE==6",fr=tr("Air seul"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
          ),
 
@@ -8708,22 +10029,22 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",
 
          MODELE_ECRE        =FACT(statut='o',min=1,max=1,
            IVENAC              =SIMP(statut='f', typ='I', into=(0,1), defaut=0,
-                                     fr="Calcul ECREVISSE avec prise en compte de la vena contracta"),
+                                     fr=tr("Calcul ECREVISSE avec prise en compte de la vena contracta")),
            ECOULEMENT          =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"),
-                                     fr="Type de modele d'ecoulement diphasique [imod]" ),
-           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele",
-             PRESS_EBULLITION    =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]" ),
+                                     fr=tr("Type de modele d'ecoulement diphasique [imod]") ),
+           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr=tr("Modele d'ecoulement gele"),
+             PRESS_EBULLITION    =SIMP(statut='o',typ='R',fr=tr("Pression d'ebullition [corrp*psat(t)]") ),
            ),
-           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr="Correlation de frottement [ifrot]" ),
-           b_frottement        =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele",
-             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]" ),
-             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]" ),
+           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr=tr("Correlation de frottement [ifrot]") ),
+           b_frottement        =BLOC(condition="FROTTEMENT<0",fr=tr("Modele d'ecoulement gele"),
+             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr=tr("Coefficient de Reynolds limite [relim]") ),
+             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr=tr("Coefficient de frottement impose [frtlim]") ),
            ),
 
-           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr="Transfert de chaleur [ichal]" ),
-           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique",
-             XMINCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"),
-             XMAXCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"),
+           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr=tr("Transfert de chaleur [ichal]") ),
+           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr=tr("Cas diphasique"),
+             XMINCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux min [xminch]")),
+             XMAXCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux max [xmaxch]")),
            ),
          ),
 
@@ -8733,18 +10054,18 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",
 
          CONVERGENCE        =FACT(statut='o',min=1,max=1,
            KGTEST              =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0,
-                                     fr="Parametre de l'algorithme iteratif [kgtest]" ),
+                                     fr=tr("Parametre de l'algorithme iteratif [kgtest]") ),
            ITER_GLOB_MAXI      =SIMP(statut='f',typ='I',defaut= 400,
-                                     fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ),
+                                     fr=tr("Nombre maximum d'iterations de la methode de Newton [itnmax]") ),
            CRIT_CONV_DEBI      =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5,
-                                     fr="Critere de convergence en debit [precdb]" ),
+                                     fr=tr("Critere de convergence en debit [precdb]") ),
          ),
 
 #      GENERAL
 #      *******
 
          COURBES            =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE",
-                                  fr="Generation eventuelle des courbes" ),
+                                  fr=tr("Generation eventuelle des courbes") ),
          LOGICIEL           =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),),
          VERSION            =SIMP(statut='f',typ='TXM',into = ("3.2.1",) ),
          ENTETE             =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ),
@@ -8776,12 +10097,12 @@ def calc_erreur_prod(RESULTAT,**args):
 
 CALC_ERREUR=OPER(nom="CALC_ERREUR",op=42,sd_prod=calc_erreur_prod,reentrant='f',
             UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
-            fr="Compléter ou créer un résultat en calculant des champs d'erreur",
+            fr=tr("Compléter ou créer un résultat en calculant des champs d'erreur"),
      MODELE          =SIMP(statut='f',typ=modele_sdaster),
      CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
 
      RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,
-                                      fr="Résultat d'une commande globale"),
+                                      fr=tr("Résultat d'une commande globale")),
 
      regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
                     'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),
@@ -8808,7 +10129,7 @@ CALC_ERREUR=OPER(nom="CALC_ERREUR",op=42,sd_prod=calc_erreur_prod,reentrant='f',
 #-----------------------------------------------------------------------
      CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
      EXCIT           =FACT(statut='f',max='**',
-                           fr="Charges contenant les températures, les efforts répartis pour les poutres...",
+                           fr=tr("Charges contenant les températures, les efforts répartis pour les poutres..."),
                            regles=(EXCLUS('FONC_MULT','COEF_MULT',),),
                     CHARGE          =SIMP(statut='o',typ=(char_meca,char_cine_meca),),
                     FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),),
@@ -8818,14 +10139,14 @@ CALC_ERREUR=OPER(nom="CALC_ERREUR",op=42,sd_prod=calc_erreur_prod,reentrant='f',
      OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(phenomene='ERREUR',),),
 
      b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM','QIRE_ELNO','QIRE_NOEU'))",
-                     RESU_DUAL=SIMP(statut='o',typ=resultat_sdaster,fr="Résultat du problème dual"),),
+                     RESU_DUAL=SIMP(statut='o',typ=resultat_sdaster,fr=tr("Résultat du problème dual")),),
 
      b_sing    =BLOC(condition= "au_moins_un(OPTION, 'SING_ELEM')",
                     PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,
-                                  fr="Précision demandée pour calculer la carte de taille des éléments"),
+                                  fr=tr("Précision demandée pour calculer la carte de taille des éléments")),
                     TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM",
                                                               "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",),
-                                   fr="Choix de l'estimateur d'erreur"),),
+                                   fr=tr("Choix de l'estimateur d'erreur")),),
 
 #-------------------------------------------------------------------
 #    Catalogue commun SOLVEUR (utilisé actuellement pour estimateur d'erreur ZZ1)
@@ -8891,7 +10212,7 @@ CALC_ESSAI = MACRO(nom       = 'CALC_ESSAI',
                    sd_prod   = calc_essai_prod,
                    reentrant = 'n',
                    UIinfo    = {"groupes":("Outils-métier","Dynamique",)},
-                   fr        = "Outil de post-traitement interactif pour Meidee ",
+                   fr        = tr("Outil de post-traitement interactif pour Meidee "),
                    INTERACTIF  = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ),
                    RESU_IDENTIFICATION = FACT( statut='f',max='**',
                                                TABLE = SIMP(statut='f', typ=CO),
@@ -8984,6 +10305,10 @@ def calc_essai_geomeca_prod(self,
                             ESSAI_TND,
                             ESSAI_CISA_C,
                             ESSAI_TND_C,
+                            ESSAI_TD_A,
+                            ESSAI_TD_NA,
+                            ESSAI_OEDO_C,
+                            ESSAI_ISOT_C,
                             #ESSAI_XXX,
                             **args):
   List_essais = []
@@ -8991,6 +10316,10 @@ def calc_essai_geomeca_prod(self,
   if ESSAI_TND    != None : List_essais += ESSAI_TND.List_F()
   if ESSAI_CISA_C != None : List_essais += ESSAI_CISA_C.List_F()
   if ESSAI_TND_C  != None : List_essais += ESSAI_TND_C.List_F()
+  if ESSAI_TD_A   != None : List_essais += ESSAI_TD_A.List_F()
+  if ESSAI_TD_NA   != None : List_essais += ESSAI_TD_NA.List_F()
+  if ESSAI_OEDO_C  != None : List_essais += ESSAI_OEDO_C.List_F()
+  if ESSAI_ISOT_C  != None : List_essais += ESSAI_ISOT_C.List_F()
   #if ESSAI_XXX    != None : List_essais += ESSAI_XXX.List_F()
   for DicoEssai in List_essais :
     if DicoEssai.has_key('TABLE_RESU'): 
@@ -9004,7 +10333,6 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                      sd_prod=calc_essai_geomeca_prod,
                      UIinfo={"groupes":("",)},
                      reentrant='n',
-                     fr="",
                      MATER       = SIMP(statut='o',typ=mater_sdaster),
                      COMPORTEMENT   = C_COMPORTEMENT(),
                      CONVERGENCE = C_CONVERGENCE(),
@@ -9014,6 +10342,10 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                                          'ESSAI_TND'   ,
                                          'ESSAI_CISA_C',
                                          'ESSAI_TND_C' ,
+                                         'ESSAI_TD_A' ,
+                                         'ESSAI_TD_NA' ,
+                                         'ESSAI_OEDO_C' ,
+                                         'ESSAI_ISOT_C' ,
                                          #'ESSAI_XXX'   ,
                                          ),),
                      # ---
@@ -9024,11 +10356,12 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                           PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
                           EPSI_IMPOSE = SIMP(statut='o',typ='R',max='**',),
                           NB_INST     = SIMP(statut='f',typ='I',val_min=100,defaut=100),
+                          KZERO      = SIMP(statut='f',typ='R',defaut=1.,),
 
                           TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
                           GRAPHIQUE   = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
-                                             into=  ('P-Q','EPS_AXI-Q','EPS_AXI-EPS_VOL',),
-                                             defaut=('P-Q','EPS_AXI-Q','EPS_AXI-EPS_VOL',),),
+                                             into=  ('P-Q','EPS_AXI-Q','EPS_AXI-EPS_VOL','P-EPS_VOL',),
+                                             defaut=('P-Q','EPS_AXI-Q','EPS_AXI-EPS_VOL','P-EPS_VOL',),),
                           TABLE_REF   = SIMP(statut='f',typ=table_sdaster,max='**',),
 
                                       ),
@@ -9041,6 +10374,7 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                           PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
                           EPSI_IMPOSE = SIMP(statut='o',typ='R',max='**',),
                           BIOT_COEF   = SIMP(statut='f',typ='R',defaut=1.,),
+                          KZERO      = SIMP(statut='f',typ='R',defaut=1.,),
                           NB_INST     = SIMP(statut='f',typ='I',val_min=100,defaut=100),
 
                           TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
@@ -9056,40 +10390,123 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                      # ---
                      ESSAI_CISA_C = FACT(statut='f',max='**',
  
+                          PRES_CONF    = SIMP(statut='o',typ='R',max='**',),
+                          GAMMA_IMPOSE = SIMP(statut='o',typ='R',max='**',),
+                          GAMMA_ELAS   = SIMP(statut='f',typ='R',defaut=1.E-7,val_max=1.E-7),
+                          NB_CYCLE     = SIMP(statut='o',typ='I',val_min=1),
+                          KZERO        = SIMP(statut='f',typ='R',defaut=1.,),
+                          NB_INST      = SIMP(statut='f',typ='I',val_min=25,defaut=25),
+
+                          TABLE_RESU   = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
+                          GRAPHIQUE    = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                                             into=  ('GAMMA-SIGXY','GAMMA-G','GAMMA-D','G-D',),
+                                             defaut=('GAMMA-SIGXY','GAMMA-G','GAMMA-D','G-D',),),
+                          TABLE_REF    = SIMP(statut='f',typ=table_sdaster,max='**',),
+
+                                      ),
+
+                     # ---
+                     #  Essai Triaxial Non Draine Cyclique ('TND_C')
+                     # ---
+                     ESSAI_TND_C = FACT(statut='f',max='**',
+                          PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
+                          SIGM_IMPOSE = SIMP(statut='o',typ='R',max='**',),
+                          BIOT_COEF   = SIMP(statut='f',typ='R',defaut=1.,),
+                          KZERO      = SIMP(statut='f',typ='R',defaut=1.,),
+                          UN_SUR_K    = SIMP(statut='o',typ='R',),
+                          RU_MAX      = SIMP(statut='f',typ='R',defaut=0.8,),
+                          NB_CYCLE    = SIMP(statut='o',typ='I',val_min=1),
+                          NB_INST     = SIMP(statut='f',typ='I',val_min=25,defaut=25),
+
+                          TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
+                          GRAPHIQUE   = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                                             into=  ('NCYCL-DSIGM','P-Q','SIG_AXI-PRE_EAU','EPS_AXI-PRE_EAU','EPS_AXI-Q',),
+                                             defaut=('NCYCL-DSIGM','P-Q','SIG_AXI-PRE_EAU','EPS_AXI-PRE_EAU','EPS_AXI-Q',),),
+                          TABLE_REF   = SIMP(statut='f',typ=table_sdaster,max='**',),
+
+                                      ),
+                                      
+                     # ---
+                     # Essai Triaxial Draine Cylique Alterné ('TD_A')
+                     # ---
+                     ESSAI_TD_A = FACT(statut='f',max='**',
                           PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
                           EPSI_IMPOSE = SIMP(statut='o',typ='R',max='**',),
                           EPSI_ELAS   = SIMP(statut='f',typ='R',defaut=1.E-7,val_max=1.E-7),
-                          NB_CYCLE    = SIMP(statut='o',typ='I',val_min=1),
                           NB_INST     = SIMP(statut='f',typ='I',val_min=25,defaut=25),
+                          NB_CYCLE    = SIMP(statut='o',typ='I',val_min=1),
+                          KZERO       = SIMP(statut='f',typ='R',defaut=1.,),
 
                           TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
                           GRAPHIQUE   = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
-                                             into=  ('EPSXY-SIGXY','EPSXY-G','EPSXY-D',),
-                                             defaut=('EPSXY-SIGXY','EPSXY-G','EPSXY-D',),),
+                                             into=  ('P-Q','EPS_AXI-Q','EPS_VOL-Q','EPS_AXI-EPS_VOL','P-EPS_VOL','EPSI-E'),
+                                             defaut=('P-Q','EPS_AXI-Q','EPS_VOL-Q','EPS_AXI-EPS_VOL','P-EPS_VOL','EPSI-E'),),
                           TABLE_REF   = SIMP(statut='f',typ=table_sdaster,max='**',),
 
                                       ),
 
                      # ---
-                     #  Essai Triaxial Non Draine Cyclique ('TND_C')
+                     # Essai Triaxial Draine Cylique non Alterné ('TD_NA')
                      # ---
-                     ESSAI_TND_C = FACT(statut='f',max='**',
+                     ESSAI_TD_NA = FACT(statut='f',max='**',
  
                           PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
-                          SIGM_IMPOSE = SIMP(statut='o',typ='R',max='**',),
-                          BIOT_COEF   = SIMP(statut='f',typ='R',defaut=1.,),
-                          UN_SUR_K    = SIMP(statut='o',typ='R',),
-                          NB_CYCLE    = SIMP(statut='o',typ='I',val_min=1),
+                          EPSI_IMPOSE = SIMP(statut='o',typ='R',max='**',),
+                          EPSI_ELAS   = SIMP(statut='f',typ='R',defaut=1.E-7,val_max=1.E-7),
                           NB_INST     = SIMP(statut='f',typ='I',val_min=25,defaut=25),
+                          NB_CYCLE    = SIMP(statut='o',typ='I',val_min=1),
+                          KZERO       = SIMP(statut='f',typ='R',defaut=1.,),
 
                           TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
                           GRAPHIQUE   = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
-                                             into=  ('NCYCL-DSIGM','P-Q','SIG_AXI-PRE_EAU',),
-                                             defaut=('NCYCL-DSIGM','P-Q','SIG_AXI-PRE_EAU',),),
+                                             into=  ('P-Q','EPS_AXI-Q','EPS_VOL-Q','EPS_AXI-EPS_VOL','P-EPS_VOL','EPSI-E'),
+                                             defaut=('P-Q','EPS_AXI-Q','EPS_VOL-Q','EPS_AXI-EPS_VOL','P-EPS_VOL','EPSI-E'),),
                           TABLE_REF   = SIMP(statut='f',typ=table_sdaster,max='**',),
 
                                       ),
 
+                     # ---
+                     #  Essai Oedometrique Draine Cyclique  ('OEDO_C')
+                     # ---
+                     ESSAI_OEDO_C = FACT(statut='f',max='**',
+                    
+                          PRES_CONF   = SIMP(statut='o',typ='R',max='**',),
+                          SIGM_IMPOSE = SIMP(statut='o',typ='R',max='**',),
+                          SIGM_DECH   = SIMP(statut='o',typ='R',max='**',),
+                          KZERO       = SIMP(statut='f',typ='R',defaut=1.,),
+                          NB_INST     = SIMP(statut='f',typ='I',val_min=25,defaut=25),                          
+                     
+                          TABLE_RESU  = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
+                          GRAPHIQUE   = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                                             into=  ('P-EPS_VOL','SIG_AXI-EPS_VOL'),
+                                             defaut=('P-EPS_VOL','SIG_AXI-EPS_VOL'),),
+                          TABLE_REF   = SIMP(statut='f',typ=table_sdaster,max='**',),
+                     
+                                      ),
+                                      
+                     # ---
+                     #  Essai De Comsolidation Isotrope Drainee Cyclique  ('ISOT_C')
+                     # ---
+                     ESSAI_ISOT_C = FACT(statut='f',max='**',
+                    
+                          PRES_CONF    = SIMP(statut='o',typ='R',max='**',),
+                          SIGM_IMPOSE = SIMP(statut='o',typ='R',max='**',),
+                          SIGM_DECH   = SIMP(statut='o',typ='R',max='**',),
+                          KZERO      = SIMP(statut='f',typ='R',defaut=1.,),
+                          NB_INST     = SIMP(statut='f',typ='I',val_min=25,defaut=25),                          
+                     
+                          TABLE_RESU = SIMP(statut='f',typ=CO,max='**',validators=NoRepeat(),),
+                          GRAPHIQUE  = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                                             into=  ('P-EPS_VOL'),
+                                             defaut=('P-EPS_VOL'),),
+                          TABLE_REF  = SIMP(statut='f',typ=table_sdaster,max='**',),
+                     
+                                      ),
+                     
+
+
                      # ---
                      #  Essai ... ('XXX')
                      # ---
@@ -9109,7 +10526,7 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
                     INFO = SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),)
 
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
@@ -9124,7 +10541,7 @@ CALC_ESSAI_GEOMECA = MACRO(nom="CALC_ESSAI_GEOMECA",
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
-# person_in_charge: aimery.assire at edf.fr
+# person_in_charge: serguei.potapov at edf.fr
 
 def calc_europlexus_prod(self,COURBE=None,**args):
   if COURBE is not None:
@@ -9136,14 +10553,14 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",
                         sd_prod=calc_europlexus_prod,
                         reentrant='n',
                         UIinfo={"groupes":("Outils-métier","Dynamique",)},
-                        fr="Chainage Code_Aster-Europlexus",
-                        regles=(PRESENT_ABSENT('ETAT_INIT','MODELE'),
+                        fr=tr("Chainage Code_Aster-Europlexus"),
+                        regles=(UN_PARMI('ETAT_INIT','MODELE'),
                                 PRESENT_ABSENT('ETAT_INIT','CARA_ELEM'),
-                                PRESENT_ABSENT('ETAT_INIT','CHAM_MATER'),
+                                UN_PARMI('ETAT_INIT','CHAM_MATER'),
                                 EXCLUS('ETAT_INIT','FONC_PARASOL'),
                                 AU_MOINS_UN('COMPORTEMENT'),),
-        LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/bin/europlexus'),
-        LANCEMENT = SIMP(statut='f', typ='TXM', defaut='OUI',into=('OUI','NON')),
+        LOGICIEL = SIMP(statut='f', typ='TXM'),
+        LANCEMENT = SIMP(statut='o', typ='TXM', defaut='OUI',into=('OUI','NON')),
 
         ETAT_INIT = FACT(statut='f',
            RESULTAT    = SIMP(statut='o',typ=evol_noli),
@@ -9156,13 +10573,13 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",
         MODELE     = SIMP(statut='f',typ=modele_sdaster),
         CARA_ELEM  = SIMP(statut='f',typ=cara_elem),
 
-        FONC_PARASOL = FACT(statut='f',
-           regles=(PRESENT_PRESENT('NFKT','NFKR'),),
+        FONC_PARASOL = FACT(statut='f',max='**',
+           regles=(PRESENT_PRESENT('NFKT','NFKR'),AU_MOINS_UN('NFKT','NFAT'),),
            NFKT       = SIMP(statut='f',typ=(fonction_sdaster,)),
            NFKR       = SIMP(statut='f',typ=(fonction_sdaster,)),
            NFAT       = SIMP(statut='f',typ=(fonction_sdaster,)),
            NFAR       = SIMP(statut='f',typ=(fonction_sdaster,)),
-           GROUP_MA   = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           GROUP_MA   = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            ),
 
 
@@ -9174,33 +10591,6 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",
            FONC_MULT      = SIMP(statut='f',typ=(fonction_sdaster,)),
           ),
 
-        DIME = FACT(statut='f', regles=(AU_MOINS_UN('UNITE_DIME','Q4GS','FORCE',
-                                                    'PT6L','ZONE','POUT','ECRO',
-                                                    'APPU','BLOQ','PRESS','PMAT',
-                                                    'DKT3','DEPL','FNOM','TABLE','FTAB',
-                                                    'MTTI','NEPE','LIAI',), ),
-           UNITE_DIME=SIMP(statut='f',typ='I'),
-
-           Q4GS  = SIMP(statut='f',typ='I'),
-           FORCE = SIMP(statut='f',typ='I'),
-           PT6L  = SIMP(statut='f',typ='I'),
-           ZONE  = SIMP(statut='f',typ='I'),
-           POUT  = SIMP(statut='f',typ='I'),
-           ECRO  = SIMP(statut='f',typ='I'),
-           APPU  = SIMP(statut='f',typ='I'),
-           BLOQ  = SIMP(statut='f',typ='I'),
-           PRESS = SIMP(statut='f',typ='I',min=2,max=2,),
-           PMAT  = SIMP(statut='f',typ='I'),
-           DKT3  = SIMP(statut='f',typ='I'),
-           DEPL  = SIMP(statut='f',typ='I'),
-           FNOM  = SIMP(statut='f',typ='I'),
-           TABLE = SIMP(statut='f',typ='I',min=2,max=2,),
-           FTAB  = SIMP(statut='f',typ='I'),
-           MTTI  = SIMP(statut='f',typ='I'),
-           NEPE  = SIMP(statut='f',typ='I'),
-           LIAI  = SIMP(statut='f',typ='I'),
-             ),
-
         CALCUL = FACT(statut='o',
            TYPE_DISCRETISATION  = SIMP(statut='o',typ='TXM',defaut='AUTO',into=('AUTO','UTIL')),
            INST_FIN             = SIMP(statut='o',typ='R'),
@@ -9218,14 +10608,12 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",
            ),
 
 
-        OBSERVATION     =FACT(statut='f',max='**',
-           SUIVI_DDL       = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")),
-        b_suivi          =BLOC(condition = "SUIVI_DDL == 'OUI' ",
-                               regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',),
-                                        EXCLUS('PAS_NBRE','PAS_INST',),
+        OBSERVATION     =FACT(statut='f',max=1,
+                            regles=( UN_PARMI('PAS_NBRE','PAS_INST',),
+                                     AU_MOINS_UN('GROUP_NO','TOUT_GROUP_NO','GROUP_MA','TOUT_GROUP_MA',),
                                         EXCLUS('GROUP_NO','TOUT_GROUP_NO',),
                                         EXCLUS('GROUP_MA','TOUT_GROUP_MA',), ),
-           NOM_CHAM        = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut=('DEPL',),into=('DEPL'
+           NOM_CHAM        = SIMP(statut='f',typ='TXM',validators=NoRepeat(),min=1, max='**',defaut=('DEPL',),into=('DEPL'
                                          ,'VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),),
            PAS_INST        = SIMP(statut='f',typ='R'),
            PAS_NBRE        = SIMP(statut='f',typ='I'),
@@ -9233,18 +10621,15 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",
            GROUP_MA        = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            TOUT_GROUP_NO   = SIMP(statut='f',typ='TXM',into=('OUI',),),
            TOUT_GROUP_MA   = SIMP(statut='f',typ='TXM',into=('OUI',),),
-                             ),
         ),
 
 
-        ARCHIVAGE        =FACT(statut='o', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ),
+        ARCHIVAGE        =FACT(statut='o', regles=( UN_PARMI('PAS_NBRE','PAS_INST',),),
            PAS_INST     = SIMP(statut='f',typ='R'),
            PAS_NBRE     = SIMP(statut='f',typ='I'),
-           CONT_GENER   = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")),
                              ),
         COURBE  =  FACT(statut='f',max='**', regles=(EXCLUS('GROUP_NO','GROUP_MA')),
-           UNITE_ALIT = SIMP(statut='f',typ='I'),
-            NOM_CHAM   = SIMP(statut='f',typ='TXM'),
+            NOM_CHAM   = SIMP(statut='f',typ='TXM', into=('DEPL','VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA')),
             NOM_CMP    = SIMP(statut='f',typ='TXM'),
 #             NOEUD      = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
 #             MAILLE     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
@@ -9299,15 +10684,15 @@ def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args):
   raise AsException("type de calcul non prevu")
 
 CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n',
-                  fr="Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique"
-                      +" dans lequel le cisaillement est maximal.",
+                  fr=tr("Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique"
+                        " dans lequel le cisaillement est maximal."),
             UIinfo={"groupes":("Post-traitements","Rupture",)},
 
          TYPE_CALCUL = SIMP(statut='o',typ='TXM',
                                into=("CUMUL_DOMMAGE","FATIGUE_MULTI","FATIGUE_VIBR") ),
 
          b_cumul_domma   =BLOC(condition = "TYPE_CALCUL == 'CUMUL_DOMMAGE'",
-                               fr="Calcul d un champ de dommage subi par une structure.",
+                               fr=tr("Calcul d un champ de dommage subi par une structure."),
            regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),),
            OPTION          =SIMP(statut='o',typ='TXM',
                                  into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM",
@@ -9315,7 +10700,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
                                        "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ),
 
              b_sigm   =BLOC(condition = "OPTION == 'DOMA_ELNO_SIGM' or OPTION == 'DOMA_ELGA_SIGM'",
-                               fr="Calcul a partir d un champ de contraintes.",
+                               fr=tr("Calcul a partir d un champ de contraintes."),
                HISTOIRE        =FACT(statut='o',
                RESULTAT        =SIMP(statut='o',typ=(evol_elas,dyna_trans,
                                                    evol_noli) ),
@@ -9324,7 +10709,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
                                    ),
                            ),
              b_epsi   =BLOC(condition = "OPTION != 'DOMA_ELNO_SIGM' and OPTION != 'DOMA_ELGA_SIGM'",
-                               fr="Calcul a partir d un champ de déformations.",
+                               fr=tr("Calcul a partir d un champ de déformations."),
                HISTOIRE        =FACT(statut='o',
                RESULTAT        =SIMP(statut='o',typ=(evol_elas,dyna_trans,
                                                    evol_noli) ),
@@ -9341,7 +10726,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
          ),
 
          b_domma_moda   =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_VIBR'",
-                               fr="Calcul d un champ de dommage en dynamique vibratoire",
+                               fr=tr("Calcul d un champ de dommage en dynamique vibratoire"),
            regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),),
            OPTION          =SIMP(statut='o',typ='TXM',
                                  into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM",) ),
@@ -9360,7 +10745,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
          ),
 
          b_fatigue_multi   =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_MULTI'",
-                                 fr="Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles.",
+                                 fr=tr("Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles."),
            TYPE_CHARGE   =SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE") ),
            OPTION        =SIMP(statut='o',typ='TXM',into=("DOMA_ELGA","DOMA_NOEUD") ),
            RESULTAT      =SIMP(statut='o',typ=(evol_elas, evol_noli) ),
@@ -9381,7 +10766,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
                
                b_fati_pf  =BLOC(condition = "(CRITERE == 'FORMULE_CRITERE')",
                    FORMULE_GRDEQ   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-                   COURBE_GRD_VIE  = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_C","FORM_VIE") ),
+                   COURBE_GRD_VIE  = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_COFFIN","FORM_VIE") ),
                    FORMULE_CRITIQUE = SIMP(statut='f',typ=(fonction_sdaster,formule) ),
                    b_fati_pfvie  = BLOC(condition = "(COURBE_GRD_VIE == 'FORM_VIE')",
                         FORMULE_VIE   =SIMP(statut='o',typ=(fonction_sdaster,formule) ),
@@ -9406,7 +10791,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
                ),
                b_fati_npf  =BLOC(condition = "(CRITERE == 'FORMULE_CRITERE')",
                    FORMULE_GRDEQ   =SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-                   COURBE_GRD_VIE  = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_C","FORM_VIE") ),
+                   COURBE_GRD_VIE  = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_COFFIN","FORM_VIE") ),
                    b_fati_npfvie  = BLOC(condition = "(COURBE_GRD_VIE == 'FORM_VIE')",
                         FORMULE_VIE   =SIMP(statut='o',typ=(fonction_sdaster,formule) ),
                   ),
@@ -9442,7 +10827,7 @@ def calc_ferraillage_prod(RESULTAT,**args):
 
 CALC_FERRAILLAGE=OPER(nom="CALC_FERRAILLAGE",op=175,sd_prod=calc_ferraillage_prod, reentrant='o',
             UIinfo={"groupes":("Post-traitements","Outils-métier",)},
-                 fr="calcul de cartes de densité de ferraillage ",
+                 fr=tr("calcul de cartes de densité de ferraillage "),
 
          RESULTAT        =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,) ),
 
@@ -9531,10 +10916,10 @@ CALC_FERRAILLAGE=OPER(nom="CALC_FERRAILLAGE",op=175,sd_prod=calc_ferraillage_pro
 # person_in_charge: andre.adobes at edf.fr
 CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster,
                     reentrant='n',
-                    fr="Calculer les paramètres modaux d'une structure soumise à un écoulement",
+                    fr=tr("Calculer les paramètres modaux d'une structure soumise à un écoulement"),
             UIinfo={"groupes":("Matrices et vecteurs",)},
          VITE_FLUI       =FACT(statut='f',
-                               fr="Définir la plage de vitesse fluide étudiée",
+                               fr=tr("Définir la plage de vitesse fluide étudiée"),
            VITE_MIN        =SIMP(statut='f',typ='R' ),
            VITE_MAX        =SIMP(statut='f',typ='R' ),
            NB_POIN         =SIMP(statut='f',typ='I' ),
@@ -9550,7 +10935,7 @@ CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster,
          ),
          TYPE_FLUI_STRU  =SIMP(statut='o',typ=type_flui_stru ),
          IMPRESSION      =FACT(statut='f',
-                               fr="Choix des informations à imprimer dans le fichier RESULTAT",
+                               fr=tr("Choix des informations à imprimer dans le fichier RESULTAT"),
            PARA_COUPLAGE   =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            DEFORMEE        =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
          ),
@@ -9590,7 +10975,7 @@ def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args):
 
 CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod,
                       docu="U4.32.01",reentrant='n',
-           fr="Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables",
+           fr=tr("Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables"),
            UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('VALE_PARA','LIST_PARA'),),
          FONCTION        =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ),
@@ -9684,128 +11069,128 @@ def calc_fonction_prod(self, DERIVE, EXTRACTION, INTEGRE, INVERSE, COMB, COMB_C,
 CALC_FONCTION=MACRO(nom="CALC_FONCTION",
                     op=OPS('Macro.calc_fonction_ops.calc_fonction_ops'),
                     sd_prod=calc_fonction_prod,
-                    fr="Effectue des opérations mathématiques sur des concepts de type fonction",
+                    fr=tr("Effectue des opérations mathématiques sur des concepts de type fonction"),
                     reentrant='n',
                     UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('DERIVE', 'INTEGRE', 'SPEC_OSCI', 'DSP', 'FFT', 'CORR_ACCE',
                           'COMB', 'COMB_C', 'MULT', 'ASSE', 'INVERSE', 'ABS',
                           'ENVELOPPE', 'COMPOSE', 'EXTRACTION', 'PUISSANCE', 
                           'LISS_ENVELOP', 'FRACTILE', 'REGR_POLYNOMIALE'),),
-         FFT             =FACT(statut='f',fr="Transformée de Fourier ou de son inverse",
+         FFT             =FACT(statut='f',fr=tr("Transformée de Fourier ou de son inverse"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ),
            METHODE         =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE","COMPLET") ),
            b_syme          =BLOC ( condition = " AsType(FONCTION)==fonction_c ",
              SYME           =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ),
            ),
          ),
-         DERIVE          =FACT(statut='f',fr="Dérivée d une fonction",
+         DERIVE          =FACT(statut='f',fr=tr("Dérivée d une fonction"),
            METHODE         =SIMP(statut='f',typ='TXM',defaut="DIFF_CENTREE",into=("DIFF_CENTREE",) ),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
          ),
-         INTEGRE         =FACT(statut='f',fr="Intégrale d'une fonction",
+         INTEGRE         =FACT(statut='f',fr=tr("Intégrale d'une fonction"),
            METHODE         =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster),
-           COEF            =SIMP(statut='f',typ='R',defaut= 0.E+0,fr="Valeur de la constante d intégration" ),
+           COEF            =SIMP(statut='f',typ='R',defaut= 0.E+0,fr=tr("Valeur de la constante d intégration") ),
          ),
-         LISS_ENVELOP    = FACT(statut='f',fr="Lissage d une enveloppe",
+         LISS_ENVELOP    = FACT(statut='f',fr=tr("Lissage d une enveloppe"),
            NAPPE           =SIMP(statut='o',typ=nappe_sdaster ),
            FREQ_MIN        =SIMP(statut='f',typ='R',defaut =0.2),
            FREQ_MAX        =SIMP(statut='f',typ='R',defaut =35.5),
            ELARG           =SIMP(statut='f',typ='R',defaut =0.1 ),
            TOLE_LISS       =SIMP(statut='f',typ='R',defaut =0.25 ),
          ),
-         REGR_POLYNOMIALE = FACT(statut='f',fr="Régression polynomiale d'une fonction",
+         REGR_POLYNOMIALE = FACT(statut='f',fr=tr("Régression polynomiale d'une fonction"),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster),
            DEGRE           =SIMP(statut='o',typ='I'),
          ),
-        SPEC_OSCI       =FACT(statut='f',fr="Spectre d'oscillateur",
+        SPEC_OSCI       =FACT(statut='f',fr=tr("Spectre d'oscillateur"),
            METHODE         =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM","HARMO","RICE") ),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
            AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
            LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
            FREQ            =SIMP(statut='f',typ='R',  max='**'),
-           NORME           =SIMP(statut='o',typ='R',fr="Valeur de la norme du spectre d oscillateur" ),
+           NORME           =SIMP(statut='o',typ='R',fr=tr("Valeur de la norme du spectre d oscillateur") ),
            NATURE          =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ),
            b_methode       =BLOC(condition = "METHODE !='RICE' ",
              NATURE_FONC     =SIMP(statut='f', typ='TXM', defaut="ACCE", into=("ACCE",),),),
            b_rice          =BLOC(condition = "METHODE =='RICE' ",
              DUREE           =SIMP(statut='o', typ='R', val_min=0.,
-                                 fr="durée de la phase forte pour facteur de pic"),
+                                 fr=tr("durée de la phase forte pour facteur de pic")),
              NATURE_FONC     =SIMP(statut='f', typ='TXM', defaut="DSP", into=("DSP",),),),
          ),
-         DSP             =FACT(statut='f', fr="Densité spectrale",
+         DSP             =FACT(statut='f', fr=tr("Densité spectrale"),
            FONCTION        =SIMP(statut='o', typ=fonction_sdaster ),
            AMOR_REDUIT     =SIMP(statut='o', typ='R', val_min=0., val_max=1.),
            NORME           =SIMP(statut='o', typ='R'),
            LIST_FREQ       =SIMP(statut='f', typ=listr8_sdaster ),
            FREQ_PAS            =SIMP(statut='f', typ='R'),
                 regles=(UN_PARMI('FREQ_PAS','LIST_FREQ'),),
-           FREQ_COUP       =SIMP(statut='o', typ='R', fr="fréquence de coupure" ),
+           FREQ_COUP       =SIMP(statut='o', typ='R', fr=tr("fréquence de coupure") ),
            DUREE           =SIMP(statut='o', typ='R', val_min=0.,
-                                 fr="durée de la phase forte pour facteur de peak"),
-           FRACT           =SIMP(statut='o', typ='R', defaut=0.5, val_min=0., val_max=1., fr="fractile" ),
+                                 fr=tr("durée de la phase forte pour facteur de peak")),
+           FRACT           =SIMP(statut='o', typ='R', defaut=0.5, val_min=0., val_max=1., fr=tr("fractile") ),
          ),
-         ABS             =FACT(statut='f',fr="Valeur absolue d'une fonction",
+         ABS             =FACT(statut='f',fr=tr("Valeur absolue d'une fonction"),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster,),
          ),
-         COMB            =FACT(statut='f',max='**',fr="Combinaison linéaire réelle de fonctions",
+         COMB            =FACT(statut='f',max='**',fr=tr("Combinaison linéaire réelle de fonctions"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
-           COEF            =SIMP(statut='o',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
+           COEF            =SIMP(statut='o',typ='R',fr=tr("Coefficient réel de la combinaison linéaire associée à la fonction") ),
          ),
-         COMB_C          =FACT(statut='f',max='**',fr="Combinaison linéaire complexe de fonctions",
+         COMB_C          =FACT(statut='f',max='**',fr=tr("Combinaison linéaire complexe de fonctions"),
            regles=(UN_PARMI('COEF_R','COEF_C'),),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster) ),
-           COEF_R          =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
-           COEF_C          =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ),
+           COEF_R          =SIMP(statut='f',typ='R',fr=tr("Coefficient réel de la combinaison linéaire associée à la fonction") ),
+           COEF_C          =SIMP(statut='f',typ='C',fr=tr("Coefficient complexe de la combinaison linéaire associée à la fonction") ),
          ),
-         MULT            =FACT(statut='f',max='**',fr="Produit de fonctions réelles",
+         MULT            =FACT(statut='f',max='**',fr=tr("Produit de fonctions réelles"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster) ),
          ),
          b_comb          =BLOC ( condition = "COMB != None or COMB_C != None " \
                                              "or REGR_POLYNOMIALE != None or MULT != None",
              LIST_PARA      =SIMP(statut='f',typ=listr8_sdaster ),
          ),
-         COMPOSE         =FACT(statut='f',fr="Composition de deux fonctions FONC_RESU(FONC_PARA)",
+         COMPOSE         =FACT(statut='f',fr=tr("Composition de deux fonctions FONC_RESU(FONC_PARA)"),
            FONC_RESU       =SIMP(statut='o',typ=fonction_sdaster),
            FONC_PARA       =SIMP(statut='o',typ=fonction_sdaster),
          ),
-         EXTRACTION      =FACT(statut='f',fr="Extraction sur une fonction complexe",
+         EXTRACTION      =FACT(statut='f',fr=tr("Extraction sur une fonction complexe"),
            FONCTION        =SIMP(statut='o',typ=fonction_c),
-           PARTIE          =SIMP(statut='o',typ='TXM',into=("REEL","IMAG","MODULE","PHASE"),fr="Partie à extraire"),
+           PARTIE          =SIMP(statut='o',typ='TXM',into=("REEL","IMAG","MODULE","PHASE"),fr=tr("Partie à extraire")),
          ),
-         ENVELOPPE       =FACT(statut='f',fr="Enveloppe d une famille de fonctions",
+         ENVELOPPE       =FACT(statut='f',fr=tr("Enveloppe d une famille de fonctions"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="SUP",into=("SUP","INF"),fr="Type de l enveloppe" ),
+           CRITERE         =SIMP(statut='f',typ='TXM',defaut="SUP",into=("SUP","INF"),fr=tr("Type de l enveloppe") ),
          ),
-         FRACTILE        =FACT(statut='f',fr="Fractile d une famille de fonctions ou de nappes",
+         FRACTILE        =FACT(statut='f',fr=tr("Fractile d une famille de fonctions ou de nappes"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
-           FRACT           =SIMP(statut='o',typ='R',defaut=1.,val_min=0.,val_max=1.,fr="Valeur du fractile" ),
+           FRACT           =SIMP(statut='o',typ='R',defaut=1.,val_min=0.,val_max=1.,fr=tr("Valeur du fractile") ),
          ),
-         ASSE            =FACT(statut='f',fr="Concatenation de fonctions",
+         ASSE            =FACT(statut='f',fr=tr("Concatenation de fonctions"),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster,min=2,max=2 ),
            SURCHARGE       =SIMP(statut='f',typ='TXM',defaut="DROITE",into=("DROITE","GAUCHE")),
          ),
-         CORR_ACCE       =FACT(statut='f',fr="Correction d un accelerogramme reel",
+         CORR_ACCE       =FACT(statut='f',fr=tr("Correction d un accelerogramme reel"),
             CORR_DEPL       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
             FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
          ),
-         PUISSANCE       =FACT(statut='f',fr="Fonction élevée à une puissance",
+         PUISSANCE       =FACT(statut='f',fr=tr("Fonction élevée à une puissance"),
             FONCTION      =SIMP(statut='o', typ=(fonction_sdaster,nappe_sdaster) ),
             EXPOSANT      =SIMP(statut='f', typ='I', defaut=1 ),
          ),
-         INVERSE         =FACT(statut='f',fr="Inverse d'une fonction",
+         INVERSE         =FACT(statut='f',fr=tr("Inverse d'une fonction"),
             FONCTION      =SIMP(statut='o', typ=fonction_sdaster),
          ),
          NOM_PARA        =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ),
          NOM_RESU        =SIMP(statut='f',typ='TXM' ),
          INTERPOL        =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"),
-                               fr="Type d'interpolation pour les abscisses et les ordonnées de la " \
-                                  "fonction ou bien pour le paramètre de la nappe."),
+                               fr=tr("Type d'interpolation pour les abscisses et les ordonnées de la " \
+                                    "fonction ou bien pour le paramètre de la nappe.")),
          PROL_DROITE     =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
          PROL_GAUCHE     =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
          NOM_PARA_FONC   =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ),
          INTERPOL_FONC   =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"),
-                                 fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"),
+                                 fr=tr("Type d'interpolation pour les abscisses et les ordonnées de la fonction")),
          PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
          PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -9829,8 +11214,8 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",
 # ======================================================================
 # person_in_charge: nicolas.greffet at edf.fr
 CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
-                   fr="Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure"
-                       +" en analyse sismique",
+                   fr=tr("Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure"
+                         " en analyse sismique"),
                    reentrant ='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
 
@@ -9883,7 +11268,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
 # person_in_charge: Georges-cc.devesa at edf.fr
 
 CALC_FORC_NONL=OPER(nom="CALC_FORC_NONL",op= 183,sd_prod=dyna_trans,reentrant='n',
-            fr="Créer un dyna_trans contenant des champs nommés 'DEPL' correspondant à 'FONL_NOEU' ",
+            fr=tr("Créer un dyna_trans contenant des champs nommés 'DEPL' correspondant à 'FONL_NOEU' "),
             UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
          RESULTAT        =SIMP(statut='o',typ=resultat_sdaster),
 
@@ -9933,8 +11318,8 @@ CALC_FORC_NONL=OPER(nom="CALC_FORC_NONL",op= 183,sd_prod=dyna_trans,reentrant='n
 # ======================================================================
 # person_in_charge: samuel.geniaut at edf.fr
 CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
-            fr="Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité"
-                        +" et les facteurs d'intensité de contraintes.",
+            fr=tr("Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité"
+                  " et les facteurs d'intensité de contraintes."),
                     reentrant='f',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
 
@@ -9947,7 +11332,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
                    EXCLUS('FOND_FISS','NB_POINT_FOND'),
                    UN_PARMI('THETA','FOND_FISS','FISSURE')
                    ),
-          b_theta        =BLOC(condition="THETA == None",fr="calcul de theta",
+          b_theta        =BLOC(condition="THETA == None",fr=tr("calcul de theta"),
             regles=(PRESENT_PRESENT('R_INF','R_SUP'),
                 PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ),
              NUME_FOND        =SIMP(statut='f',typ='I',defaut=1),
@@ -10010,15 +11395,12 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
                TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
                GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
-               
-               b_init          =BLOC(condition="RELATION=='ELAS'",),
-                        SIGM_INIT=SIMP(statut='f', typ=(cham_no_sdaster,cham_elem)),
-                        ),         
-                        
-#         ETAT_INIT       =FACT(statut='f',
-#           SIGM            =SIMP(statut='f',typ=cham_elem),
+                        ),
+
+         ETAT_INIT       =FACT(statut='f',
+           SIGM           =SIMP(statut='o', typ=(cham_no_sdaster,cham_elem)),
 #           DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-#         ),
+         ),
          LISSAGE         =FACT(statut='d',
            LISSAGE_THETA   =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_REGU"),),
            LISSAGE_G       =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE",
@@ -10036,7 +11418,8 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
                                      "G_MAX_GLOB",
                                      "G_BILI",
                                      "G_BILI_GLOB",
-                                     "CALC_K_MAX"),
+                                     "CALC_K_MAX",
+                                     "CALC_GTP"),
                              ),
 
          b_g_max    =BLOC(condition="(OPTION=='G_MAX') or (OPTION=='G_MAX_GLOB')",
@@ -10053,7 +11436,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
                                 ),
          ),
 
-        b_cal_contrainte =BLOC(condition="(COMPORTEMENT!=None and (OPTION=='CALC_G' or OPTION=='CALC_G_GLOB'))",
+        b_cal_contrainte =BLOC(condition="(COMPORTEMENT!=None and (OPTION=='CALC_G' or OPTION=='CALC_GTP' or OPTION=='CALC_G_GLOB'))",
           CALCUL_CONTRAINTE =SIMP(statut='f',typ='TXM',into=("NON",),),
          ),
 
@@ -10101,21 +11484,21 @@ CALC_GP =MACRO(nom="CALC_GP",
 #                   sd_prod=table_sdaster,
                    UIinfo={"groupes":("Outils-métier","Rupture",)},
                    reentrant='n',
-                   fr="calcul du parametre de clivage energetique Gp en 2D et en 3D",
+                   fr=tr("calcul du parametre de clivage energetique Gp en 2D et en 3D"),
                    regles=UN_PARMI('TRANCHE_2D','TRANCHE_3D'),
          RESULTAT    =SIMP(statut='o',typ=resultat_sdaster,
-                                      fr="Resultat d'une commande globale STAT_NON_LINE"),
+                                      fr=tr("Resultat d'une commande globale STAT_NON_LINE")),
          LIST_INST   = SIMP(statut='o',typ=(listr8_sdaster) ),
          PRECISION   = SIMP(statut='f',typ='R',validators=NoRepeat(),val_min=0.,val_max=1E-3,defaut=1E-6),
          CRITERE     = SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU") ),                  
          TRANCHE_2D  = FACT(statut='f',max = 1,
                            ZONE_MAIL     = SIMP(statut='o',typ='TXM',into=("NON","OUI") ),
                            b_cop= BLOC(condition = "ZONE_MAIL=='OUI'",
-                                       fr="Les copeaux sont mailles",
+                                       fr=tr("Les copeaux sont mailles"),
                                  GROUP_MA  = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'),
                                  TAILLE   =SIMP(statut='o',typ=listr8_sdaster),),
                            b_ss_cop = BLOC(condition="ZONE_MAIL=='NON'",
-                                           fr="Les copeaux ne sont pas mailles",
+                                           fr=tr("Les copeaux ne sont pas mailles"),
                                  CENTRE           =SIMP(statut='o',typ='R',max=2),
                                  RAYON       =SIMP(statut='o',typ='R',max=1),
                                  ANGLE            =SIMP(statut='o',typ='R',max=1),
@@ -10128,7 +11511,7 @@ CALC_GP =MACRO(nom="CALC_GP",
                              ),
          b_tranche_2d = BLOC(condition="TRANCHE_2D!=None",
                  SYME            =SIMP(statut='o',typ='TXM',into=("NON","OUI"),
-                      fr="multiplication par 2 si SYME=OUI"),),
+                      fr=tr("multiplication par 2 si SYME=OUI")),),
          b_tranche_3d = BLOC(condition="TRANCHE_3D!=None",
                  FOND_FISS       =SIMP(statut='o',typ=fond_fiss,max=1,),),
          GPMAX           = SIMP(statut='f',typ=CO,),
@@ -10158,8 +11541,8 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
                     op=OPS("Macro.calc_ifs_dnl_ops.calc_ifs_dnl_ops"),
                     sd_prod=evol_noli,
                     reentrant='f',
-                    fr="Calcul de l'évolution dynamique d'une structure couplée à un "\
-                       "domaine fluide (résolu avec le code Saturne) via YACS",
+                    fr=tr("Calcul de l'évolution dynamique d'une structure couplée à un "
+                         "domaine fluide (résolu avec le code Saturne) via YACS"),
             UIinfo={"groupes":("Résolution","Dynamique",)},
 
 #IFS
@@ -10238,56 +11621,10 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
 #-------------------------------------------------------------------
          COMPORTEMENT       =C_COMPORTEMENT('DYNA_NON_LINE'),
 #-------------------------------------------------------------------
-         b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
-         ETAT_INIT       =FACT(statut='o',
-           regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',),
-                   EXCLUS('EVOL_NOLI','DEPL',),
-                   EXCLUS('EVOL_NOLI','VITE'),
-                   EXCLUS('EVOL_NOLI','ACCE'),
-                   EXCLUS('EVOL_NOLI','SIGM',),
-                   EXCLUS('EVOL_NOLI','VARI',),
-                   EXCLUS('NUME_ORDRE','INST'), ),
-           DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-           VITE            =SIMP(statut='f',typ=cham_no_sdaster),
-           ACCE            =SIMP(statut='f',typ=cham_no_sdaster),
-           SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-           VARI            =SIMP(statut='f',typ=cham_elem),
-           EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-           NUME_ORDRE      =SIMP(statut='f',typ='I'),
-           INST            =SIMP(statut='f',typ='R'),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-               PRECISION       =SIMP(statut='o',typ='R',),),
-           NUME_DIDI       =SIMP(statut='f',typ='I'),
-           INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
-         b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
-         ETAT_INIT       =FACT(statut='f',
-           regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',),
-                   EXCLUS('EVOL_NOLI','DEPL',),
-                   EXCLUS('EVOL_NOLI','VITE'),
-                   EXCLUS('EVOL_NOLI','ACCE'),
-                   EXCLUS('EVOL_NOLI','SIGM',),
-                   EXCLUS('EVOL_NOLI','VARI',),
-                   EXCLUS('NUME_ORDRE','INST'), ),
-           DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-           VITE            =SIMP(statut='f',typ=cham_no_sdaster),
-           ACCE            =SIMP(statut='f',typ=cham_no_sdaster),
-           SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-           VARI            =SIMP(statut='f',typ=cham_elem),
-           EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-           NUME_ORDRE      =SIMP(statut='f',typ='I'),
-           INST            =SIMP(statut='f',typ='R'),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-               PRECISION       =SIMP(statut='o',typ='R',),),
-           NUME_DIDI       =SIMP(statut='f',typ='I'),
-           INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
+         b_reuse =BLOC(condition = "reuse",fr=tr("en mode concept reentrant : ETAT_INIT obligatoire"),
+            ETAT_INIT         =C_ETAT_INIT('DYNA_NON_LINE','o'),),
+         b_notreuse =BLOC(condition = "not reuse",fr=tr("en mode concept reentrant : ETAT_INIT facultatif"),
+            ETAT_INIT         =C_ETAT_INIT('DYNA_NON_LINE','f'),),
 #-------------------------------------------------------------------
 #IFS : pas besoin d'INCREMENT
 #         INCREMENT       =C_INCREMENT('MECANIQUE'),
@@ -10329,7 +11666,7 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
 #-------------------------------------------------------------------
          SOLVEUR         =C_SOLVEUR('CALC_IFS_DNL'),
 #-------------------------------------------------------------------
-         OBSERVATION     =C_OBSERVATION(),
+         OBSERVATION     =C_OBSERVATION('MECANIQUE'),
 #-------------------------------------------------------------------
          SUIVI_DDL       =C_SUIVI_DDL(),
 #-------------------------------------------------------------------
@@ -10343,7 +11680,7 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
            RIGI_GEOM     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
            b_char_crit=BLOC(condition="(RIGI_GEOM=='OUI')",
               CHAR_CRIT       =SIMP(statut='f',typ='R',min=2,max=2,
-                                    fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),),
+                                    fr=tr("Valeur des deux charges critiques délimitant la bande de recherche en HPP")),),
            MODI_RIGI     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
            TYPE          =SIMP(statut='f',typ='TXM',defaut="FLAMBEMENT",into=("FLAMBEMENT","STABILITE")),
            PREC_INSTAB   =SIMP(statut='f',typ='R',defaut=1.E-6,max=1,),
@@ -10384,10 +11721,10 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
          MODE_VIBR     =FACT(statut='f',min=1,max=1,
            MATR_RIGI        =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ),
            NB_FREQ          =SIMP(statut='f',typ='I',max=1,val_min=1,defaut=3,
-                            fr="Nombre de fréquences propres à calculer"),
+                            fr=tr("Nombre de fréquences propres à calculer")),
            COEF_DIM_ESPACE  =SIMP(statut='f',typ='I',max=1,val_min=2,defaut=5),
            BANDE            =SIMP(statut='f',typ='R',min=2,max=2,
-                            fr="Valeur des deux fréquences délimitant la bande de recherche",),
+                            fr=tr("Valeur des deux fréquences délimitant la bande de recherche"),),
            regles         = (EXCLUS('PAS_CALC','LIST_INST','INST'),),
            LIST_INST      = SIMP(statut='f',typ=(listr8_sdaster) ),
            INST           = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
@@ -10402,7 +11739,7 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
 
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
          b_info=BLOC(condition="(INFO==2)",
-               fr="filtre les messages émis dans le .mess selon le type de message demandé",
+               fr=tr("filtre les messages émis dans le .mess selon le type de message demandé"),
                INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
                                into=("CONTACT",
                                      "MECA_NON_LINE",
@@ -10432,7 +11769,7 @@ CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',
 # ======================================================================
 # person_in_charge: irmela.zentner at edf.fr
 CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=interspectre,
-                    fr="Calcul d'une matrice interspectrale à partir d'une fonction du temps",
+                    fr=tr("Calcul d'une matrice interspectrale à partir d'une fonction du temps"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          INST_INIT       =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
@@ -10465,44 +11802,60 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=interspectre,
 
 
 CALC_MAC3COEUR = MACRO(nom="CALC_MAC3COEUR",
-                       op=OPS("Mac3coeur.calc_mac3coeur_ops.calc_mac3coeur_ops"),
+                       op=OPS("Mac3coeur.mac3coeur_calcul.calc_mac3coeur_ops"),
                        sd_prod=evol_noli,
 
          TYPE_COEUR   = SIMP(statut='o',typ='TXM',into=("MONO","TEST","900","1300","N4","EPR"),position='global' ),
          # TYPE DE COEUR A CONSIDERER
          TABLE_N      = SIMP(statut='o',typ=table_sdaster),         # TABLE INITIALE DES DAMAC A L INSTANT N
-         MAILLAGE_N   = SIMP(statut='f',typ=maillage_sdaster),        # MAILLAGE EN ATTENDANT MIEUX ???
+         MAILLAGE_N   = SIMP(statut='f',typ=maillage_sdaster),      # MAILLAGE EN ATTENDANT MIEUX ???
 
          LAME = FACT(statut='f',max=1,
-                     fr="Estimation des lames d'eau entre AC",
+                     fr=tr("Estimation des lames d'eau entre AC"),
                TABLE_NP1    = SIMP(statut='o',typ=table_sdaster),         # TABLE INITIALE DES DAMAC A L INSTANT N+1
-               MAILLAGE_NP1 = SIMP(statut='o',typ=maillage_sdaster),),        # MAILLAGE EN ATTENDANT MIEUX ???
+               MAILLAGE_NP1 = SIMP(statut='o',typ=maillage_sdaster),      # MAILLAGE EN ATTENDANT MIEUX ???
+               UNITE_THYC   = SIMP(statut='f',typ='I', max=1),            # Unite Logique du fichier THYC
+                     ),
 
          DEFORMATION  = FACT(statut='f',max=1,
-                      fr="Estimation des deformations des AC",
+                      fr=tr("Estimation des deformations des AC"),
                RESU_INIT    = SIMP(statut='f',typ=resultat_sdaster),
                NIVE_FLUENCE = SIMP(statut='o',typ='R',validators=NoRepeat(),max=1), # FLUENCE MAXIMALE DANS LE COEUR
-               UNITE_THYC      = SIMP(statut='o',typ='I', max=1),
-               
+               UNITE_THYC      = SIMP(statut='o',typ='I', max=1),                   # Unite Logique du fichier THYC
+
                # choix du maintien dans le cas mono-assemblage
                b_maintien_mono = BLOC(condition = "TYPE_COEUR == 'MONO'",
 
                     TYPE_MAINTIEN = SIMP(statut='o',typ='TXM',into=("FORCE","DEPL_PSC"), ),
-                    
+
                     b_maintien_mono_force = BLOC(condition = "TYPE_MAINTIEN == 'FORCE'",
-                                 fr="valeur de l'effort de maintien imposée",
+                                 fr=tr("valeur de l'effort de maintien imposée"),
                                  FORCE_MAINTIEN           =SIMP(statut='o',typ='R', max=1),),
-                     
+
                                        ),
-                
+
                # choix du maintien dans le cas d'un coeur à plusieurs assemblages
                b_maintien_coeur = BLOC(condition = "TYPE_COEUR != 'MONO'",
 
                     TYPE_MAINTIEN = SIMP(statut='f',typ='TXM',into=("DEPL_PSC",),defaut="DEPL_PSC" ),
-                                       
+
                                        ),
-                   
-                                 ),
+
+               # choix de la poussée d'Archimède dans le cas mono-assemblage
+               b_archimede_mono = BLOC(condition = "TYPE_COEUR == 'MONO'",
+
+                    ARCHIMEDE = SIMP(statut='o',typ='TXM',into=("OUI","NON"), ),
+
+                                       ),
+
+               # choix de la poussée d'Archimède dans le cas d'un coeur à plusieurs assemblages
+               b_archimede_coeur = BLOC(condition = "TYPE_COEUR != 'MONO'",
+
+                    ARCHIMEDE = SIMP(statut='f',typ='TXM',into=("OUI"),defaut="OUI" ),
+
+                                       ),
+
+                       ),
 
 );
 
@@ -10524,7 +11877,7 @@ CALC_MAC3COEUR = MACRO(nom="CALC_MAC3COEUR",
 # ======================================================================
 # person_in_charge: nicolas.greffet at edf.fr
 CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
-                    fr="Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés",
+                    fr=tr("Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'),
@@ -10590,7 +11943,7 @@ def calc_matr_elem_prod(OPTION,**args):
   raise AsException("type de concept resultat non prevu")
 
 CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
-                    ,fr="Calcul des matrices élémentaires",reentrant='n',
+                    ,fr=tr("Calcul des matrices élémentaires"),reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
 
          OPTION          =SIMP(statut='o',typ='TXM',
@@ -10620,12 +11973,14 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
            CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
          ),
 
-         b_rigi_geom       =BLOC(condition = "OPTION=='RIGI_GEOM'",
-           CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
-           SIEF_ELGA         =SIMP(statut='o',typ=cham_elem ),
-           STRX_ELGA         =SIMP(statut='f',typ=cham_elem ),
-           MODE_FOURIER      =SIMP(statut='f',typ='I',defaut= 0 ),
-         ),
+        b_rigi_geom       =BLOC(condition = "OPTION=='RIGI_GEOM'",
+            SIEF_ELGA         =SIMP(statut='o',typ=cham_elem ),
+            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
+            STRX_ELGA         =SIMP(statut='f',typ=cham_elem ),
+            DEPL              =SIMP(statut='f',typ=cham_no_sdaster),
+            CHAM_MATER        =SIMP(statut='f',typ=cham_mater ),
+            MODE_FOURIER      =SIMP(statut='f',typ='I',defaut= 0 ),
+        ),
 
          b_rigi_rota       =BLOC(condition = "OPTION=='RIGI_ROTA'",
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
@@ -10726,7 +12081,7 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
 # person_in_charge: renaud.bargellini at edf.fr
 CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
             UIinfo={"groupes":("Post-traitements","Thermique",)},
-               fr="Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique",
+               fr=tr("Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique"),
 
      regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
 
@@ -10738,9 +12093,9 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
 
      TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
      GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                           fr="le calcul ne sera effectué que sur ces mailles là"),
+                           fr=tr("le calcul ne sera effectué que sur ces mailles là")),
      MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**',
-                           fr="le calcul ne sera effectué que sur ces mailles là"),
+                           fr=tr("le calcul ne sera effectué que sur ces mailles là")),
 
      b_meta =BLOC(condition= "au_moins_un(OPTION, ('META_ELNO','META_NOEU'))",
        ETAT_INIT       =FACT(statut='o',
@@ -10799,140 +12154,182 @@ def calc_miss_sdprod(self, TYPE_RESU, **kwargs):
     elif TYPE_RESU == 'HARM_GENE':
         return harm_gene
     elif TYPE_RESU == 'TRAN_GENE':
-        return tran_gene
+        return tran_gene        
+    elif TYPE_RESU == 'CHARGE':
+        return char_meca
     else:
         return None
 
 CALC_MISS = MACRO(nom="CALC_MISS",
                   op=OPS('Macro.calc_miss_ops.calc_miss_ops'),
                   sd_prod=calc_miss_sdprod,
-                  fr="Préparation des données, exécution du logiciel Miss3D, et post-traitement",
+                  fr=tr("Préparation des données, exécution du logiciel Miss3D, et post-traitement"),
                   UIinfo={"groupes":("Résolution","Outils-métier",)},
+                  regles=(EXCLUS('TABLE_SOL', 'MATER_SOL'),),
 
     TYPE_RESU   = SIMP(statut='o', typ='TXM',
                        into=('HARM_GENE', 'TRAN_GENE', 'TABLE', 'TABLE_CONTROL',
-                             'FICHIER', 'FICHIER_TEMPS'),
-                       fr="Type de résultat produit en post-traitement. FICHIER : pas de post-traitement"),
+                             'FICHIER', 'FICHIER_TEMPS','CHARGE'),
+                       fr=tr("Type de résultat produit en post-traitement. FICHIER : pas de post-traitement")),
     PROJET      = SIMP(statut='f', typ='TXM', defaut='MODELE',
-                       fr="Nom de l'étude Miss"),
+                       fr=tr("Nom de l'étude Miss")),
     REPERTOIRE  = SIMP(statut='f', typ='TXM',
-                       fr="Répertoire de travail de Miss"),
+                       fr=tr("Répertoire de travail de Miss")),
     VERSION     = SIMP(statut='f', typ='TXM', into=("V6.6","V6.5"), defaut="V6.6",
-                       fr="Version de Miss utilisée"),
-
-    TABLE_SOL   = SIMP(statut='o', typ=table_sdaster,
-                       fr="Table des propriétés du sol"),
+                       fr=tr("Version de Miss utilisée")),
+
+    TABLE_SOL   = SIMP(statut='f', typ=table_sdaster,
+                       fr=tr("Table des propriétés du sol stratifié")),
+    MATER_SOL = FACT(statut='f',
+                     fr=tr("Propriétés du sol homogène"),
+        E    = SIMP(statut='o', typ='R', val_min=0.),
+        NU   = SIMP(statut='o', typ='R', val_min=-1., val_max=0.5),
+        RHO  = SIMP(statut='o', typ='R', val_min=0.),
+        AMOR_HYST = SIMP(statut='f', typ='R', val_min=0., val_max=1.),
+    ),
+    MATER_FLUIDE = FACT(statut='f',
+                        fr=tr("Propriétés du fluide (requis si ISSF='OUI')"),
+        RHO       = SIMP(statut='o', typ='R', val_min=0.),
+        CELE      = SIMP(statut='o', typ='R', val_min=0.),
+        AMOR_BETA = SIMP(statut='f', typ='R', val_min=0., val_max=1.),
+        DEMI_ESPACE = SIMP(statut='f', typ='TXM', defaut='OUI', into=('OUI', 'NON'),
+                           fr=tr("Demi-espace de fluide avec surface libre ou non")),
+    ),
 
     # pas de post-traitement
     b_basic   = BLOC(condition="TYPE_RESU in ('FICHIER', 'TABLE_CONTROL')",
                        regles=(UN_PARMI('MACR_ELEM_DYNA', 'BASE_MODALE'),
-                               ENSEMBLE('GROUP_MA_FLU_STR', 'GROUP_MA_FLU_SOL', 'GROUP_MA_SOL_SOL'),),
+                               ENSEMBLE('GROUP_MA_FLU_STR', 'GROUP_MA_FLU_SOL', 'GROUP_MA_SOL_SOL'),
+                               EXCLUS('SOURCE_SOL', 'SOURCE_FLUIDE')),
         MACR_ELEM_DYNA  = SIMP(statut='f', typ=macr_elem_dyna,
-                               fr="Macro élément produit en amont"),
+                               fr=tr("Macro élément produit en amont")),
         BASE_MODALE     = SIMP(statut='f', typ=mode_meca,
-                               fr="Base de modes"),
+                               fr=tr("Base de modes")),
         b_base_modale = BLOC(condition="BASE_MODALE is not None",
             MATR_RIGI       = SIMP(statut='f', typ=(matr_asse_depl_r, matr_asse_depl_c),),
             MATR_MASS       = SIMP(statut='f', typ=matr_asse_depl_r ),
         ),
         AMOR_REDUIT     = SIMP(statut='f', typ='R', max='**'),
         GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**',
-                               fr="Groupe de mailles de l'interface"),
+                               fr=tr("Groupe de mailles de l'interface")),
         GROUP_MA_FLU_STR = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles fluide-structure"),
+                               fr=tr("Groupe de mailles fluide-structure")),
         GROUP_MA_FLU_SOL = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles fluide-sol"),
+                               fr=tr("Groupe de mailles fluide-sol")),
         GROUP_MA_SOL_SOL = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles sol-sol"),
+                               fr=tr("Groupe de mailles sol-sol")),
         UNITE_IMPR_ASTER = SIMP(statut='f', typ='I',
-                                fr="Unité des résultats transmis par Code_Aster à Miss"),
+                                fr=tr("Unité des résultats transmis par Code_Aster à Miss")),
         UNITE_RESU_IMPE  = SIMP(statut='f', typ='I',
-                                fr="Unité logique des impédances écrites par Miss"),
+                                fr=tr("Unité logique des impédances écrites par Miss")),
         UNITE_RESU_FORC  = SIMP(statut='f', typ='I',
-                                fr="Unité logique des forces sismiques écrites par Miss"),
+                                fr=tr("Unité logique des forces sismiques écrites par Miss")),
+        SOURCE_SOL       = FACT(statut='f', max='**',
+                                fr=tr("Source ponctuelle dans le sol"),
+            POINT           = SIMP(statut='o', typ='R', min=3, max=3,
+                                   fr=tr("Position de la source"),),
+            DIRECTION       = SIMP(statut='o', typ='R', min=3, max=3,
+                                   fr=tr("Direction de la source"),),
+        ),
+        SOURCE_FLUIDE    = FACT(statut='f', max='**',
+                                fr=tr("Source ponctuelle dans le fluide"),
+            POINT           = SIMP(statut='o', typ='R', min=3, max=3,
+                                   fr=tr("Position de la source"),),
+        ),
     ),
     # post-traitement : passage du domaine de Laplace au domaine temporel
     b_fichier_temps   = BLOC(condition="TYPE_RESU == 'FICHIER_TEMPS'",
                        regles=(UN_PARMI('MACR_ELEM_DYNA', 'BASE_MODALE'),
+                               ENSEMBLE('GROUP_MA_FLU_STR', 'GROUP_MA_FLU_SOL', 'GROUP_MA_SOL_SOL'),
                                AU_MOINS_UN('UNITE_RESU_RIGI','UNITE_RESU_AMOR','UNITE_RESU_MASS'),
                                PRESENT_PRESENT('UNITE_RESU_AMOR', 'MATR_GENE'),
                                PRESENT_PRESENT('UNITE_RESU_MASS', 'MATR_GENE'),),
         MACR_ELEM_DYNA  = SIMP(statut='f', typ=macr_elem_dyna,
-                               fr="Macro élément produit en amont"),
+                               fr=tr("Macro élément produit en amont")),
         BASE_MODALE     = SIMP(statut='f', typ=mode_meca,
-                               fr="Base de modes"),
+                               fr=tr("Base de modes")),
         b_base_modale = BLOC(condition="BASE_MODALE is not None",
             MATR_RIGI       = SIMP(statut='f', typ=(matr_asse_depl_r, matr_asse_depl_c),),
             MATR_MASS       = SIMP(statut='f', typ=matr_asse_depl_r ),
         ),
         AMOR_REDUIT     = SIMP(statut='f', typ='R', max='**'),
         GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**',
-                               fr="Groupe de mailles de l'interface"),
+                               fr=tr("Groupe de mailles de l'interface")),
+        GROUP_MA_FLU_STR = SIMP(statut='f', typ=grma, max='**',
+                               fr=tr("Groupe de mailles fluide-structure")),
+        GROUP_MA_FLU_SOL = SIMP(statut='f', typ=grma, max='**',
+                               fr=tr("Groupe de mailles fluide-sol")),
+        GROUP_MA_SOL_SOL = SIMP(statut='f', typ=grma, max='**',
+                               fr=tr("Groupe de mailles sol-sol")),
         UNITE_IMPR_ASTER = SIMP(statut='f', typ='I',
-                                fr="Unité des résultats transmis par Code_Aster à Miss"),
+                                fr=tr("Unité des résultats transmis par Code_Aster à Miss")),
         UNITE_RESU_RIGI =SIMP(statut='f',typ='I'),
         UNITE_RESU_AMOR =SIMP(statut='f',typ='I'),
         UNITE_RESU_MASS =SIMP(statut='f',typ='I'),
-        INST_FIN       = SIMP(statut='f', typ='R', fr="Instant final du calcul"),
-        PAS_INST       = SIMP(statut='f', typ='R', fr="Pas de temps du calcul"),
+        INST_FIN       = SIMP(statut='f', typ='R', fr=tr("Instant final du calcul")),
+        PAS_INST       = SIMP(statut='f', typ='R', fr=tr("Pas de temps du calcul")),
+        FACTEUR_INTERPOL = SIMP(statut='f', typ='I', fr=tr("Valeur du pas d'échantillonnage et \
+                                du facteur de réduction du temps de calcul"), defaut=1, val_min=1),
+        PCENT_FREQ_CALCUL = SIMP(statut='f', typ='R', fr=tr("Valeur correspondante au ratio 100*Ns/Nt, où \
+                 Ns est le nombre d'échantillons sans interpoler et Nt le nombre total d'échantillons"), defaut=0, val_min=0, val_max=100),
         PRECISION      = SIMP(statut='f',typ='R',defaut=0.000001),
         COEF_SURECH    = SIMP(statut='f',typ='I',defaut=1 ),
         MATR_GENE       =FACT(statut='f', max = 1,
                      DECOMP_IMPE= SIMP(statut='f',typ='TXM',defaut='PRODUIT',into=('PRODUIT','SANS_PRODUIT')),
                      AMOR_HYST  = SIMP(statut='o',typ='TXM',into=('DANS_IMPEDANCE','DANS_MATR_AMOR'),
-                     fr="Indique comment l'amortissement hysteretique est pris en compte"),
+                     fr=tr("Indique comment l'amortissement hysteretique est pris en compte")),
                  b_amor_nohyst = BLOC(condition="AMOR_HYST == 'DANS_MATR_AMOR'",
                      MATR_MASS  = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_depl_r ) ),
                      MATR_RIGI  = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c,matr_asse_depl_r ) ),
                      MATR_AMOR  = SIMP(statut='o',typ=(matr_asse_gene_r,matr_asse_gene_c,matr_asse_depl_r ) ),
-                   ), 
+                   ),
                  b_amor_hyst = BLOC(condition="AMOR_HYST == 'DANS_IMPEDANCE'",
                     regles = (AU_MOINS_UN('MATR_MASS','MATR_RIGI','MATR_AMOR'),),
                      MATR_MASS  = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_depl_r ) ),
                      MATR_RIGI  = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c,matr_asse_depl_r ) ),
                      MATR_AMOR  = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c,matr_asse_depl_r ) ),
-                   ), 
+                   ),
                                ),
         EXCIT_SOL       =FACT(statut='f', max = 1,
                           regles = (AU_MOINS_UN('CHAM_X','CHAM_Y','CHAM_Z'),),
                                UNITE_RESU_FORC  =SIMP(statut='o',typ='I',
-                                                      fr="Unité logique des forces sismiques écrites par Miss"),
+                                                      fr=tr("Unité logique des forces sismiques écrites par Miss")),
                                NOM_CHAM        =SIMP(statut='f',typ='TXM',defaut='DEPL',
                                                      into=('ACCE','VITE','DEPL') ),
                                CHAM_X    = SIMP(statut='f', typ=fonction_sdaster,),
                                CHAM_Y    = SIMP(statut='f', typ=fonction_sdaster,),
                                CHAM_Z    = SIMP(statut='f', typ=fonction_sdaster,),
                                ),
-    ),    
+    ),
     # si post-traitement
-    b_donnees   = BLOC(condition="TYPE_RESU not in ('FICHIER', 'FICHIER_TEMPS', 'TABLE_CONTROL')",
+    b_donnees   = BLOC(condition="TYPE_RESU not in ('FICHIER', 'FICHIER_TEMPS', 'TABLE_CONTROL', 'CHARGE')",
                        regles=(ENSEMBLE('GROUP_MA_FLU_STR', 'GROUP_MA_FLU_SOL', 'GROUP_MA_SOL_SOL'),
                                UN_PARMI('MATR_AMOR', 'AMOR_REDUIT'),),
         MACR_ELEM_DYNA  = SIMP(statut='f', typ=macr_elem_dyna,
-                               fr="Macro élément produit en amont"),
+                               fr=tr("Macro élément produit en amont")),
         BASE_MODALE     = SIMP(statut='o', typ=mode_meca,
-                               fr="Base de modes"),
+                               fr=tr("Base de modes")),
         MATR_RIGI       = SIMP(statut='o', typ=(matr_asse_depl_r, matr_asse_depl_c),),
-        MATR_MASS       = SIMP(statut='o', typ=matr_asse_depl_r ),        
+        MATR_MASS       = SIMP(statut='o', typ=matr_asse_depl_r ),
         MATR_AMOR       = SIMP(statut='f', typ=matr_asse_depl_r ),
         AMOR_REDUIT     = SIMP(statut='f', typ='R', max='**'),
         GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**',
-                               fr="Groupe de mailles de l'interface"),
+                               fr=tr("Groupe de mailles de l'interface")),
         GROUP_MA_FLU_STR = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles fluide-structure"),
+                               fr=tr("Groupe de mailles fluide-structure")),
         GROUP_MA_FLU_SOL = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles fluide-sol"),
+                               fr=tr("Groupe de mailles fluide-sol")),
         GROUP_MA_SOL_SOL = SIMP(statut='f', typ=grma, max='**',
-                               fr="Groupe de mailles sol-sol"),
+                               fr=tr("Groupe de mailles sol-sol")),
         UNITE_IMPR_ASTER = SIMP(statut='f', typ='I',
-                                fr="Unité des résultats transmis par Code_Aster à Miss"),
+                                fr=tr("Unité des résultats transmis par Code_Aster à Miss")),
         UNITE_RESU_IMPE  = SIMP(statut='f', typ='I',
-                                fr="Unité logique des impédances à relire."),
+                                fr=tr("Unité logique des impédances à relire.")),
         UNITE_RESU_FORC  = SIMP(statut='f', typ='I',
-                                fr="Unité logique des forces sismiques à relire"),
+                                fr=tr("Unité logique des forces sismiques à relire")),
     ),
     # Paramètres du calcul Miss
-    PARAMETRE   = FACT(statut='o',
+    PARAMETRE   = FACT(statut='f',
                        regles=(PRESENT_PRESENT('OFFSET_MAX', 'OFFSET_NB'),
                                PRESENT_PRESENT('FREQ_MIN', 'FREQ_MAX','FREQ_PAS'),
                                UN_PARMI('FREQ_MIN', 'LIST_FREQ', 'FREQ_IMAG'),
@@ -10971,8 +12368,8 @@ CALC_MISS = MACRO(nom="CALC_MISS",
         DEPL_X         = SIMP(statut='f', typ=fonction_sdaster,),
         DEPL_Y         = SIMP(statut='f', typ=fonction_sdaster,),
         DEPL_Z         = SIMP(statut='f', typ=fonction_sdaster,),
-        INST_FIN       = SIMP(statut='o', typ='R', fr="Instant final du calcul"),
-        PAS_INST       = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"),
+        INST_FIN       = SIMP(statut='o', typ='R', fr=tr("Instant final du calcul")),
+        PAS_INST       = SIMP(statut='o', typ='R', fr=tr("Pas de temps du calcul")),
     ),
     # Post-traitement type 1 - harm_gene
     b_post_harm_gene  = BLOC(condition="TYPE_RESU == 'HARM_GENE'",
@@ -10992,8 +12389,8 @@ CALC_MISS = MACRO(nom="CALC_MISS",
         DEPL_X         = SIMP(statut='f', typ=fonction_sdaster,),
         DEPL_Y         = SIMP(statut='f', typ=fonction_sdaster,),
         DEPL_Z         = SIMP(statut='f', typ=fonction_sdaster,),
-        INST_FIN       = SIMP(statut='f', typ='R', fr="Instant final du calcul"),
-        PAS_INST       = SIMP(statut='f', typ='R', fr="Pas de temps du calcul"),
+        INST_FIN       = SIMP(statut='f', typ='R', fr=tr("Instant final du calcul")),
+        PAS_INST       = SIMP(statut='f', typ='R', fr=tr("Pas de temps du calcul")),
         # identique à EXCIT de DYNA_LINE_HARM au type attendu pour VECT_ASSE près
         EXCIT_HARMO    = FACT(statut='f', max='**',
                               regles=(UN_PARMI('VECT_ASSE', 'CHARGE'),
@@ -11013,18 +12410,18 @@ CALC_MISS = MACRO(nom="CALC_MISS",
                         regles=(AU_MOINS_UN('ACCE_X', 'ACCE_Y', 'ACCE_Z'),),
         MODELE         = SIMP(statut='o', typ=(modele_sdaster),),
         GROUP_NO       = SIMP(statut='o', typ=grno, max='**',
-                              fr="Liste des groupes de noeud de post-traitement"),
+                              fr=tr("Liste des groupes de noeud de post-traitement")),
         ACCE_X         = SIMP(statut='f', typ=fonction_sdaster,),
         ACCE_Y         = SIMP(statut='f', typ=fonction_sdaster,),
         ACCE_Z         = SIMP(statut='f', typ=fonction_sdaster,),
-        INST_FIN       = SIMP(statut='o', typ='R', fr="Instant final du calcul"),
-        PAS_INST       = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"),
+        INST_FIN       = SIMP(statut='o', typ='R', fr=tr("Instant final du calcul")),
+        PAS_INST       = SIMP(statut='o', typ='R', fr=tr("Pas de temps du calcul")),
         NORME          = SIMP(statut='o', typ='R',
-                              fr="Valeur de la norme du spectre d'oscillateur" ),
+                              fr=tr("Valeur de la norme du spectre d'oscillateur") ),
         AMOR_SPEC_OSCI      = SIMP(statut='o', typ='R', max='**',
-                                   fr="Amortissement du spectre d'oscillateur"),
+                                   fr=tr("Amortissement du spectre d'oscillateur")),
         LIST_FREQ_SPEC_OSCI = SIMP(statut='f', typ=listr8_sdaster,
-                                   fr="Fréquences utilisées pour le calcul du spectre d'oscillateur"),
+                                   fr=tr("Fréquences utilisées pour le calcul du spectre d'oscillateur")),
     ),
 
     # Post-traitement type 3 - points de controle
@@ -11034,127 +12431,34 @@ CALC_MISS = MACRO(nom="CALC_MISS",
                                   PRESENT_PRESENT('ACCE_Z', 'INST_FIN'),
                                   ENSEMBLE('INST_FIN', 'PAS_INST', 'NORME', 'AMOR_SPEC_OSCI'),),
         GROUP_MA_CONTROL = SIMP(statut='f', typ=grma, max='**',
-                                fr="Groupe de mailles des points de contrôle"),
+                                fr=tr("Groupe de mailles des points de contrôle")),
         ACCE_X         = SIMP(statut='f', typ=fonction_sdaster,),
         ACCE_Y         = SIMP(statut='f', typ=fonction_sdaster,),
         ACCE_Z         = SIMP(statut='f', typ=fonction_sdaster,),
-        INST_FIN       = SIMP(statut='f', typ='R', fr="Instant final du calcul"),
-        PAS_INST       = SIMP(statut='f', typ='R', fr="Pas de temps du calcul"),
+        INST_FIN       = SIMP(statut='f', typ='R', fr=tr("Instant final du calcul")),
+        PAS_INST       = SIMP(statut='f', typ='R', fr=tr("Pas de temps du calcul")),
         NORME          = SIMP(statut='f', typ='R',
-                              fr="Valeur de la norme du spectre d'oscillateur" ),
+                              fr=tr("Valeur de la norme du spectre d'oscillateur") ),
         AMOR_SPEC_OSCI      = SIMP(statut='f', typ='R', max='**',
-                                   fr="Amortissement du spectre d'oscillateur"),
+                                   fr=tr("Amortissement du spectre d'oscillateur")),
         LIST_FREQ_SPEC_OSCI = SIMP(statut='f', typ=listr8_sdaster,
-                                   fr="Fréquences utilisées pour le calcul du spectre d'oscillateur"),
+                                   fr=tr("Fréquences utilisées pour le calcul du spectre d'oscillateur")),
+    ),
+   # post-traitement : creation d'une charge sismique temporelle
+    b_charge   = BLOC(condition="TYPE_RESU == 'CHARGE'",
+        MODELE        =SIMP(statut='o',typ=(modele_sdaster) ),
+        FONC_SIGNAL   =SIMP(statut='o',typ=(fonction_sdaster) ),
+        NOM_CMP       =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ),
+        ISSF          =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"),
+        NOEUD_AFFE    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+        UNITE_RESU_FORC = SIMP(statut='o',typ='I'),
+        UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=25),
+        FREQ_MAX      =SIMP(statut='f',typ='R' ),
     ),
 
     INFO        = SIMP(statut='f', typ='I', defaut=1, into=(1,2)),
 )
 
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# person_in_charge: nicolas.brie at edf.fr
-
-
-def calc_modal_prod(self,AMORTISSEMENT,**args):
-  if AMORTISSEMENT=="NON": return mode_meca
-  if AMORTISSEMENT=="OUI": return mode_meca_c
-  raise AsException("type de concept resultat non prevu")
-
-
-CALC_MODAL=MACRO(nom="CALC_MODAL",
-                 op=OPS('Macro.calc_modal_ops.calc_modal_ops'),
-                 UIinfo={"groupes":("Résolution","Dynamique",)},
-                 sd_prod=calc_modal_prod,
-                 fr="Calcul des modes propres reels ou complexes dans une seule commande",
-         MODELE          =SIMP(statut='o',typ=modele_sdaster),
-         AMORTISSEMENT    =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
-         CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
-         INST            =SIMP(statut='f',typ='R',defaut=0.),
-         CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
-         CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
-         METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
-                               into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ),
-         b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
-           PREC_ORTHO      =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
-           NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
-           PREC_LANCZOS    =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
-           NMAX_ITER_QR    =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
-         ),
-         b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
-           PREC_BATHE      =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
-           NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
-           PREC_JACOBI     =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
-           NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
-         ),
-         b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
-           PREC_SOREN      =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
-           NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
-           PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717),
-         ),
-         b_qz =BLOC(condition = "METHODE == 'QZ'",
-           TYPE_QZ      =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ),
-         ),
-         MODE_RIGIDE          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
-                               fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ),
-         CALC_FREQ       =FACT(statut='d',min=0,
-             OPTION      =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","PLUS_GRANDE","BANDE","CENTRE","TOUT"),
-                                   fr="Choix de l option et par conséquent du shift du problème modal" ),
-             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites fréquences propres",
-               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut=10,val_min=0 ),
-             ),
-             b_plus_grande =BLOC(condition = "OPTION == 'PLUS_GRANDE'",fr="Recherche des plus grandes fréquences propres",
-               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut=1,val_min=0 ),
-             ),
-             b_centre       =BLOC(condition = "OPTION == 'CENTRE'",
-                                  fr="Recherche des fréquences propres les plus proches d une valeur donnée",
-               FREQ            =SIMP(statut='o',typ='R',
-                                     fr="Fréquence autour de laquelle on cherche les fréquences propres"),
-               AMOR_REDUIT     =SIMP(statut='f',typ='R',),
-               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
-             ),
-             b_bande         =BLOC(condition = "(OPTION == 'BANDE')",
-                                   fr="Recherche des fréquences propres dans une bande donnée",
-               FREQ            =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
-                                     fr="Valeurs des deux fréquences délimitant la bande de recherche"),
-             ),
-             APPROCHE        =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
-                                   fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
-             regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
-             DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
-             COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
-             NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 3,val_min=0 ),
-             PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
-             SEUIL_FREQ      =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
-             STOP_BANDE_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-           ),
-
-        VERI_MODE       =FACT(statut='d',min=0,
-           STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-           PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
-           SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0,
-                                 fr="Valeur limite admise pour l ereur a posteriori des modes" ),
-           STURM           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-         ),
-
-         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
-         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-)  ;
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -11178,8 +12482,8 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",
                          op=OPS('Macro.calc_mode_rotation_ops.calc_mode_rotation_ops'),
                          sd_prod=table_container,
                          reentrant='n',
-                         fr="calculer les fréquences et modes d'un système en fonction des " \
-                            "vitesses de rotation",
+                         fr=tr("calculer les fréquences et modes d'un système en fonction des "
+                              "vitesses de rotation"),
                          UIinfo={"groupes":("Résolution","Dynamique",)},
 
                   MATR_RIGI       =SIMP(statut='o',typ=matr_asse_depl_r ),
@@ -11193,16 +12497,18 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",
 
                   CALC_FREQ       =FACT(statut='d',min=0,
                          OPTION      =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","CENTRE",),
-                                           fr="Choix de l option et par conséquent du shift du problème modal" ),
-                  b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+                                           fr=tr("Choix de l option et par conséquent du shift du problème modal") ),
+                  b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr=tr("Recherche des plus petites valeurs propres"),
                               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+                              SEUIL_FREQ      =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),
                               ),
                   b_centre       =BLOC(condition = "OPTION == 'CENTRE'",
-                                fr="Recherche des valeurs propres les plus proches d une valeur donnée",
+                                fr=tr("Recherche des valeurs propres les plus proches d une valeur donnée"),
                               FREQ            =SIMP(statut='o',typ='R',
-                                                     fr="Fréquence autour de laquelle on cherche les fréquences propres"),
+                                                     fr=tr("Fréquence autour de laquelle on cherche les fréquences propres")),
                               AMOR_REDUIT     =SIMP(statut='f',typ='R',),
                               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+                              SEUIL_FREQ      =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),
                               ),
                              ),
 
@@ -11213,6 +12519,267 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",
                   STURM           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),),
 );
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# person_in_charge: nicolas.brie at edf.fr
+
+def calc_modes_prod( self, TYPE_RESU, **args) :
+   if (TYPE_RESU not in ("DYNAMIQUE","MODE_FLAMB","GENERAL")):
+      # on retourne un type fictif pour que le plantage aie lieu dans la lecture du catalogue
+      return ASSD
+   if TYPE_RESU == "MODE_FLAMB" : return mode_flamb
+   if TYPE_RESU == "GENERAL" :    return mode_flamb
+   # sinon on est dans le cas 'DYNAMIQUE' donc **args doit contenir les mots-clés
+   # MATR_RIGI et (faculativement) MATR_AMOR, et on peut y accéder
+   vale_rigi = args['MATR_RIGI']
+   vale_mass = args['MATR_MASS']
+   if (vale_rigi== None) : # si MATR_RIGI non renseigné
+      # on retourne un type fictif pour que le plantage aie lieu dans la lecture du catalogue
+      return ASSD
+   vale_amor = args['MATR_AMOR']
+   if ( (AsType(vale_rigi) in (matr_asse_depl_r, matr_asse_depl_c)) & (AsType(vale_mass) in (matr_asse_gene_r, matr_asse_gene_c)) ) :
+      raise AsException("Matrices d'entrée de types différents : physique / généralisée.")
+   if (AsType(vale_amor)== matr_asse_depl_r) : return mode_meca_c
+   if (AsType(vale_rigi)== matr_asse_depl_r) : return mode_meca
+   if (AsType(vale_rigi)== matr_asse_depl_c) : return mode_meca_c
+   if (AsType(vale_rigi)== matr_asse_pres_r) : return mode_acou
+   if (AsType(vale_rigi)== matr_asse_gene_r) : return mode_gene
+   if (AsType(vale_rigi)== matr_asse_gene_c) : return mode_gene
+
+   raise AsException("type de concept résultat non prevu")
+
+
+CALC_MODES=MACRO(nom="CALC_MODES",
+                 op=OPS('Modal.calc_modes_ops.calc_modes_ops'),
+                 sd_prod=calc_modes_prod,
+                 reentrant='n',
+                 fr=tr("Calculer les modes propres ou de flambement d'une structure"),
+                 UIinfo={"groupes":("Résolution","Dynamique",)},
+
+                 TYPE_RESU    =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE", into=("DYNAMIQUE","MODE_FLAMB","GENERAL"),
+                                    fr=tr("Type d'analyse"), position='global'),
+
+                 OPTION       =SIMP(statut='d',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","PLUS_GRANDE","BANDE","CENTRE","TOUT","SEPARE","AJUSTE","PROCHE"),
+                                    fr=tr("Choix de la zone de recherche et par conséquent du shift du problème modal"), position='global'),
+
+         # b_bande = BLOC( condition = "(TYPE_RESU != 'DYNAMIQUE') or (TYPE_RESU == 'DYNAMIQUE' and OPTION != 'BANDE')",
+         b_bande = BLOC( condition = "not(TYPE_RESU == 'DYNAMIQUE' and OPTION == 'BANDE')",
+                 STOP_BANDE_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI" ,into=("OUI","NON") ),
+                        ),
+
+                 SOLVEUR_MODAL =FACT(statut='d',
+             b_solveur_simult = BLOC( condition = "OPTION in ('PLUS_PETITE','PLUS_GRANDE','BANDE','CENTRE','TOUT')",
+                     METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
+                                           into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ),
+             b_tri_diag =BLOC( condition = "METHODE == 'TRI_DIAG'",
+                     PREC_ORTHO      =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
+                     NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+                     PREC_LANCZOS    =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
+                     NMAX_ITER_QR    =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
+                     MODE_RIGIDE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                                           fr=tr("Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG")),
+                             ),
+             b_jacobi =BLOC( condition = "METHODE == 'JACOBI'",
+                     PREC_BATHE      =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
+                     NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
+                     PREC_JACOBI     =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+                     NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
+                            ),
+             b_sorensen =BLOC( condition = "METHODE == 'SORENSEN'",
+                     PREC_SOREN      =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
+                     NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
+                     PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717),
+                              ),
+             b_qz =BLOC( condition = "METHODE == 'QZ'",
+                     TYPE_QZ      =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ),
+                        ),
+                     APPROCHE     =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
+                                       fr=tr("Choix du pseudo-produit scalaire pour la résolution du problème quadratique")),
+                 regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
+                     DIM_SOUS_ESPACE =SIMP(statut='f',typ='I'),
+                     COEF_DIM_ESPACE =SIMP(statut='f',typ='I'),
+                                     ),
+             b_solveur_inv    = BLOC( condition = "OPTION in ('SEPARE','AJUSTE','PROCHE')",
+                     NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=1 ),
+                     PREC_SEPARE     =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=1.E-70 ),
+                     NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=1 ),
+                     PREC_AJUSTE     =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=1.E-70 ),
+                     OPTION_INV      =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ),
+                     PREC_INV        =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=1.E-70,fr=tr("Précision de convergence")),
+                     NMAX_ITER_INV   =SIMP(statut='f',typ='I',defaut= 30,val_min=1 ),
+                                    ),
+                                     ),
+
+         
+
+#########################################################################################
+#  catalogue du cas DYNAMIQUE
+#########################################################################################
+         b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
+
+                 MATR_RIGI  =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,
+                                                  matr_asse_gene_r,matr_asse_gene_c,matr_asse_pres_r ) ),
+                 MATR_MASS  =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+                 MATR_AMOR  =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
+      
+                 CALC_FREQ  =FACT(statut='d', min=0,
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",
+                                 fr=tr("Recherche des plus petites fréquences propres"),
+                     NMAX_FREQ  =SIMP(statut='f',typ='I',defaut=10,val_min=0 ),
+                                 ),
+             b_plus_grande =BLOC(condition = "OPTION == 'PLUS_GRANDE'",
+                                 fr=tr("Recherche des plus grandes fréquences propres"),
+                     NMAX_FREQ  =SIMP(statut='f',typ='I',defaut=1,val_min=0 ),
+                                 ),
+             b_centre      =BLOC(condition = "OPTION == 'CENTRE'",
+                                 fr=tr("Recherche des fréquences propres les plus proches d'une valeur donnée"),
+                     FREQ       =SIMP(statut='o',typ='R',
+                                      fr=tr("Fréquence autour de laquelle on cherche les fréquences propres")),
+                     AMOR_REDUIT=SIMP(statut='f',typ='R',),
+                     NMAX_FREQ  =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+                                 ),
+             b_bande       =BLOC(condition = "OPTION == 'BANDE'",
+                                 fr=tr("Recherche des fréquences propres dans une bande donnée"),
+                     FREQ       =SIMP(statut='o',typ='R',min=2,max='**', validators=AndVal((OrdList('croissant'), NoRepeat())),
+                                      fr=tr("Valeurs des fréquences délimitant la (les) bande(s) de recherche"), position='global'),
+                     TABLE_FREQ =SIMP(statut= 'f',typ=table_sdaster),
+                                 ),
+             b_param_inv_dyn = BLOC( condition = "(OPTION in ('SEPARE','AJUSTE','PROCHE'))",
+                     FREQ            =SIMP(statut='o',typ='R',max='**',
+                                           validators=AndVal((OrdList('croissant'), NoRepeat())),),
+                     AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
+                     NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ), # il faudra supprimer la valeur par défaut qui est inutile car ignorée dans le fortran
+                                    ),
+                     NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 3,val_min=0 ),
+                     PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
+                     SEUIL_FREQ      =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+                                  ),
+
+             b_multi_bande =BLOC( condition= "OPTION == 'BANDE' and len(FREQ)>2",
+                 NIVEAU_PARALLELISME  =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("PARTIEL","COMPLET") ),
+                 STOP_BANDE_VIDE      =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ),
+                                 ),
+             b_mono_bande  =BLOC( condition= "OPTION == 'BANDE' and len(FREQ)<=2",
+                 STOP_BANDE_VIDE      =SIMP(statut='f',typ='TXM',defaut="OUI" ,into=("OUI","NON") ),
+                                 ),
+
+             # opérandes de post-traitement
+             b_dyn_phys =BLOC( condition= "AsType(MATR_RIGI) == matr_asse_depl_r",
+                 NORM_MODE  =FACT(statut='f',
+                     NORME     =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA",
+                                     into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ),
+                     INFO      =SIMP(statut='f',typ='I',defaut= 1 ,into=(1,2) ),
+                                 ),
+                 FILTRE_MODE=FACT(statut='f',
+                     CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
+                                     into=("MASS_EFFE_UN","MASS_GENE") ),
+                     SEUIL     =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+                                  ),
+                 IMPRESSION =FACT(statut='f',
+                     TOUT_PARA       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+                     CUMUL           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+                     CRIT_EXTR       =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
+                                           into=("MASS_EFFE_UN","MASS_GENE",) ),
+                                  ),
+                              ),
+                       ),
+
+#########################################################################################
+#  catalogue des cas MODE_FLAMB et GENERAL
+#########################################################################################
+         b_flamb    =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
+                 MATR_RIGI      =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+                 MATR_RIGI_GEOM =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+                          ),
+         
+         b_general  =BLOC(condition = "TYPE_RESU == 'GENERAL'",
+                 MATR_A         =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+                 MATR_B         =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+                          ),
+
+         b_flamb_general =BLOC(condition = "TYPE_RESU in ('MODE_FLAMB','GENERAL')",
+                 CALC_CHAR_CRIT  =FACT(statut='d',min=0,
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",
+                                 fr=tr("Recherche des plus petites valeurs propres"),
+                     NMAX_CHAR_CRIT =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+                                 ),
+             b_centre    =BLOC(condition = "OPTION == 'CENTRE'",
+                               fr=tr("Recherche des valeurs propres les plus proches d'une valeur donnée"),
+                     CHAR_CRIT      =SIMP(statut='o',typ='R',
+                                          fr=tr("Charge critique autour de laquelle on cherche les charges critiques propres")),
+                     NMAX_CHAR_CRIT =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+                               ),
+             b_bande     =BLOC(condition = "OPTION == 'BANDE'",
+                               fr=tr("Recherche des valeurs propres dans une bande donnée"),
+                     CHAR_CRIT      =SIMP(statut='o',typ='R',min=2,max=2,
+                                          validators=AndVal((OrdList('croissant'), NoRepeat())),
+                                          fr=tr("Valeur des deux charges critiques délimitant la bande de recherche")),
+                     TABLE_CHAR_CRIT=SIMP(statut= 'f',typ=table_sdaster),
+      
+                               ),
+         b_param_inv_flamb_gen =BLOC(condition = "OPTION in ('SEPARE','AJUSTE','PROCHE')",
+                     CHAR_CRIT      =SIMP(statut='o',typ='R',max='**',
+                                          validators=AndVal((OrdList('croissant'), NoRepeat())),),
+                     NMAX_CHAR_CRIT =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
+                                     ),
+                     NMAX_ITER_SHIFT=SIMP(statut='f',typ='I',defaut= 3,val_min=0 ),
+                     PREC_SHIFT     =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
+                     SEUIL_CHAR_CRIT=SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+                                       ),
+                               ),
+
+#########################################################################################
+#        Catalogue commun SOLVEUR
+         b_solveur_lin_simult =BLOC(condition = "OPTION in ('PLUS_PETITE','PLUS_GRANDE','BANDE','CENTRE','TOUT')",
+                 SOLVEUR =C_SOLVEUR('MODE_ITER_SIMULT'),
+                                    ),
+         b_solveur_lin_inv    =BLOC(condition = "OPTION in ('SEPARE','AJUSTE','PROCHE')",
+                 SOLVEUR =C_SOLVEUR('MODE_ITER_INV'),
+                                    ),
+#########################################################################################
+
+#########################################################################################
+#        Vérification a posteriori
+                 VERI_MODE =FACT(statut='d',min=0,
+                     STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+             b_veri_mode_simlut = BLOC( condition = "OPTION in ('PLUS_PETITE','PLUS_GRANDE','BANDE','CENTRE','TOUT')",
+                     SEUIL       =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=1.e-6,
+                                       fr=tr("Valeur limite admise pour l'erreur a posteriori des modes")),
+                     PREC_SHIFT  =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
+                 b_sturm_simult=BLOC( condition = "(OPTION in ('PLUS_PETITE','PLUS_GRANDE','CENTRE','TOUT')) or (TYPE_RESU!='DYNAMIQUE' and OPTION == 'BANDE')", 
+                     STURM       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+                                      ),
+                 b_sturm_bande =BLOC( condition = "TYPE_RESU=='DYNAMIQUE' and OPTION == 'BANDE'", 
+                     STURM       =SIMP(statut='f',typ='TXM',defaut="GLOBAL",into=("GLOBAL","LOCAL","OUI","NON") ),
+                                     ),
+                                       ),
+             b_veri_mode_inv = BLOC( condition = "OPTION in ('SEPARE','AJUSTE','PROCHE')",
+                     SEUIL       =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=1.e-2,
+                                       fr=tr("Valeur limite admise pour l'erreur a posteriori des modes")),
+                                    ),
+                                 ),
+#########################################################################################
+
+                 INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+                 TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+
+);
+
+# -*- coding: utf-8 -*-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -11232,8 +12799,8 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",
 # person_in_charge: jean-michel.proix at edf.fr
 CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='f',
             UIinfo={"groupes":("Résolution",)},
-            fr="Intégrer une loi de comportement",
-     MATER           =SIMP(statut='o',typ=mater_sdaster,max=1),
+            fr=tr("Intégrer une loi de comportement"),
+     MATER           =SIMP(statut='o',typ=mater_sdaster,max=30),
      COMPORTEMENT    =C_COMPORTEMENT('CALC_POINT_MAT'),
      INCREMENT       =C_INCREMENT('MECANIQUE'),
      NEWTON          =C_NEWTON(),
@@ -11316,39 +12883,33 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='
      VARI_INIT=FACT(statut='f',
             VALE = SIMP(statut='o',typ='R',max='**'),
                        ),
-     FORMAT_TABLE    =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),),
+     FORMAT_TABLE   =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),),
 
      NB_VARI_TABLE  =SIMP(statut='f',typ='I',max=1,),
 
-     OPER_TANGENT  =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",),
+     OPER_TANGENT   =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",),
 
-     ARCHIVAGE       =FACT(statut='f',
+     ARCHIVAGE      =FACT(statut='f',
        LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
        INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
        PAS_ARCH        =SIMP(statut='f',typ='I' ),
        PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
                            ),
 
-
-     # on permet certaines variables de commandes scalaires, définies par une fonction du temps
-     # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
-     LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA",
-                                                           "M_ACIER","M_ZIRC","NEUT1","NEUT2")),
+    # variables de commandes scalaires, définies par une fonction du temps
 
      AFFE_VARC    = FACT(statut='f',max='**',
-      NOM_VARC        =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC",
-                                                        "EPSA","NEUT1","NEUT2")),
-      VALE_FONC   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-
-      # VALE_REF est nécessaire pour certaines VARC :
-      B_VALE_REF          =BLOC(condition="NOM_VARC in ('TEMP', 'SECH')",
-           VALE_REF          =SIMP(statut='o',typ='R'),
-      ),
-      ),
-
-
-
-     );
+        NOM_VARC    = SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","NEUT1","NEUT2",
+                                                 "PFERRITE","PPERLITE","PBAINITE","PMARTENS",  
+                                                 "ALPHPUR","ALPHBETA", #"M_ZIRC",
+                                                 "EPSA",
+                                                  )),
+        VALE_FONC   = SIMP(statut='f',typ=(fonction_sdaster,formule) ),
+        B_VALE_REF          =BLOC(condition="NOM_VARC in ('TEMP', 'SECH')",
+            VALE_REF         =SIMP(statut='o',typ='R'), ),
+                        ),
+);
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -11372,7 +12933,7 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='
 CALC_PRECONT=MACRO(nom="CALC_PRECONT",
                    op=OPS('Macro.calc_precont_ops.calc_precont_ops'),
                    sd_prod=evol_noli,
-                   fr="Imposer la tension définie par le BPEL dans les cables",
+                   fr=tr("Imposer la tension définie par le BPEL dans les cables"),
                    reentrant='f',UIinfo={"groupes":("Modélisation",)},
          reuse =SIMP(statut='f',typ='evol_noli'),
          MODELE           =SIMP(statut='o',typ=modele_sdaster),
@@ -11383,26 +12944,9 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",
          INCREMENT        =C_INCREMENT('MECANIQUE'),
          RECH_LINEAIRE    =C_RECH_LINEAIRE(),
          CONVERGENCE      =C_CONVERGENCE(),
-         ETAT_INIT       =FACT(statut='f',
-            regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',),
-                    EXCLUS('EVOL_NOLI','DEPL',),
-                    EXCLUS('EVOL_NOLI','SIGM',),
-                    EXCLUS('EVOL_NOLI','VARI',),
-                    EXCLUS('NUME_ORDRE','INST'), ),
-            DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-            SIGM            =SIMP(statut='f',typ=(carte_sdaster,cham_elem)),
-            VARI            =SIMP(statut='f',typ=cham_elem),
-            EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-            NUME_ORDRE      =SIMP(statut='f',typ='I'),
-            INST            =SIMP(statut='f',typ='R'),
-            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-            b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-            b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-                PRECISION       =SIMP(statut='o',typ='R',),),
-            NUME_DIDI       =SIMP(statut='f',typ='I'),
-            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-          ),
+#-------------------------------------------------------------------
+         ETAT_INIT       =C_ETAT_INIT('STAT_NON_LINE','f'),
+#-------------------------------------------------------------------
          METHODE = SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPLEX")),
          b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'",
                            NEWTON = C_NEWTON(),
@@ -11419,11 +12963,52 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",
 
          EXCIT           =FACT(statut='o',max='**',
            CHARGE          =SIMP(statut='o',typ=char_meca),
+           TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+                                 into=("FIXE_CSTE","DIDI"))
          ),
 
          COMPORTEMENT       =C_COMPORTEMENT(),
   )  ;
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# Le calcul de la pression sur une interface est utilie en mécanique notamment  
+# en mécanique de contact, mécanique de la rupture,....
+# Cette routine produit un cham_gd calculé à partir du tenseur de contraintes nodale SIEF_NOEU
+# L'option n'existe que pour les éléments isoparamétriques mais elle pourra être étendue 
+# au frottement et aux éléments de structures si le besoin se manifeste. 
+
+
+CALC_PRESSION=MACRO(nom="CALC_PRESSION",
+                    op=OPS('Macro.calc_pression_ops.calc_pression_ops'),
+                    sd_prod=cham_no_sdaster,
+                    fr="Calcul de la pression nodale sur une interface a partir de SIEF_NOEUD. Cette option n existe que pour les éléments isoparamétriques.",
+
+         MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster),
+         RESULTAT        =SIMP(statut='o',typ=(evol_elas,evol_noli)),
+         GROUP_MA        =SIMP(statut='o',typ=grma ,validators=NoRepeat(),max='**'),
+         INST            =SIMP(statut='o',typ='R',max='**'),
+         MODELE          =SIMP(statut='f',typ=modele_sdaster),
+         NUME_ORDRE      =SIMP(statut='f',typ='I'),
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), 
+         PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),             
+         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+);
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -11448,7 +13033,7 @@ CALC_SPEC=MACRO(nom="CALC_SPEC",
                 op=OPS('Macro.calc_spec_ops.calc_spec_ops'),
                 sd_prod=interspectre,
                 reentrant='n',
-                fr="Calcule une matrice interspectrale ou des fonctions de transferts",
+                fr=tr("Calcule une matrice interspectrale ou des fonctions de transferts"),
                 UIinfo={"groupes":("Fonctions",)},
          TAB_ECHANT      =FACT(statut='f',
            NOM_TAB                  =SIMP(statut='o',typ=table_sdaster),
@@ -11503,7 +13088,7 @@ CALC_SPEC=MACRO(nom="CALC_SPEC",
 # ======================================================================
 CALC_STABILITE=MACRO(nom="CALC_STABILITE",sd_prod=table_container,
                op=OPS('Macro.calc_stabilite_ops.calc_stabilite_ops'),
-               fr="post-traitement modes non-linéaires : filtre resultats et calcul de stabilité",
+               fr=tr("post-traitement modes non-linéaires : filtre resultats et calcul de stabilité"),
                reentrant='f',
                UIinfo={"groupes":("Résolution","Dynamique",)},
 
@@ -11531,9 +13116,6 @@ CALC_STABILITE=MACRO(nom="CALC_STABILITE",sd_prod=table_container,
 
 )  ;
 
-
-
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -11570,18 +13152,18 @@ def calc_table_prod(self, TABLE, ACTION, **kargs):
 CALC_TABLE=MACRO(nom="CALC_TABLE",
                  op=OPS('Macro.calc_table_ops.calc_table_ops'),
                  sd_prod=calc_table_prod,
-                 fr="Opérations sur une table",
+                 fr=tr("Opérations sur une table"),
                  UIinfo={"groupes":("Tables",)},
                  reentrant='f',
    TABLE  = SIMP(statut='o',typ=table_sdaster),
    ACTION = FACT(statut='o', max='**',
-                    fr = "Suite des opérations à effectuer sur la table",
+                    fr = tr("Suite des opérations à effectuer sur la table"),
       OPERATION = SIMP(statut='o', typ='TXM',
                   into=('FILTRE', 'EXTR', 'RENOMME', 'TRI', 'COMB', 'AJOUT_LIGNE',
                         'OPER', 'SUPPRIME', 'AJOUT_COLONNE')),
 
       b_filtre = BLOC(condition="OPERATION == 'FILTRE'",
-                      fr="Sélectionne les lignes de la table vérifiant un critère",
+                      fr=tr("Sélectionne les lignes de la table vérifiant un critère"),
          NOM_PARA  = SIMP(statut='o',typ='TXM'),
          CRIT_COMP = SIMP(statut='f',typ='TXM',defaut="EQ",
                           into=('EQ','NE','GT','LT','GE','LE','REGEXP',
@@ -11603,70 +13185,70 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",
       ),
 
       b_extr = BLOC(condition="OPERATION ==  'EXTR'",
-                    fr="Extrait une ou plusieurs colonnes de la table",
+                    fr=tr("Extrait une ou plusieurs colonnes de la table"),
          NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                         fr="Noms des colonnes à extraire"),
+                         fr=tr("Noms des colonnes à extraire")),
       ),
 
       b_suppr = BLOC(condition="OPERATION ==  'SUPPRIME'",
-                    fr="Supprime une ou plusieurs colonnes de la table",
+                    fr=tr("Supprime une ou plusieurs colonnes de la table"),
          NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                         fr="Noms des colonnes à supprimer"),
+                         fr=tr("Noms des colonnes à supprimer")),
       ),
 
       b_renomme = BLOC(condition="OPERATION == 'RENOMME'",
-                       fr="Renomme un ou plusieurs paramètres de la table",
+                       fr=tr("Renomme un ou plusieurs paramètres de la table"),
          NOM_PARA = SIMP(statut='o', typ='TXM', validators=NoRepeat(), min=2, max=2,
-                         fr="Couple (ancien nom du paramètre, nouveau nom du paramètre)",),
+                         fr=tr("Couple (ancien nom du paramètre, nouveau nom du paramètre)"),),
       ),
 
       b_tri = BLOC(condition="OPERATION == 'TRI'",
-                   fr="Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres",
+                   fr=tr("Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres"),
          NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
          ORDRE    = SIMP(statut='f',typ='TXM',defaut="CROISSANT",
                          into=("CROISSANT","DECROISSANT") ),
       ),
 
       b_comb = BLOC(condition="OPERATION == 'COMB'",
-                    fr="Combine deux tables ayant éventuellement des paramètres communs",
+                    fr=tr("Combine deux tables ayant éventuellement des paramètres communs"),
          TABLE    = SIMP(statut='o',typ=table_sdaster,
-                         fr="Table dont les colonnes vont venir surcharger la table initiale"),
+                         fr=tr("Table dont les colonnes vont venir surcharger la table initiale")),
          NOM_PARA = SIMP(statut='f',typ='TXM',max='**',
-                         fr="Noms des paramètres dont les valeurs doivent etre identiques dans les deux tables "\
-                            "pour que les colonnes soient combinées"),
+                         fr=tr("Noms des paramètres dont les valeurs doivent etre identiques dans les deux tables "
+                              "pour que les colonnes soient combinées")),
          RESTREINT = SIMP(statut='f', typ='TXM', into=('OUI', 'NON'), defaut='NON',
-                          fr="Restreint la fusion uniquement aux lignes où les NOM_PARA sont communs"),
+                          fr=tr("Restreint la fusion uniquement aux lignes où les NOM_PARA sont communs")),
          FORMAT_R       =SIMP(statut='f',typ='TXM'),
       ),
 
       b_ajout_lig = BLOC(condition="OPERATION == 'AJOUT_LIGNE'",
-                    fr="Ajoute une ligne à la table initiale",
+                    fr=tr("Ajoute une ligne à la table initiale"),
          NOM_PARA = SIMP(statut='o',typ='TXM',max='**',
-                         fr="Noms des paramètres dont les valeurs sont fournies sous VALE"),
-         VALE     = SIMP(statut='o',typ=not_checked,max='**', fr='Valeurs des paramètres'),
+                         fr=tr("Noms des paramètres dont les valeurs sont fournies sous VALE")),
+         VALE     = SIMP(statut='o',typ=not_checked,max='**', fr=tr('Valeurs des paramètres')),
       ),
 
       b_ajout_col = BLOC(condition="OPERATION == 'AJOUT_COLONNE'",
-                    fr="Ajoute une colonne constante à la table initiale",
+                    fr=tr("Ajoute une colonne constante à la table initiale"),
          NOM_PARA = SIMP(statut='o',typ='TXM',max='**',
-                         fr="Noms des paramètres des colonnes à ajouter"),
+                         fr=tr("Noms des paramètres des colonnes à ajouter")),
          VALE   = SIMP(statut='o', typ=not_checked, max='**',
-                       fr="Valeur constante pour chaque colonne"),
+                       fr=tr("Valeur constante pour chaque colonne")),
       ),
 
       b_oper = BLOC(condition="OPERATION == 'OPER'",
-                    fr="Applique une formule dans laquelle les variables sont les paramètres de la table",
+                    fr=tr("Applique une formule dans laquelle les variables sont les paramètres de la table"),
          FORMULE  = SIMP(statut='o',typ=formule,
-                         fr="Formule à appliquer aux colonnes de la table"),
+                         fr=tr("Formule à appliquer aux colonnes de la table")),
          NOM_PARA = SIMP(statut='o',typ='TXM',
-                         fr="Nom de la nouvelle colonne"),
+                         fr=tr("Nom de la nouvelle colonne")),
          NOM_COLONNE = SIMP(statut='f',typ='TXM', max='**',
-                         fr="Nom des colonnes à utiliser en tant que paramètres de la formule"),
+                         fr=tr("Nom des colonnes à utiliser en tant que paramètres de la formule")),
       ),
    ),
 
    TITRE = SIMP(statut='f',typ='TXM',max='**',
-                fr="Titre de la table produite"),
+                fr=tr("Titre de la table produite")),
    INFO  = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )
 
@@ -11690,8 +13272,8 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",
 
 CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
-                fr="Définir un champ theta pour le calcul du taux de restitution d'énergie"
-                    +" ou des facteurs d'intensité de contraintes",
+                fr=tr("Définir un champ theta pour le calcul du taux de restitution d'énergie"
+                     " ou des facteurs d'intensité de contraintes"),
          regles=(UN_PARMI('THETA_2D','THETA_3D'),
                  PRESENT_ABSENT('THETA_2D','DIRE_THETA'),
                  EXCLUS('DIRECTION','DIRE_THETA'),),
@@ -11753,19 +13335,19 @@ def calc_vect_elem_prod(OPTION,**args):
 
 CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
-                    fr="Calcul des seconds membres élémentaires",
+                    fr=tr("Calcul des seconds membres élémentaires"),
          OPTION          =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU") ),
          b_char_meca     =BLOC(condition = "OPTION=='CHAR_MECA'",
            regles=(AU_MOINS_UN('CHARGE','MODELE'),),
            CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
            MODELE          =SIMP(statut='f',typ=modele_sdaster),
-           b_charge     =BLOC(condition = "CHARGE != None", fr="modèle ne contenant pas de sous-structure",
+           b_charge     =BLOC(condition = "CHARGE != None", fr=tr("modèle ne contenant pas de sous-structure"),
               CHAM_MATER   =SIMP(statut='f',typ=cham_mater),
               CARA_ELEM    =SIMP(statut='f',typ=cara_elem),
               INST         =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
               MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
-           b_modele     =BLOC(condition = "(MODELE != None)",fr="modèle contenant une sous-structure",
+           b_modele     =BLOC(condition = "(MODELE != None)",fr=tr("modèle contenant une sous-structure"),
               SOUS_STRUC      =FACT(statut='o',min=01,
                 regles=(UN_PARMI('TOUT','SUPER_MAILLE'),),
                 CAS_CHARGE  =SIMP(statut='o',typ='TXM' ),
@@ -11806,7 +13388,7 @@ CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentr
 
 CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='f',
             UIinfo={"groupes":("Résolution",)},
-            fr="Calculer des objets élémentaires comme une matrice tangente, intégrer une loi de comportement, etc...",
+            fr=tr("Calculer des objets élémentaires comme une matrice tangente, intégrer une loi de comportement, etc..."),
      OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="COMPORTEMENT",
                            into=( "COMPORTEMENT","MATR_TANG_ELEM","FORC_INTE_ELEM","FORC_NODA_ELEM"),),
      MODELE          =SIMP(statut='o',typ=modele_sdaster),
@@ -11878,33 +13460,33 @@ CHAINAGE_THM=MACRO(nom="CHAINAGE_THM",
                    reentrant='n',
                    UIinfo={"groupes":("Résultats et champs",)},
                    docu="Ux.xx.xx",
-                   fr="Calcul des variables de commande pour le chaînage THM",
+                   fr=tr("Calcul des variables de commande pour le chaînage THM"),
 
          TYPE_CHAINAGE  = SIMP(statut='o',typ='TXM',
                                into=("HYDR_MECA","MECA_HYDR","INIT",),
-                               fr="Sens du chaînage ou initialisation des matrices de projection"),
+                               fr=tr("Sens du chaînage ou initialisation des matrices de projection")),
 
          # Cas HYDR_MECA :
 
-         b_hydr_meca    = BLOC(condition = "TYPE_CHAINAGE == 'HYDR_MECA'",fr="Chaînage hydraulique vers mécanique",
+         b_hydr_meca    = BLOC(condition = "TYPE_CHAINAGE == 'HYDR_MECA'",fr=tr("Chaînage hydraulique vers mécanique"),
 
-             RESU_HYDR       = SIMP(statut='o',typ=resultat_sdaster,fr="Résultat hydraulique à chaîner" ),
-             MODELE_MECA     = SIMP(statut='o',typ=modele_sdaster  ,fr="Modèle d'arrivée mécanique"),
+             RESU_HYDR       = SIMP(statut='o',typ=resultat_sdaster,fr=tr("Résultat hydraulique à chaîner") ),
+             MODELE_MECA     = SIMP(statut='o',typ=modele_sdaster  ,fr=tr("Modèle d'arrivée mécanique")),
              TYPE_RESU       = SIMP(statut='f',typ='TXM',into=("EVOL_VARC","CHAM_NO"),defaut="EVOL_VARC", ),
              MATR_HM1        = SIMP(statut='o',typ=corresp_2_mailla,),
              MATR_HM2        = SIMP(statut='o',typ=corresp_2_mailla,),
 
-             b_type_resu     = BLOC(condition = "TYPE_RESU == 'EVOL_VARC'",fr="Instant obligatoire si TYPE_RESU=EVOL_VARC",
+             b_type_resu     = BLOC(condition = "TYPE_RESU == 'EVOL_VARC'",fr=tr("Instant obligatoire si TYPE_RESU=EVOL_VARC"),
                                    INST = SIMP(statut='o',typ='R',validators=NoRepeat(),min=1,max=1),
 
            ),),
 
          # Cas MECA_HYDR :
 
-         b_meca_hydr    = BLOC(condition = "TYPE_CHAINAGE == 'MECA_HYDR'",fr="Chaînage mécanique vers hydraulique",
+         b_meca_hydr    = BLOC(condition = "TYPE_CHAINAGE == 'MECA_HYDR'",fr=tr("Chaînage mécanique vers hydraulique"),
 
-             RESU_MECA       = SIMP(statut='o',typ=resultat_sdaster,fr="Résultat mécanique à chaîner" ),
-             MODELE_HYDR     = SIMP(statut='o',typ=modele_sdaster  ,fr="Modèle d'arrivée hydraulique"),
+             RESU_MECA       = SIMP(statut='o',typ=resultat_sdaster,fr=tr("Résultat mécanique à chaîner") ),
+             MODELE_HYDR     = SIMP(statut='o',typ=modele_sdaster  ,fr=tr("Modèle d'arrivée hydraulique")),
 
              MATR_MH         = SIMP(statut='o',typ=corresp_2_mailla,),
              INST            = SIMP(statut='o',typ='R',validators=NoRepeat(),min=1,max=1),
@@ -11912,10 +13494,10 @@ CHAINAGE_THM=MACRO(nom="CHAINAGE_THM",
 
          # Cas INIT :
 
-         b_init    = BLOC(condition = "TYPE_CHAINAGE == 'INIT'",fr="Calcul des matrices de projection",
+         b_init    = BLOC(condition = "TYPE_CHAINAGE == 'INIT'",fr=tr("Calcul des matrices de projection"),
 
-             MODELE_MECA     = SIMP(statut='o',typ=modele_sdaster  ,fr="Modèle mécanique"),
-             MODELE_HYDR     = SIMP(statut='o',typ=modele_sdaster  ,fr="Modèle hydraulique"),
+             MODELE_MECA     = SIMP(statut='o',typ=modele_sdaster  ,fr=tr("Modèle mécanique")),
+             MODELE_HYDR     = SIMP(statut='o',typ=modele_sdaster  ,fr=tr("Modèle hydraulique")),
 
              MATR_MH         = SIMP(statut='o',typ=CO,),
              MATR_HM1        = SIMP(statut='o',typ=CO,),
@@ -11944,7 +13526,7 @@ CHAINAGE_THM=MACRO(nom="CHAINAGE_THM",
 # ======================================================================
 # person_in_charge: xavier.desroches at edf.fr
 COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier,
-                  reentrant='n',fr="Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières",
+                  reentrant='n',fr=tr("Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières"),
             UIinfo={"groupes":("Post-traitements",)},
          RESULTAT        =SIMP(statut='o',typ=(fourier_elas,fourier_ther),),
          ANGLE           =SIMP(statut='o',typ='R',max='**'),
@@ -11986,7 +13568,7 @@ def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args):
   raise AsException("type de concept resultat non prevu")
 
 COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op=  31,sd_prod=comb_matr_asse_prod,
-                    fr="Effectuer la combinaison linéaire de matrices assemblées",
+                    fr=tr("Effectuer la combinaison linéaire de matrices assemblées"),
                     reentrant='f',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),),
@@ -12031,7 +13613,7 @@ COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op=  31,sd_prod=comb_matr_asse_prod,
 # ======================================================================
 # person_in_charge: sylvie.audebert at edf.fr
 COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca,
-                     fr="Réponse sismique par recombinaison modale par une méthode spectrale",
+                     fr=tr("Réponse sismique par recombinaison modale par une méthode spectrale"),
                      reentrant='n',
             UIinfo={"groupes":("Post-traitements","Dynamique",)},
          regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'),
@@ -12060,19 +13642,19 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca,
 
          EXCIT           =FACT(statut='o',max='**',
            regles=(UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),),
-           AXE             =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant un seul axe",),
-           TRI_AXE         =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant les trois axes mais avec le meme spectre",),
+           AXE             =SIMP(statut='f',typ='R',max=3,fr=tr("Excitation suivant un seul axe"),),
+           TRI_AXE         =SIMP(statut='f',typ='R',max=3,fr=tr("Excitation suivant les trois axes mais avec le meme spectre"),),
            TRI_SPEC        =SIMP(statut='f',typ='TXM',into=("OUI",),
-                                 fr="Excitation suivant les trois axes  avec trois spectres"),
-           b_axe           =BLOC(condition = "AXE != None",fr="Excitation suivant un seul axe",
+                                 fr=tr("Excitation suivant les trois axes  avec trois spectres")),
+           b_axe           =BLOC(condition = "AXE != None",fr=tr("Excitation suivant un seul axe"),
              SPEC_OSCI       =SIMP(statut='o',typ=(nappe_sdaster,formule),),
              ECHELLE         =SIMP(statut='f',typ='R',),
            ),
-           b_tri_axe       =BLOC(condition = "TRI_AXE != None",fr="Excitation suivant les trois axes mais avec le meme spectre",
+           b_tri_axe       =BLOC(condition = "TRI_AXE != None",fr=tr("Excitation suivant les trois axes mais avec le meme spectre"),
              SPEC_OSCI       =SIMP(statut='o',typ=(nappe_sdaster,formule),),
              ECHELLE         =SIMP(statut='f',typ='R',),
            ),
-           b_tri_spec      =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes  avec trois spectres",
+           b_tri_spec      =BLOC(condition = "TRI_SPEC != None",fr=tr("Excitation suivant les trois axes  avec trois spectres"),
              SPEC_OSCI       =SIMP(statut='o',typ=(nappe_sdaster,formule),min=3,max=3 ),
              ECHELLE         =SIMP(statut='f',typ='R',min=3,max=3),
            ),
@@ -12083,9 +13665,9 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca,
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),)
          ),
          MONO_APPUI      =SIMP(statut='f',typ='TXM',into=("OUI",),
-                                 fr="excitation imposée unique" ),
+                                 fr=tr("excitation imposée unique") ),
          MULTI_APPUI      =SIMP(statut='f',typ='TXM',position='global',into=("DECORRELE","CORRELE"),
-                                 fr="excitation imposée unique" ),
+                                 fr=tr("excitation imposée unique") ),
          b_decorrele     =BLOC(condition = "MULTI_APPUI == 'DECORRELE' ",
            GROUP_APPUI     =FACT(statut='f',max='**',
            regles=(UN_PARMI('NOEUD','GROUP_NO' ),),
@@ -12183,7 +13765,7 @@ copier_ltyp=(
 
 COPIER=OPER(nom="COPIER",op= 185,sd_prod=copier_prod,reentrant='f',
             UIinfo={"groupes":("Gestion du travail",)},
-            fr="Copier un concept utilisateur sous un autre nom",
+            fr=tr("Copier un concept utilisateur sous un autre nom"),
 
             CONCEPT = SIMP(statut='o',typ=copier_ltyp,),
             INFO   = SIMP(statut='f', typ='I', into=(1, 2), defaut=1, ),
@@ -12219,7 +13801,7 @@ def crea_champ_prod(TYPE_CHAM,**args):
 
 
 CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
-                fr="Création d'un champ ",reentrant='f',
+                fr=tr("Création d'un champ "),reentrant='f',
             UIinfo={"groupes":("Résultats et champs",)},
 
        # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx
@@ -12310,7 +13892,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
                              ),
 #        ------------------------------------------------------------------
          b_comb          =BLOC(condition = "OPERATION == 'COMB'",
-                               fr="Pour faire une combinaison linéaire de cham_no ayant meme profil",
+                               fr=tr("Pour faire une combinaison linéaire de cham_no ayant meme profil"),
              COMB            =FACT(statut='o',max='**',
                 CHAM_GD         =SIMP(statut='o',typ=cham_no_sdaster),
                 COEF_R          =SIMP(statut='o',typ='R'),
@@ -12352,15 +13934,14 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
              CARA_ELEM       =SIMP(statut='f',typ=(cara_elem),min=1,max=1),
              CHARGE          =SIMP(statut='f',typ=(char_meca),min=1,max=1),
              b_extr_maillage =BLOC(condition = "MAILLAGE != None and TABLE == None",
-                 NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=("GEOMETRIE",)),
+                 NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=("GEOMETRIE","ABSC_CURV")),
              ),
 
              b_extr_cara_elem =BLOC(condition = "CARA_ELEM != None",
                  NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),
                  into=('.CARGENBA', '.CARMASSI', '.CARCABLE', '.CARCOQUE', '.CARGEOBA', '.CARDISCK',
                        '.CARARCPO', '.CARGENPO', '.CARDISCM', '.CARORIEN', '.CARDISCA', '.CVENTCXF',
-                       '.CARPOUFL', '.CARGEOPO', '.CARDNSCK', '.CARDNSCM', '.CARDNSCA', '.CARDINFO',
-                       '.CAFIBR',   '.CANBSP',)),
+                       '.CARPOUFL', '.CARGEOPO', '.CARDINFO', '.CAFIBR',   '.CANBSP',)),
              ),
 
              b_extr_charge =BLOC(condition = "CHARGE != None",
@@ -12434,7 +14015,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
 )  ;
 
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
@@ -12460,9 +14041,9 @@ CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD",
                     op=OPS('Macro.crea_elem_ssd_ops.crea_elem_ssd_ops'),
                     sd_prod=crea_elem_ssd_prod,
                     reentrant='n',
-                    fr="Creation de macro-element dynamique en enchainant les commandes : "\
-                       "CALC_MATR_ELEM, NUME_DDL, ASSE_MATRICE, MODE_ITER_SIMULT, "\
-                       "DEFI_INTERF_DYNA, DEFI_BASE_MODALE et MACR_ELEM_DYNA",
+                    fr=tr("Creation de macro-element dynamique en enchainant les commandes : "
+                         "CALC_MATR_ELEM, NUME_DDL, ASSE_MATRICE, MODE_ITER_SIMULT, "
+                         "DEFI_INTERF_DYNA, DEFI_BASE_MODALE et MACR_ELEM_DYNA"),
                     UIinfo={"groupes":("Matrices/vecteurs",)},
 
 # pour CAL_MATR_ELEM + NUME_DDL + ASSE_MATRICE + MODE_ITER_SIMULT + MODE_STATIQUE
@@ -12476,17 +14057,18 @@ CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD",
          INTERFACE       =FACT(statut='o',max='**',
            regles=(ENSEMBLE('NOM','TYPE'),
                    UN_PARMI('NOEUD','GROUP_NO'),),
-           NOM             =SIMP(statut='f',typ='TXM' ),
-           TYPE            =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO",) ),
+           NOM             =SIMP(statut='o',typ='TXM' ),
+           TYPE            =SIMP(statut='o',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO",) ),
            NOEUD           =SIMP(statut='f',typ=no,max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
            FREQ            =SIMP(statut='f',typ='R',defaut= 1.),
+           MASQUE          =SIMP(statut='f',typ='TXM',max='**'),
          ),
 
 # pour DEFI_BASE_MODALE
          BASE_MODALE = FACT(statut='o',max = 1,
            TYPE   =SIMP(statut='o',typ='TXM',max=1,into=('CLASSIQUE','RITZ',),),
-           b_ritz = BLOC(condition = "TYPE == 'RITZ' ",fr="Base de type Ritz",
+           b_ritz = BLOC(condition = "TYPE == 'RITZ' ",fr=tr("Base de type Ritz"),
              TYPE_MODE  = SIMP(statut='f',typ='TXM',into=('STATIQUE','INTERFACE',),defaut='INTERFACE',),
              b_intf = BLOC(condition = "TYPE_MODE == 'INTERFACE' ",
                       NMAX_MODE_INTF  =SIMP(statut='f',typ='I',defaut=10,val_min=1),),
@@ -12504,25 +14086,25 @@ CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD",
          CALC_FREQ       =FACT(statut='d',min=0,
              STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
              OPTION      =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","SANS"),
-                                   fr="Choix de l option et par consequent du shift du probleme modal" ),
-             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+                                   fr=tr("Choix de l option et par consequent du shift du probleme modal") ),
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr=tr("Recherche des plus petites valeurs propres"),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
              ),
              b_centre       =BLOC(condition = "OPTION == 'CENTRE'",
-                                  fr="Recherche des valeurs propres les plus proches d une valeur donnee",
+                                  fr=tr("Recherche des valeurs propres les plus proches d une valeur donnee"),
                FREQ            =SIMP(statut='o',typ='R',
-                                     fr="Frequence autour de laquelle on cherche les frequences propres"),
+                                     fr=tr("Frequence autour de laquelle on cherche les frequences propres")),
                AMOR_REDUIT     =SIMP(statut='f',typ='R',),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
              ),
              b_bande         =BLOC(condition = "(OPTION == 'BANDE')",
-                                   fr="Recherche des valeurs propres dans une bande donnee",
+                                   fr=tr("Recherche des valeurs propres dans une bande donnee"),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 9999,val_min=0 ),
                FREQ            =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max='**',
-                                     fr="Valeurs des frequences delimitant les bandes de recherche"),
+                                     fr=tr("Valeurs des frequences delimitant les bandes de recherche")),
              ),
              APPROCHE        =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
-                                   fr="Choix du pseudo-produit scalaire pour la resolution du probleme quadratique" ),
+                                   fr=tr("Choix du pseudo-produit scalaire pour la resolution du probleme quadratique") ),
              DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
            ),
 
@@ -12547,7 +14129,7 @@ CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD",
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
-            reentrant='n',fr="Crée un maillage à partir d'un maillage existant",
+            reentrant='n',fr=tr("Crée un maillage à partir d'un maillage existant"),
             UIinfo={"groupes":("Maillage",)},
          regles=(UN_PARMI('COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
                         'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE',
@@ -12559,7 +14141,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
          MAILLAGE        =SIMP(statut='f',typ=maillage_sdaster ),
          GEOM_FIBRE           = SIMP(statut='f',max=1,typ=gfibre_sdaster),
 
-         CREA_POI1       =FACT(statut='f',max='**',fr="Création de mailles de type POI1 à partir de noeuds",
+         CREA_POI1       =FACT(statut='f',max='**',fr=tr("Création de mailles de type POI1 à partir de noeuds"),
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD' ),),
            NOM_GROUP_MA    =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -12568,7 +14150,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
            NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
          ),
-         CREA_MAILLE     =FACT(statut='f',max='**',fr="Duplication de mailles",
+         CREA_MAILLE     =FACT(statut='f',max='**',fr=tr("Duplication de mailles"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -12576,7 +14158,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_MAILLE     =SIMP(statut='o',typ='TXM' ),
            PREF_NUME       =SIMP(statut='f',typ='I' ),
          ),
-         CREA_GROUP_MA   =FACT(statut='f',max='**',fr="Duplication de mailles et création de groupes de mailles",
+         CREA_GROUP_MA   =FACT(statut='f',max='**',fr=tr("Duplication de mailles et création de groupes de mailles"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            NOM             =SIMP(statut='o',typ='TXM'),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -12585,12 +14167,12 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_MAILLE     =SIMP(statut='o',typ='TXM' ),
            PREF_NUME       =SIMP(statut='f',typ='I' ),
          ),
-         DETR_GROUP_MA   =FACT(statut='f',fr="Destruction de groupes de mailles",
+         DETR_GROUP_MA   =FACT(statut='f',fr=tr("Destruction de groupes de mailles"),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            NB_MAILLE       =SIMP(statut='f',typ='I',defaut= 0,
-                                 fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit",  ),
+                                 fr=tr("Nombre minimal de mailles que doit contenir le groupe pour etre détruit"),  ),
          ),
-         RESTREINT   =FACT(statut='f',fr="Restreindre un maillage à des groupes de mailles",max=1,
+         RESTREINT   =FACT(statut='f',fr=tr("Restreindre un maillage à des groupes de mailles"),max=1,
            regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
@@ -12599,7 +14181,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            TOUT_GROUP_NO   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
          ),
          COQU_VOLU   =FACT(statut='f',
-                           fr="Creation de mailles volumiques à partir de mailles surfaciques",
+                           fr=tr("Creation de mailles volumiques à partir de mailles surfaciques"),
            NOM             =SIMP(statut='o',typ='TXM'),
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max ='**'),
            EPAIS           =SIMP(statut='o',typ='R' ),
@@ -12611,13 +14193,13 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
              TRANSLATION   =SIMP(statut='o',typ='TXM',into=("SUP","INF") ),
            ),
          ),
-         MODI_MAILLE     =FACT(statut='f',max='**',fr="Modification du type de mailles",
+         MODI_MAILLE     =FACT(statut='f',max='**',fr=tr("Modification du type de mailles"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
            GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
            OPTION          =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"),validators=NoRepeat(),
-                                 fr="Choix de la transformation" ),
+                                 fr=tr("Choix de la transformation") ),
            b_NOS =BLOC(condition = "OPTION == 'TRIA6_7'  or  OPTION == 'QUAD8_9'  or  OPTION == 'SEG3_4'",
              PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
              PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
@@ -12627,14 +14209,14 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
              PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
            ),
          ),
-         CREA_FISS = FACT(statut='f',max='**',fr="Creation d'une fissure potentielle avec elts de joint ou elts à disc",
+         CREA_FISS = FACT(statut='f',max='**',fr=tr("Creation d'une fissure potentielle avec elts de joint ou elts à disc"),
            NOM             =SIMP(statut='o',typ='TXM'),
            GROUP_NO_1      =SIMP(statut='o',typ=grno),
            GROUP_NO_2      =SIMP(statut='o',typ=grno),
            PREF_MAILLE     =SIMP(statut='o',typ='TXM'),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut=1 ),
          ),
-         LINE_QUAD     =FACT(statut='f',fr="Passage linéaire -> quadratique",
+         LINE_QUAD     =FACT(statut='f',fr=tr("Passage linéaire -> quadratique"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
@@ -12642,7 +14224,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
-         HEXA20_27     =FACT(statut='f',fr="Passage HEXA20 -> HEXA27",
+         HEXA20_27     =FACT(statut='f',fr=tr("Passage HEXA20 -> HEXA27"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
@@ -12650,7 +14232,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
-         PENTA15_18     =FACT(statut='f',fr="Passage PENTA15 -> PENTA18",
+         PENTA15_18     =FACT(statut='f',fr=tr("Passage PENTA15 -> PENTA18"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
@@ -12658,32 +14240,32 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
-         QUAD_LINE     =FACT(statut='f',fr="Passage quadratique -> linéaire",
+         QUAD_LINE     =FACT(statut='f',fr=tr("Passage quadratique -> linéaire"),
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
            GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
          ),
          REPERE          =FACT(statut='f',max='**',
-                               fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre",
+                               fr=tr("changement de repère servant à déterminer les caractéristiques d'une section de poutre"),
            TABLE           =SIMP(statut='o',typ=table_sdaster,
-                                 fr="Nom de la table contenant les caractéristiques de la section de poutre" ),
-           NOM_ORIG        =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr="Origine du nouveau repère" ),
-           NOM_ROTA        =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr="Direction du repére"  ),
+                                 fr=tr("Nom de la table contenant les caractéristiques de la section de poutre") ),
+           NOM_ORIG        =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr=tr("Origine du nouveau repère") ),
+           NOM_ROTA        =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr=tr("Direction du repére")  ),
            b_cdg =BLOC(condition = "NOM_ORIG == 'CDG'",
              GROUP_MA        =SIMP(statut='f',typ=grma,
-                                   fr="Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère"),
+                                   fr=tr("Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère")),
            ),
          ),
          ECLA_PG         =FACT(statut='f',
-                               fr="Eclatement des mailles en petites mailles contenant chacune un seul point de gauss",
+                               fr=tr("Eclatement des mailles en petites mailles contenant chacune un seul point de gauss"),
            MODELE          =SIMP(statut='o',typ=modele_sdaster ),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           SHRINK          =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
-           TAILLE_MIN      =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
-           NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),),
+           SHRINK          =SIMP(statut='f',typ='R',defaut= 0.9, fr=tr("Facteur de réduction") ),
+           TAILLE_MIN      =SIMP(statut='f',typ='R',defaut= 0.0, fr=tr("Taille minimale d'un coté") ),
+           NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),),
          ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 #
@@ -12723,10 +14305,10 @@ def crea_resu_prod(TYPE_RESU,**args):
 
 CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
             UIinfo={"groupes":("Resultats et champs",)},
-               fr="Creer ou enrichir une structure de donnees resultat a partir de champs aux noeuds",
+               fr=tr("Creer ou enrichir une structure de donnees resultat a partir de champs aux noeuds"),
 
          OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","ECLA_PG","PERM_CHAM","PROL_RTZ","PREP_VRC1","PREP_VRC2",),
-                         fr="choix de la fonction a activer",),
+                         fr=tr("choix de la fonction a activer"),),
                          
          TYPE_RESU    =SIMP(statut='o',position='global',typ='TXM',
                             into=(
@@ -12909,7 +14491,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
            PROL_RTZ        =FACT(statut='o',
               regles=(EXCLUS('INST','LIST_INST'),),
               MAILLAGE_FINAL  =SIMP(statut='o',typ=maillage_sdaster,),
-              TABLE           =SIMP(statut='o',typ=table_sdaster,fr="Table issue de post_releve_t"),
+              TABLE           =SIMP(statut='o',typ=table_sdaster,fr=tr("Table issue de post_releve_t")),
               INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
               LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
               b_acce_reel     =BLOC(condition="(INST != None)or(LIST_INST != None)",
@@ -12985,14 +14567,14 @@ def crea_table_prod(TYPE_TABLE, **args):
       return table_sdaster
 
 CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod,
-                fr="Création d'une table à partir d'une fonction ou de deux listes",
+                fr=tr("Création d'une table à partir d'une fonction ou de deux listes"),
                 reentrant='f',
                 UIinfo={"groupes":("Tables",)},
 
            regles=(EXCLUS('FONCTION','LISTE','RESU'),),
 
            LISTE=FACT(statut='f',max='**',
-                 fr="Creation d'une table a partir de listes",
+                 fr=tr("Creation d'une table a partir de listes"),
                  regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')),
                         PARA     =SIMP(statut='o',typ='TXM'),
                         TYPE_K   =SIMP(statut='f',typ='TXM',defaut='K8',
@@ -13003,12 +14585,12 @@ CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod,
                         LISTE_K  =SIMP(statut='f',typ='TXM', max='**'),
            ),
            FONCTION=FACT(statut='f',
-                    fr="Creation d'une table a partir d'une fonction",
+                    fr=tr("Creation d'une table a partir d'une fonction"),
                         FONCTION=SIMP(statut='o',typ=(fonction_c,fonction_sdaster)),
                         PARA=SIMP(statut='f',typ='TXM',min=2,max=2),
            ),
            RESU=FACT(statut='f',max=1,
-                fr="Creation d'une table a partir d'un resultat ou d'un champ",
+                fr=tr("Creation d'une table a partir d'un resultat ou d'un champ"),
                 regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                         UN_PARMI('TOUT_CMP','NOM_CMP'),
                         PRESENT_ABSENT('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',),
@@ -13072,15 +14654,15 @@ CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod,
 
 DEBUG=PROC(nom="DEBUG",op=137,
             UIinfo={"groupes":("Utilitaires",)},
-               fr="Permettre de changer entre 2 commandes quelques variables globales de debug",
+               fr=tr("Permettre de changer entre 2 commandes quelques variables globales de debug"),
 
-     SDVERI          =SIMP(fr="vérifie la conformité des SD produites par les commandes",
+     SDVERI          =SIMP(fr=tr("vérifie la conformité des SD produites par les commandes"),
                            statut='f',typ='TXM',into=('OUI','NON')),
-     JXVERI          =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
+     JXVERI          =SIMP(fr=tr("vérifie l intégrité de la segmentation mémoire"),
                            statut='f',typ='TXM',into=('OUI','NON')),
-     JEVEUX          =SIMP(fr="force les déchargement sur disque",
+     JEVEUX          =SIMP(fr=tr("force les déchargement sur disque"),
                            statut='f',typ='TXM',into=('OUI','NON')),
-     IMPR_MACRO      =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
+     IMPR_MACRO      =SIMP(fr=tr("affichage des sous-commandes produites par les macros dans le fichier mess"),
                            statut='f',typ='TXM',into=("OUI","NON")),
  );
 
@@ -13105,24 +14687,25 @@ DEBUT=MACRO(nom="DEBUT",
             op=OPS("Cata.ops.build_debut"),
             repetable='n',
             UIinfo={"groupes":("Gestion du travail",)},
-            fr="Ouverture d'une étude. Allocation des ressources mémoire et disque et fichiers",
+            fr=tr("Ouverture d'une étude. Allocation des ressources mémoire et disque et fichiers"),
             sd_prod=ops.DEBUT,
 
-         PAR_LOT         =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
+         PAR_LOT         =SIMP(fr=tr("mode de traitement des commandes"),statut='f',typ='TXM',
                            into=("OUI","NON"),defaut="OUI"),
-         IMPR_MACRO      =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
+         IMPR_MACRO      =SIMP(fr=tr("affichage des sous-commandes produites par les macros dans le fichier mess"),
                            statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
-#         FORMAT_HDF      =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
+#         FORMAT_HDF      =SIMP(fr=tr("sauvegarde de la base GLOBALE au format HDF"),statut='f',
 #                               typ='TXM',defaut="NON",into=("OUI","NON",) ),
-         BASE            =FACT(fr="définition des paramètres associés aux bases JEVEUX",
+         BASE            =FACT(fr=tr("définition des paramètres associés aux bases JEVEUX"),
                                statut='f',min=1,max=2,
-           FICHIER         =SIMP(fr="nom de la base",statut='o',typ='TXM',
+           FICHIER         =SIMP(fr=tr("nom de la base"),statut='o',typ='TXM',
                                  into=('GLOBALE','VOLATILE'),),
            TITRE           =SIMP(statut='f',typ='TXM'),
            CAS             =SIMP(statut='f',typ='TXM'),
-           NMAX_ENRE       =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
-           LONG_ENRE       =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
-           LONG_REPE       =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
+           NMAX_ENRE       =SIMP(fr=tr("nombre maximum d enregistrements"),statut='f',typ='I'),
+           LONG_ENRE       =SIMP(fr=tr("longueur des enregistrements"),statut='f',typ='I'),
+           LONG_REPE       =SIMP(fr=tr("longueur du répertoire"),statut='f',typ='I'),
+           TAILLE          =SIMP(statut='c', typ='I', fr=tr("ne pas utiliser")),
          ),
 
          CATALOGUE       =FACT(statut='f',min=1,max=10,
@@ -13130,48 +14713,48 @@ DEBUT=MACRO(nom="DEBUT",
            UNITE           =SIMP(statut='f',typ='I'),
          ),
 
-         CODE            =FACT(fr="paramètres réservés aux cas-tests",
+         CODE            =FACT(fr=tr("paramètres réservés aux cas-tests"),
                                statut='f',min=1,max=1,
            NIV_PUB_WEB     =SIMP(statut='o',typ='TXM',into=('INTERNET','INTRANET')),
            VISU_EFICAS     =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI'),
          ),
 
-         ERREUR          =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
+         ERREUR          =FACT(fr=tr("comportement en cas d'erreur"),statut='f',min=1,max=1,
            ERREUR_F        =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),),
          ),
 
-         DEBUG           =FACT(fr="option de déboggage reservée aux développeurs",
+         DEBUG           =FACT(fr=tr("option de déboggage reservée aux développeurs"),
                                statut='f',min=1,max=1,
-           JXVERI          =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
+           JXVERI          =SIMP(fr=tr("vérifie l intégrité de la segmentation mémoire"),
                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
-           SDVERI          =SIMP(fr="vérifie la conformité des SD produites par les commandes",
+           SDVERI          =SIMP(fr=tr("vérifie la conformité des SD produites par les commandes"),
                                  statut='f',typ='TXM',into=('OUI','NON')),
-           JEVEUX          =SIMP(fr="force les déchargement sur disque",
+           JEVEUX          =SIMP(fr=tr("force les déchargement sur disque"),
                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
-           ENVIMA          =SIMP(fr="imprime les valeurs définies dans ENVIMA",
+           ENVIMA          =SIMP(fr=tr("imprime les valeurs définies dans ENVIMA"),
                                  statut='f',typ='TXM',into=('TEST',)),
-           HIST_ETAPE = SIMP(fr="permet de conserver toutes les étapes du jeu de commandes",
+           HIST_ETAPE = SIMP(fr=tr("permet de conserver toutes les étapes du jeu de commandes"),
                              statut='f', typ='TXM', into=('OUI', 'NON'), defaut='NON'),
          ),
 
-         MESURE_TEMPS     =FACT(fr="Pour afficher le temps des principales étapes de calcul",
+         MESURE_TEMPS     =FACT(fr=tr("Pour afficher le temps des principales étapes de calcul"),
                                statut='d',min=1,max=1,
-           NIVE_DETAIL      =SIMP(fr="niveau de détail des impressions",
+           NIVE_DETAIL      =SIMP(fr=tr("niveau de détail des impressions"),
                                  statut='f',typ='I',into=(0,1,2,3),defaut=1),
                                  # 0 : rien
                                  # 1 : impression en fin de commande des mesures principales
                                  # 2 : impression en fin de commande des mesures principales et secondaires
                                  # 3 : impression des mesures principales et secondaires pour chaque pas de temps
-           MOYENNE     =SIMP(fr="affichage des moyennes et écart-types en parallèle",
+           MOYENNE     =SIMP(fr=tr("affichage des moyennes et écart-types en parallèle"),
                                   statut='f',typ='TXM',into=('OUI','NON',),defaut='NON'),
          ),
 
-         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1,
+         MEMOIRE         =FACT(fr=tr("mode de gestion mémoire utilisé"),statut='d',min=1,max=1,
            TAILLE_BLOC       =SIMP(statut='f',typ='R',defaut=800.),
            TAILLE_GROUP_ELEM =SIMP(statut='f',typ='I',defaut=1000),
          ),
 
-         RESERVE_CPU     =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1,
+         RESERVE_CPU     =FACT(fr=tr("reserve de temps pour terminer une execution"),statut='d',max=1,
            regles=(EXCLUS('VALE','POURCENTAGE'),),
 #          par défaut VALE fixée à 10. dans le FORTRAN si CODE présent
            VALE            =SIMP(statut='f',typ='I',val_min=0,),
@@ -13180,11 +14763,11 @@ DEBUT=MACRO(nom="DEBUT",
 #          valeur en secondes de la réserve maximum bornée à 900 secondes
            BORNE           =SIMP(statut='f',typ='I',val_min=0,defaut=900),),
 
-         IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"),
+         IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr=tr("Alarmes que l'utilisateur souhaite délibérément ignorer")),
 
          LANG = SIMP(statut='f', typ='TXM',
-                     fr="Permet de choisir la langue utilisée pour les messages (si disponible)",
-                     ang="Allows to choose the language used for messages (if available)"),
+                     fr=tr("Permet de choisir la langue utilisée pour les messages (si disponible)"),
+                     ),
 
          INFO     = SIMP(statut='f', typ='I', defaut=1, into=(1,2),),
 );
@@ -13208,13 +14791,13 @@ DEBUT=MACRO(nom="DEBUT",
 # person_in_charge: nicolas.brie at edf.fr
 DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op=  99,sd_prod=mode_meca,
                      reentrant='f',
-                     fr="Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale",
+                     fr=tr("Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale"),
             UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)},
          regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS','ORTHO_BASE'),),
          CLASSIQUE       =FACT(statut='f',
            INTERF_DYNA     =SIMP(statut='o',typ=interf_dyna_clas ),
            MODE_MECA       =SIMP(statut='o',typ=mode_meca,max='**' ),
-           NMAX_MODE       =SIMP(statut='f',typ='I',defaut=10,max='**' ),
+           NMAX_MODE       =SIMP(statut='f',typ='I',max='**' ),
          ),
          RITZ            =FACT(statut='f',max='**',
            regles=(UN_PARMI('MODE_MECA','BASE_MODALE','MODE_INTF'),),
@@ -13227,7 +14810,7 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op=  99,sd_prod=mode_meca,
            INTERF_DYNA     =SIMP(statut='f',typ=interf_dyna_clas ),
            NUME_REF        =SIMP(statut='f',typ=nume_ddl_sdaster ),
            ORTHO           =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
-                               fr="Reorthonormalisation de la base de Ritz" ),
+                               fr=tr("Reorthonormalisation de la base de Ritz") ),
            LIST_AMOR       =SIMP(statut='f',typ=listr8_sdaster ),
            b_ortho          =BLOC(condition = "ORTHO == 'OUI' ",
              MATRICE          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
@@ -13275,8 +14858,8 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op=  99,sd_prod=mode_meca,
 DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",
                     op=OPS('Macro.defi_cable_bp_ops.defi_cable_bp_ops'),
                     sd_prod=cabl_precont,
-                    fr="Calculer les profils initiaux de tension le long des cables " \
-                       "de précontrainte d'une structure en béton",
+                    fr=tr("Calculer les profils initiaux de tension le long des cables "
+                         "de précontrainte d'une structure en béton"),
                     reentrant='n',UIinfo={"groupes":("Modélisation",)},
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
          CHAM_MATER      =SIMP(statut='o',typ=cham_mater ),
@@ -13340,8 +14923,8 @@ DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",
 # person_in_charge: sylvie.michel-ponnelle at edf.fr
 
 DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n',
-            fr="Définit les profils initiaux de tension d'une structure en béton le long des cables de précontrainte"
-               +" (utilisée par la macro DEFI_CABLE_BP)",
+            fr=tr("Définit les profils initiaux de tension d'une structure en béton le long des cables de précontrainte"
+                " (utilisée par la macro DEFI_CABLE_BP)"),
             UIinfo={"groupes":("Modélisation",)},
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
          CHAM_MATER      =SIMP(statut='o',typ=cham_mater ),
@@ -13394,7 +14977,7 @@ DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n
 # ======================================================================
 # person_in_charge: jean-michel.proix at edf.fr
 DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
-                   fr="Définir le comportement d'un monocristal, d'un polycristal ou de groupes de fibres",
+                   fr=tr("Définir le comportement d'un monocristal, d'un polycristal ou de groupes de fibres"),
                    reentrant='n',
             UIinfo={"groupes":("Modélisation",)},
 # on exclut MULTIFBRE de MONOCRISTAL ou POLYCRISTAL car la structure de données n'est pas organisée pareil pour ces cas
@@ -13406,14 +14989,14 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
              ECOULEMENT      =SIMP(statut='o', typ='TXM', max=1,
                    into=('MONO_VISC1', 'MONO_VISC2', 'MONO_DD_KR', 'MONO_DD_CFC', 'MONO_DD_CFC_IRRA',
                          'MONO_DD_CC', 'MONO_DD_CC_IRRA', 'MONO_DD_FAT',),
-                   fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique"),
+                   fr=tr("Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique")),
              ELAS            =SIMP(statut='f', typ='TXM', max=1,
-                   fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)"),
+                   fr=tr("Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)")),
              b_non_dd =BLOC(condition="ECOULEMENT=='MONO_VISC1' or ECOULEMENT=='MONO_VISC2'",
                    ECRO_ISOT       =SIMP(statut='o', typ='TXM', max=1,
-                   fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"),
+                   fr=tr("Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope")),
                    ECRO_CINE       =SIMP(statut='o', typ='TXM', max=1,
-                   fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"),
+                   fr=tr("Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique")),
                    FAMI_SYST_GLIS  =SIMP(statut='f',typ='TXM', max=1,
                                 into=('OCTAEDRIQUE','BCC24','CUBIQUE1','CUBIQUE2','ZIRCONIUM','UNIAXIAL','UTILISATEUR'),
                                 ),
@@ -13451,38 +15034,37 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
           MATR_INTER =SIMP(statut='f', typ=table_sdaster, max=1,),
 
           ROTA_RESEAU =SIMP(statut='f', typ='TXM', max=1,into=('NON','POST','CALC'),defaut='NON',
-                   fr="rotation de reseau : NON, POST, CALC"),
+                   fr=tr("rotation de reseau : NON, POST, CALC")),
 
           POLYCRISTAL    =FACT(statut='f', max='**',
            regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),),
              MONOCRISTAL     =SIMP(statut='o', typ=compor_sdaster, max=1),
-             FRAC_VOL  =SIMP(statut='o', typ='R', max=1,fr="fraction volumique de la phase correspondant au monocristal"),
-             ANGL_REP  =SIMP(statut='f',typ='R',max=3,fr="orientation du monocristal : 3 angles nautiques en degrés"),
-             ANGL_EULER=SIMP(statut='f',typ='R',max=3,fr="orientation du monocristal : 3 angles d'Euler   en degrés"),
+             FRAC_VOL  =SIMP(statut='o', typ='R', max=1,fr=tr("fraction volumique de la phase correspondant au monocristal")),
+             ANGL_REP  =SIMP(statut='f',typ='R',max=3,fr=tr("orientation du monocristal : 3 angles nautiques en degrés")),
+             ANGL_EULER=SIMP(statut='f',typ='R',max=3,fr=tr("orientation du monocristal : 3 angles d'Euler   en degrés")),
                                 ),
 
 
-          b_poly      =BLOC( condition = "POLYCRISTAL!='None'",
-          LOCALISATION     =SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA', 'RL',),
-                fr="Donner le nom de la règle de localisation"),
-
-           b_beta      =BLOC( condition = "LOCALISATION=='BETA'",
-             DL            =SIMP(statut='o',typ='R',max=1),
-             DA            =SIMP(statut='o',typ='R',max=1),
-             ),
-             ),
+          b_poly      =BLOC( condition = "POLYCRISTAL!=None",
+              MU_LOCA     =SIMP(statut='o',typ='R',max=1),
+              LOCALISATION=SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA',),
+                                fr=tr("Donner le nom de la règle de localisation")),
+              b_beta      =BLOC( condition = "LOCALISATION=='BETA'",
+                  DL            =SIMP(statut='o',typ='R',max=1),
+                  DA            =SIMP(statut='o',typ='R',max=1),),
+          ),
 
 #####################################################################################
           GEOM_FIBRE = SIMP(statut='f',max=1,typ=gfibre_sdaster,
-                   fr="Donner le nom du concept regroupant tous les groupes de fibres (issu de DEFI_GEOM_FIBRE)"),
+                   fr=tr("Donner le nom du concept regroupant tous les groupes de fibres (issu de DEFI_GEOM_FIBRE)")),
           MATER_SECT = SIMP(statut='f',max=1,typ=mater_sdaster,
-                   fr="Donner le nom du materiau pour les caracteristiques homogeneisees sur la section"),
+                   fr=tr("Donner le nom du materiau pour les caracteristiques homogeneisees sur la section")),
           MULTIFIBRE    = FACT(statut='f',max='**',
           GROUP_FIBRE        =SIMP(statut='o', typ='TXM', max='**'),
              MATER           =SIMP(statut='o', typ=mater_sdaster, max=1,
-                                   fr="Donner le nom du materiau pour le groupe de fibres"),
+                                   fr=tr("Donner le nom du materiau pour le groupe de fibres")),
              RELATION        =SIMP(statut='f', typ='TXM', max=1,defaut="ELAS",into=C_RELATION('DEFI_COMPOR'),
-                                  fr="Donner le nom de la relation incrementale pour le groupe de fibres",
+                                  fr=tr("Donner le nom de la relation incrementale pour le groupe de fibres"),
                                   ),
            RELATION_KIT    =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
                                  into=(
@@ -13496,6 +15078,8 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
                                        "BETON_UMLV_FP",
                                        "ROUSS_PR",
                                        "BETON_DOUBLE_DP",
+                                       "ENDO_PORO_BETON",
+                                       "FLUA_PORO_BETON",
                                        ),),
 # on pourrait ajouter TOUT_GROUP_FIBRE
 
@@ -13520,8 +15104,8 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
 # person_in_charge: xavier.desroches at edf.fr
 DEFI_COMPOSITE=OPER(nom="DEFI_COMPOSITE",op=56,sd_prod=mater_sdaster,reentrant='n',
             UIinfo={"groupes":("Modélisation",)},
-                    fr="Déterminer les caractéristiques matériaux homogénéisées d'une coque multicouche à partir"
-                        +" des caractéristiques de chaque couche",
+                    fr=tr("Déterminer les caractéristiques matériaux homogénéisées d'une coque multicouche à partir"
+                        " des caractéristiques de chaque couche"),
          COUCHE          =FACT(statut='o',max='**',
            EPAIS           =SIMP(statut='o',typ='R',val_min=0.E+0 ),
            MATER           =SIMP(statut='o',typ=(mater_sdaster) ),
@@ -13551,7 +15135,7 @@ DEFI_COMPOSITE=OPER(nom="DEFI_COMPOSITE",op=56,sd_prod=mater_sdaster,reentrant='
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op=   2,sd_prod=fonction_sdaster,
-                    fr="Définir la valeur d'une grandeur invariante",
+                    fr=tr("Définir la valeur d'une grandeur invariante"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
@@ -13580,7 +15164,7 @@ DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op=   2,sd_prod=fonction_sdaster,
 DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                   op        = 30,
                   sd_prod   = char_contact,
-                  fr        = "Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement",
+                  fr        = tr("Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement"),
                   #en        = "Allows the definition of contact surfaces as well as unilateral conditions",
                   reentrant = 'n',
                   UIinfo    = {"groupes":("Modélisation",)},
@@ -13595,7 +15179,7 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
          FORMULATION     =SIMP(statut='o',
                                position='global',
                                typ='TXM',
-                               fr="Choix d'une formulation de contact ou de liaisons unilatérales",
+                               fr=tr("Choix d'une formulation de contact ou de liaisons unilatérales"),
                                defaut="DISCRETE",
                                into=("DISCRETE","CONTINUE","XFEM","LIAISON_UNIL",),),
 
@@ -13604,7 +15188,7 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
          FROTTEMENT      =SIMP(statut='f',
                                position='global',
                                typ='TXM',
-                               fr="Choix d'un modèle de frottement (uniquement pour les formulations de contact)",
+                               fr=tr("Choix d'un modèle de frottement (uniquement pour les formulations de contact)"),
                                defaut="SANS",
                                into=("COULOMB","SANS",)),
 
@@ -13614,19 +15198,19 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 #          ARRET DU CALCUL POUR LE MODE SANS RESOLUTION DU CONTACT
            STOP_INTERP   = SIMP(statut='f',
                                 typ='TXM',
-                                fr="Arrête le calcul dès qu'une interpénétration est détectée en mode RESOLUTION='NON'",
+                                fr=tr("Arrête le calcul dès qu'une interpénétration est détectée en mode RESOLUTION='NON'"),
                                 defaut="NON",
                                 into=("OUI","NON")),
 #          LISSAGE DES NORMALES PAR MOYENNATION AUX NOEUDS
            LISSAGE       = SIMP(statut='f',
                                 typ='TXM',
-                                fr="Lissage des normales par moyennation aux noeuds",
+                                fr=tr("Lissage des normales par moyennation aux noeuds"),
                                 defaut="NON",
                                 into=("OUI","NON")),
 #          VERIFICATION DE L'ORIENTATION ET DE LA COHERENCE DES NORMALES
            VERI_NORM       =SIMP(statut='f',
                                  typ='TXM',
-                                 fr="Vérification de l'orientation (sortante) des normales aux surfaces",
+                                 fr=tr("Vérification de l'orientation (sortante) des normales aux surfaces"),
                                  defaut="OUI",
                                  into=("OUI","NON"),),
            ),
@@ -13759,45 +15343,54 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                   RESI_FROT      = SIMP(statut='f',typ='R',defaut=0.0001),
                                   ),
 
+
+# Automatic elimiantion for non-vital edges
+           b_arete_xfem= BLOC(condition = "FORMULATION == 'XFEM' ",
+                              ELIM_ARETE  =SIMP(statut='f',
+                                                typ='TXM',
+                                                defaut="DUAL",
+                                                into=("DUAL","ELIM"),),
+                          ),
+
 # PARAMETRES GENERAUX : METHODES DISCRETES
 
            b_para_discret  = BLOC(condition = "FORMULATION == 'DISCRETE' ",
 #                                 ## METHODES DE DUALISATION ##
                                   STOP_SINGULIER= SIMP(statut='f',
                                                        typ='TXM',
-                                                       fr="Tient compte de la singularité de la matrice de contact",
+                                                       fr=tr("Tient compte de la singularité de la matrice de contact"),
                                                        defaut="OUI",
                                                        into=("OUI","NON"),),
                                   NB_RESOL      = SIMP(statut='f',
                                                        typ='I',
-                                                fr="Nombre de résolutions simultanées pour la construction du complément de Schur",
+                                                fr=tr("Nombre de résolutions simultanées pour la construction du complément de Schur"),
                                                        defaut=10,),
 #                                 ## GCP ##
                                   RESI_ABSO     = SIMP(statut='f',
                                                        typ='R',
-                                                  fr="Critère de convergence (niveau d'interpénétration autorisé pour 'GCP')",),
+                                                  fr=tr("Critère de convergence (niveau d'interpénétration autorisé pour 'GCP')"),),
                                   ITER_GCP_MAXI = SIMP(statut='f',
                                                        typ='I',
-                                                       fr="Nombre d'itérations maximal ('GCP')",
+                                                       fr=tr("Nombre d'itérations maximal ('GCP')"),
                                                        defaut=0,),
                                   RECH_LINEAIRE = SIMP(statut='f',
                                                        typ='TXM',
-                                                  fr="Autorisation de sortie du domaine admissible lors de la recherche linéaire",
+                                                  fr=tr("Autorisation de sortie du domaine admissible lors de la recherche linéaire"),
                                                        defaut="ADMISSIBLE",
                                                        into=("ADMISSIBLE","NON_ADMISSIBLE"),),
                                   PRE_COND      = SIMP(statut='f',
                                                        typ='TXM',
-                                                       fr="Choix d'un préconditionneur (accélère la convergence de 'GCP')",
+                                                       fr=tr("Choix d'un préconditionneur (accélère la convergence de 'GCP')"),
                                                        defaut="SANS",
                                                        into=("DIRICHLET","SANS"),),
                                   b_dirichlet   = BLOC (condition = "PRE_COND == 'DIRICHLET'",
                                      COEF_RESI     = SIMP(statut='f',
                                                           typ='R',
-                                                   fr="Activation du préconditionneur quand le résidu a été divisé par COEF_RESI",
+                                                   fr=tr("Activation du préconditionneur quand le résidu a été divisé par COEF_RESI"),
                                                           defaut = -1.0,),
                                      ITER_PRE_MAXI = SIMP(statut='f',
                                                           typ='I',
-                                                          fr="Nombre d'itérations maximal pour le préconditionneur ('GCP')",
+                                                          fr=tr("Nombre d'itérations maximal pour le préconditionneur ('GCP')"),
                                                           defaut=0,),
                                   ),
                                   ),
@@ -13894,14 +15487,14 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 # -- Mode sans calcul
                                           RESOLUTION      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
                                           b_verif=BLOC(condition = "RESOLUTION == 'NON' ",
-                                            TOLE_INTERP   = SIMP(statut='f',typ='R',defaut = 0.),
+                                            TOLE_INTERP   = SIMP(statut='f',typ='R',defaut = 0., val_min=0.),
                                             ),
 # -- Résolution
                                           ALGO_CONT       =SIMP(statut='o',typ='TXM',defaut="CONTRAINTE",
                                                                 into=("CONTRAINTE","LAGRANGIEN","PENALISATION","GCP"),),
 
                                           b_active=BLOC(condition = "ALGO_CONT == 'CONTRAINTE' ",
-                                                        fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
+                                                        fr=tr("Paramètres de la méthode des contraintes actives (contact uniquement)"),
                                                         GLISSIERE=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
                                                         b_glissiere=BLOC(condition = "GLISSIERE == 'OUI' ",
                                                                          ALARME_JEU  =SIMP(statut='f',typ='R',defaut=0.),
@@ -13909,19 +15502,19 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                         ),
 #
                                           b_penal_contact=BLOC(condition = "ALGO_CONT == 'PENALISATION' ",
-                                                               fr="Paramètres de la méthode pénalisée (contact)",
+                                                               fr=tr("Paramètres de la méthode pénalisée (contact)"),
                                                                E_N=SIMP(statut='o',typ='R'),
                                                                ),
 #
                                           b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ",
-                                                            fr="Paramètres du frottement de Coulomb",
+                                                            fr=tr("Paramètres du frottement de Coulomb"),
                                                             COULOMB       =SIMP(statut='o',typ='R',),
                                                             COEF_MATR_FROT=SIMP(statut='f',typ='R',defaut=0.E+0),
                                                             ALGO_FROT     =SIMP(statut='o',typ='TXM',defaut="PENALISATION",
                                                                                 into=("PENALISATION","LAGRANGIEN"),),
 #
                                                             b_penal_frot=BLOC(condition = "ALGO_FROT == 'PENALISATION' ",
-                                                                              fr="Paramètres de la méthode pénalisée (frottement)",
+                                                                              fr=tr("Paramètres de la méthode pénalisée (frottement)"),
                                                                               E_T=SIMP(statut='o',typ='R'),
                                                                               ),
                                                            ),
@@ -14004,15 +15597,15 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                           INTEGRATION     =SIMP(statut='f',typ='TXM',defaut="AUTO",
                                           into=("AUTO","GAUSS","SIMPSON","NCOTES",),),
                                           b_gauss   =BLOC(condition = "INTEGRATION == 'GAUSS' ",
-                                                          fr="Degré du polynôme de Legendre donnant les points de Gauss",
+                                                          fr=tr("Degré du polynôme de Legendre donnant les points de Gauss"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,val_min=1,val_max=6),
                                             ),
                                           b_simpson =BLOC(condition = "INTEGRATION == 'SIMPSON' ",
-                                                          fr="Nombre de subdivisions du domaine",
+                                                          fr=tr("Nombre de subdivisions du domaine"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=1,val_min=1,val_max=4),
                                             ),
                                           b_ncotes  =BLOC(condition = "INTEGRATION == 'NCOTES' ",
-                                                          fr="Degré du polynôme interpolateur",
+                                                          fr=tr("Degré du polynôme interpolateur"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,val_min=3,val_max=8),
                                             ),
 #
@@ -14025,16 +15618,16 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                                 into=("STANDARD","PENALISATION"),),
 
                                           b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD' ",
-                                                          fr="Paramètres de la formulation Lagrangienne",
+                                                          fr=tr("Paramètres de la formulation Lagrangienne"),
                                                           COEF_CONT = SIMP(statut='f',typ='R',defaut=100.E+0),
                                                           ),
                                           b_cont_pena=BLOC(condition = "ALGO_CONT == 'PENALISATION' ",
-                                                            fr="Paramètres de la méthode pénalisée",
+                                                            fr=tr("Paramètres de la méthode pénalisée"),
                                                             COEF_PENA_CONT  =SIMP(statut='o',typ='R'),
                                                             ),
 #
                                           b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ",
-                                                            fr="Paramètres du frottement de Coulomb",
+                                                            fr=tr("Paramètres du frottement de Coulomb"),
                                                             COULOMB    = SIMP(statut='o',typ='R',),
                                                             SEUIL_INIT = SIMP(statut='f',typ='R',defaut=0.E+0),
 #
@@ -14043,19 +15636,19 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                   SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
                                                             b_sans_group_no_frot=BLOC(condition = " SANS_GROUP_NO_FR != None or \
                                                                                                     SANS_NOEUD_FR != None ",
-                                                            fr="Direction de frottement à exclure (uniquement dans le cas 3D)",
+                                                            fr=tr("Direction de frottement à exclure (uniquement dans le cas 3D)"),
                                                             DIRE_EXCL_FROT=SIMP(statut='f',typ='R',min=3,max=3),
                                                             ),
 
                                             ALGO_FROT       =SIMP(statut='f',typ='TXM',defaut="STANDARD",
                                                                   into=("STANDARD","PENALISATION"),),
                                             b_frot_std      =BLOC(condition = "ALGO_FROT == 'STANDARD' ",
-                                                                  fr="Paramètres de la formulation Lagrangienne",
+                                                                  fr=tr("Paramètres de la formulation Lagrangienne"),
                                                                   COEF_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),
                                                                   ),
 
                                             b_frot_pena     =BLOC(condition = "ALGO_FROT == 'PENALISATION' ",
-                                                                  fr="Paramètres de la méthode pénalisée",
+                                                                  fr=tr("Paramètres de la méthode pénalisée"),
                                                                   COEF_PENA_FROT  =SIMP(statut='o',typ='R'),
                                                                   ),
 
@@ -14080,15 +15673,15 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 
                                           into=("NOEUD","GAUSS","SIMPSON","NCOTES",),),
                                           b_gauss   =BLOC(condition = "INTEGRATION == 'GAUSS' ",
-                                                          fr="Dégré du polynôme de Legendre donnant les points de Gauss",
+                                                          fr=tr("Dégré du polynôme de Legendre donnant les points de Gauss"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=6,val_min=1,val_max=6),
                                             ),
                                           b_simpson =BLOC(condition = "INTEGRATION == 'SIMPSON' ",
-                                                          fr="Nombre de subdivisions du domaine",
+                                                          fr=tr("Nombre de subdivisions du domaine"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=1,val_min=1,val_max=4),
                                             ),
                                           b_ncotes  =BLOC(condition = "INTEGRATION == 'NCOTES' ",
-                                                          fr="Dégré du polynôme interpolateur",
+                                                          fr=tr("Dégré du polynôme interpolateur"),
                                                           ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,val_min=3,val_max=8),
                                             ),
 
@@ -14104,34 +15697,34 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                 ),
 
                                        b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD'",
-                                                fr="Parametres de la formulation Lagrangienne",
+                                                fr=tr("Parametres de la formulation Lagrangienne"),
                                                 COEF_CONT    =SIMP(statut='f',typ='R',defaut=100.E+0),
                                                 ),
 
                                        b_cont_pen=BLOC(condition = "ALGO_CONT == 'PENALISATION' ",
-                                                 fr="Paramètre de la méthode pénalisée",
+                                                 fr=tr("Paramètre de la méthode pénalisée"),
                                                  COEF_PENA_CONT =SIMP(statut='o',typ='R'),
                                                  ),
 
                                        b_cont_czm=BLOC(condition = "ALGO_CONT == 'CZM'",
-                                                fr="Parametres de la formulation cohesive",
+                                                fr=tr("Parametres de la formulation cohesive"),
                                                 RELATION       = SIMP(statut='o',typ='TXM',
-                                                                 into=("CZM_EXP_REG","CZM_LIN_REG","CZM_TAC_MIX","CZM_OUV_MIX"),)
+                                                                 into=("CZM_EXP_REG","CZM_LIN_REG","CZM_TAC_MIX","CZM_OUV_MIX","CZM_LIN_MIX"),)
                                                 ),
 
                                        b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' and  ALGO_CONT != 'CZM' ",
-                                                 fr="Paramètres du frottement",
+                                                 fr=tr("Paramètres du frottement"),
                                                  COULOMB      =SIMP(statut='o',typ='R',),
                                                  SEUIL_INIT   =SIMP(statut='f',typ='R',defaut=0.E+0),
                                                  ALGO_FROT    =SIMP(statut='f',typ='TXM',defaut="STANDARD",
                                                                             into=("STANDARD","PENALISATION"),),
 
                                                  b_frot_std=BLOC(condition = "ALGO_FROT == 'STANDARD' ",
-                                                                  fr="Parametres de la formulation Lagrangienne",
+                                                                  fr=tr("Parametres de la formulation Lagrangienne"),
                                                                   COEF_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),
                                                                   ),
                                                  b_frot_pen=BLOC(condition = "ALGO_FROT == 'PENALISATION' ",
-                                                                  fr="Paramètre de la méthode pénalisée",
+                                                                  fr=tr("Paramètre de la méthode pénalisée"),
                                                                   COEF_PENA_FROT  =SIMP(statut='o',typ='R'),
                                                                   ),
                                                         ), #fin bloc b_frottement
@@ -14173,39 +15766,39 @@ DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",
                    sd_prod=DEFIC_prod,
                    reentrant='n',
                    UIinfo={"groupes":("Gestion du travail",)},
-                   fr="Ouvre ou ferme un fichier associé à un numéro d'unité logique",
+                   fr=tr("Ouvre ou ferme un fichier associé à un numéro d'unité logique"),
 
             ACTION        =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER","RESERVER"),defaut="ASSOCIER"),
 
             b_associer    =BLOC(condition = "ACTION == 'ASSOCIER'",
-                                fr="Paramètres pour l'ouverture du fichier",
+                                fr=tr("Paramètres pour l'ouverture du fichier"),
                                 regles=(AU_MOINS_UN('FICHIER','UNITE'),),
                UNITE      =SIMP(statut='f',typ='I' ,val_min=1),
-               FICHIER    =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+               FICHIER    =SIMP(statut='f',typ=('Fichier','','Sauvegarde'),validators=LongStr(1,255)),
                TYPE       =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"),
 
-               b_type_ascii  =BLOC(condition = "TYPE == 'ASCII'",fr="Paramètres pour le type ASCII",
+               b_type_ascii  =BLOC(condition = "TYPE == 'ASCII'",fr=tr("Paramètres pour le type ASCII"),
                   ACCES      =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"),
                ),
-               b_type_autre  =BLOC(condition = "TYPE != 'ASCII'",fr="Paramètres pour les types BINARY et LIBRE",
+               b_type_autre  =BLOC(condition = "TYPE != 'ASCII'",fr=tr("Paramètres pour les types BINARY et LIBRE"),
                   ACCES      =SIMP(statut='f',typ='TXM',into=("NEW","OLD"),defaut="NEW"),
                ),
             ),
 
             b_reserver    =BLOC(condition = "ACTION == 'RESERVER'",
-                                fr="Paramètres pour la réservation de l'unité du fichier",
+                                fr=tr("Paramètres pour la réservation de l'unité du fichier"),
                                 regles=(AU_MOINS_UN('FICHIER','UNITE'),),
                UNITE      =SIMP(statut='f',typ='I' ,val_min=1),
-               FICHIER    =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+               FICHIER    =SIMP(statut='f',typ=('Fichier','','Sauvegarde'),validators=LongStr(1,255)),
                TYPE       =SIMP(statut='f',typ='TXM',into=("ASCII",),defaut="ASCII"),
                ACCES      =SIMP(statut='f',typ='TXM',into=("APPEND",),defaut="APPEND"),
             ),
 
             b_liberer    =BLOC(condition = "ACTION == 'LIBERER'",
-                               fr="Paramètres pour la fermeture du fichier",
+                               fr=tr("Paramètres pour la fermeture du fichier"),
                                regles=(UN_PARMI('FICHIER','UNITE'),),
                   UNITE         =SIMP(statut='f',typ='I' ,val_min=1),
-                  FICHIER   =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+                  FICHIER   =SIMP(statut='f',typ=('Fichier','','Sauvegarde'),validators=LongStr(1,255)),
            ),
 
            INFO          =SIMP(statut='f',typ='I',into=(1,2) ),
@@ -14231,27 +15824,25 @@ DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",
 
 DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n',
             UIinfo={"groupes":("Modélisation",)},
-               fr="Définition des caratéristiques d'une fissure ou d'une interface avec X-FEM",
-            regles = EXCLUS('MODELE_GRILLE','FISS_GRILLE'),
-
+               fr=tr("Définition des caratéristiques d'une fissure ou d'une interface avec X-FEM"),
+            regles = EXCLUS('MAILLAGE_GRILLE','FISS_GRILLE'),
 # ------------------------------------------------------------------------------------------------------------------------
-#                       modele sous-jacent
+#                       fissure/interface/cohesif
 # ------------------------------------------------------------------------------------------------------------------------
 
-    MODELE                =SIMP(statut='o',typ=modele_sdaster),
-
+    TYPE_DISCONTINUITE  =SIMP(statut='f',typ='TXM',into=("FISSURE","INTERFACE","COHESIF",) ,defaut="FISSURE",position='global'),
 # ------------------------------------------------------------------------------------------------------------------------
-#                       grille auxiliaire
+#                       maillage sous-jacent
 # ------------------------------------------------------------------------------------------------------------------------
 
-    MODELE_GRILLE         =SIMP(statut='f',typ=modele_sdaster,max=1,position='global'),
-    FISS_GRILLE           =SIMP(statut='f',typ=fiss_xfem,max=1),
+    MAILLAGE              =SIMP(statut='o',typ=maillage_sdaster),
 
 # ------------------------------------------------------------------------------------------------------------------------
-#                       fissure/interface
+#                       grille auxiliaire : pas ouvert avec le cohesif
 # ------------------------------------------------------------------------------------------------------------------------
 
-      TYPE_DISCONTINUITE  =SIMP(statut='f',typ='TXM',into=("FISSURE","INTERFACE",) ,defaut="FISSURE",position='global'),
+    MAILLAGE_GRILLE       =SIMP(statut='f',typ=maillage_sdaster,max=1,position='global'),
+    FISS_GRILLE           =SIMP(statut='f',typ=fiss_xfem,max=1),
 
 # ------------------------------------------------------------------------------------------------------------------------
 #                       caracteristiques de la fissure/interface
@@ -14259,37 +15850,31 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
 
     DEFI_FISS             =FACT(statut='o',max=1,
 
-      regles              =UN_PARMI('GROUP_MA_FISS','FONC_LN','FORM_FISS','CHAM_NO_LSN'),
-
-# impossible de faire des regles dans des blocs condition, dommage
-#       b_fissure           =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ",fr="Regles pour les fissures",
-#                 regles    =(ENSEMBLE('FONC_LN','FONC_LT'),
-#                             ENSEMBLE('CHAM_NO_LSN','CHAM_NO_LST'),
-#                             ENSEMBLE('GROUP_MA_FISS','GROUP_MA_FOND')),
-#                                ),
-# 
-#       b_interface           =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ",fr="Regles pour les interfaces",
-#                 regles    =(PRESENT_ABSENT('FONC_LN','FONC_LT'),
-#                             PRESENT_ABSENT('CHAM_NO_LSN','CHAM_NO_LST'),
-#                             PRESENT_ABSENT('GROUP_MA_FISS','GROUP_MA_FOND')),
-#                                ),
+#      regles              =UN_PARMI('GROUP_MA_FISS','FONC_LN','FORM_FISS','CHAM_NO_LSN'),
 
       FONC_LT             =SIMP(statut='f',typ=(fonction_sdaster,formule) ),
       FONC_LN             =SIMP(statut='f',typ=(fonction_sdaster,formule) ),
-      CHAM_NO_LSN         =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1),
-      CHAM_NO_LST         =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1),
-      GROUP_MA_FISS       =SIMP(statut='f',typ=grma,min=1,max=1),
-      GROUP_MA_FOND       =SIMP(statut='f',typ=grma,min=1,max=1),
+#     Front initial ptopagation cohesive
+      b_cohesif           =BLOC(condition = "TYPE_DISCONTINUITE == 'COHESIF'",
+         GROUP_MA_BORD     =SIMP(statut='o',typ=grma,max=1),
+      ),
+#
+      b_sans_cohesif      = BLOC(condition = "TYPE_DISCONTINUITE != 'COHESIF'",fr="Options pas ouvertes avec le cohesif",
+         CHAM_NO_LSN         =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1),
+         CHAM_NO_LST         =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1),
+         GROUP_MA_FISS       =SIMP(statut='f',typ=grma,min=1,max=1),
+         GROUP_MA_FOND       =SIMP(statut='f',typ=grma,min=1,max=1),
+      ),
       FORM_FISS   =SIMP(statut='f',typ='TXM',into=("ELLIPSE","RECTANGLE","CYLINDRE","DEMI_PLAN",
                                                    "SEGMENT","DEMI_DROITE","DROITE","ENTAILLE") ),
-      b_ellipse           =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure/interface elliptique",
+      b_ellipse           =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr=tr("Paramètres de la fissure/interface elliptique"),
            DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
            DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.),
            CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),
            COTE_FISS      =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ),    ),
-      b_rectangle         =BLOC(condition = "FORM_FISS == 'RECTANGLE' ",fr="Paramètres de la fissure/interface rectangulaire",
+      b_rectangle         =BLOC(condition = "FORM_FISS == 'RECTANGLE' ",fr=tr("Paramètres de la fissure/interface rectangulaire"),
            DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
            DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.),
            RAYON_CONGE    =SIMP(statut='f',typ='R',val_min=0.,defaut=0.),
@@ -14297,29 +15882,29 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
            VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),
            COTE_FISS      =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ),    ),
-      b_entaille          =BLOC(condition = "FORM_FISS == 'ENTAILLE' ",fr="Paramètres de l'interface entaille",
+      b_entaille          =BLOC(condition = "FORM_FISS == 'ENTAILLE' ",fr=tr("Paramètres de l'interface entaille"),
            DEMI_LONGUEUR  =SIMP(statut='o',typ='R',val_min=0.),
            RAYON_CONGE    =SIMP(statut='o',typ='R',val_min=0.),
            CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),  
            VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),  ),
-      b_cylindre          =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr="Paramètres de la fissure cylindrique",
+      b_cylindre          =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr=tr("Paramètres de la fissure cylindrique"),
            DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
            DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.),
            CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),),
-      b_demiplan          =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit",
+      b_demiplan          =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr=tr("Paramètres de la fissure plane à front droit"),
            PFON           =SIMP(statut='o',typ='R',min=3,max=3),
            NORMALE        =SIMP(statut='o',typ='R',min=3,max=3),
            DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
-      b_segment           =BLOC(condition = "FORM_FISS == 'SEGMENT' ",fr="Paramètres de la fissure 2D segment",
+      b_segment           =BLOC(condition = "FORM_FISS == 'SEGMENT' ",fr=tr("Paramètres de la fissure 2D segment"),
            PFON_ORIG      =SIMP(statut='o',typ='R',min=3,max=3),
            PFON_EXTR      =SIMP(statut='o',typ='R',min=3,max=3),),
-      b_demidroite         =BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ",fr="Paramètres de la fissure 2D demi-droite",
+      b_demidroite         =BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ",fr=tr("Paramètres de la fissure 2D demi-droite"),
            PFON           =SIMP(statut='o',typ='R',min=3,max=3),
            DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
-      b_droite            =BLOC(condition = "FORM_FISS == 'DROITE' ",fr="Paramètres de l'interface 2D (fissure traversante)",
+      b_droite            =BLOC(condition = "FORM_FISS == 'DROITE' ",fr=tr("Paramètres de l'interface 2D (fissure traversante)"),
            POINT          =SIMP(statut='o',typ='R',min=3,max=3),
            DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
                             ),
@@ -14346,10 +15931,10 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
       CHAM_DISCONTINUITE  =SIMP(statut='f',typ='TXM',into=("DEPL",),defaut="DEPL" ),
       TYPE_ENRI_FOND      =SIMP(statut='f',typ='TXM',into=("TOPOLOGIQUE","GEOMETRIQUE"),defaut="TOPOLOGIQUE" ),
 
-        b_enri_geom       =BLOC(condition = "TYPE_ENRI_FOND == 'GEOMETRIQUE' ",fr="Paramètres de l enrichissement geometrique",
+        b_enri_geom       =BLOC(condition = "TYPE_ENRI_FOND == 'GEOMETRIQUE' ",fr=tr("Paramètres de l enrichissement geometrique"),
            RAYON_ENRI     =SIMP(statut='f',typ='R',val_min=0.E+0),
 
-          b_enri_couches  =BLOC(condition = "(RAYON_ENRI == None) ",fr="Paramètres de l enrichissement à n couches",
+          b_enri_couches  =BLOC(condition = "(RAYON_ENRI == None) ",fr=tr("Paramètres de l enrichissement à n couches"),
            NB_COUCHES     =SIMP(statut='f',typ='I',defaut=4,val_min=1),
 
                                ),
@@ -14360,7 +15945,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
 #                       branchement
 # ------------------------------------------------------------------------------------------------------------------------
 
-    b_jonction            =BLOC(condition = "(MODELE_GRILLE == None) and (FISS_GRILLE == None)",
+    b_jonction            =BLOC(condition = "(MAILLAGE_GRILLE == None) and (FISS_GRILLE == None)",
         JONCTION              =FACT(statut='f',max=1,
           FISSURE             =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',),
           POINT               =SIMP(statut='o',typ='R',max=3,),
@@ -14392,7 +15977,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
 # ======================================================================
 # person_in_charge: andre.adobes at edf.fr
 DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru,
-                    reentrant='n',fr="Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement",
+                    reentrant='n',fr=tr("Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement"),
             UIinfo={"groupes":("Modélisation",)},
          regles=(  UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),),
          FAISCEAU_TRANS  =FACT(statut='f',max='**',
@@ -14503,14 +16088,14 @@ DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",
                      sd_prod=fonction_sdaster,
                      reentrant='n',
                      UIinfo={"groupes":("Outils-métier",)},
-                     fr="Définir une fonction du temps intervenant dans le calcul des " \
-                        "forces de LAPLACE",
+                     fr=tr("Définir une fonction du temps intervenant dans le calcul des "
+                          "forces de LAPLACE"),
          regles=(UN_PARMI('COUR_PRIN','COUR'),
                  EXCLUS('COUR','COUR_SECO'), ),
          FREQ            =SIMP(statut='f',typ='R',defaut= 50.),
          SIGNAL          =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("COMPLET","CONTINU") ),
          COUR            =FACT(statut='f',max='**',
-           fr="Définition du courant de court-circuit",
+           fr=tr("Définition du courant de court-circuit"),
            regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),
                    UN_PARMI('PHI_CC_2','INTC_CC_2'),),
            INTE_CC_1       =SIMP(statut='o',typ='R'),
@@ -14525,7 +16110,7 @@ DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",
            INST_CC_FIN     =SIMP(statut='o',typ='R'),
          ),
          COUR_PRIN       =FACT(statut='f',
-         fr="Définition du courant de court-circuit avec réenclenchement",
+         fr=tr("Définition du courant de court-circuit avec réenclenchement"),
            regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),),
            INTE_CC_1       =SIMP(statut='o',typ='R'),
            TAU_CC_1        =SIMP(statut='o',typ='R'),
@@ -14540,7 +16125,7 @@ DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",
            INST_RENC_FIN   =SIMP(statut='f',typ='R',defaut= 0.0E+0),
          ),
          COUR_SECO       =FACT(statut='f',max='**',
-         fr="Définition du courant de court-circuit avec un intervalle de temps différent de celui de COUR_PRIN",
+         fr=tr("Définition du courant de court-circuit avec un intervalle de temps différent de celui de COUR_PRIN"),
            regles=(UN_PARMI('PHI_CC_2','INTC_CC_2'),),
            INTE_CC_2       =SIMP(statut='o',typ='R'),
            TAU_CC_2        =SIMP(statut='o',typ='R'),
@@ -14573,7 +16158,7 @@ DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",
 # person_in_charge: andre.adobes at edf.fr
 DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster,
                     reentrant='n',
-            fr="Définit un profil de vitesse d'écoulement fluide le long d'une poutre",
+            fr=tr("Définit un profil de vitesse d'écoulement fluide le long d'une poutre"),
             UIinfo={"groupes":("Modélisation","Fonctions",)},
          MAILLAGE        =SIMP(statut='o',typ=(maillage_sdaster) ),
          NOEUD_INIT      =SIMP(statut='o',typ=no),
@@ -14618,32 +16203,32 @@ def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,ABSCISSE,**args):
   if NOEUD_PARA != None  : return fonction_sdaster
   raise AsException("type de concept resultat non prevu")
 
-DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
-                    ,fr="Définit une fonction réelle ou complexe d'une variable réelle",
-                     reentrant='n',
+DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod,
+                   fr=tr("Définit une fonction réelle ou complexe d'une variable réelle"),
+                   reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA','ABSCISSE'),),
          NOM_PARA        =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
          NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
          VALE            =SIMP(statut='f',typ='R',min=2,max='**',
-                               fr ="Fonction réelle définie par une liste de couples "
-                                   "(abscisse,ordonnée)"),
+                               fr =tr("Fonction réelle définie par une liste de couples "
+                                     "(abscisse,ordonnée)")),
          ABSCISSE        =SIMP(statut='f',typ='R',min=2,max='**',
-                               fr ="Liste d abscisses d une fonction réelle"),
+                               fr =tr("Liste d abscisses d une fonction réelle")),
          VALE_C          =SIMP(statut='f',typ='R',min=2,max='**',
-                               fr ="Fonction complexe définie par une liste de triplets "
-                                   "(absc, partie réelle, partie imaginaire)"),
+                               fr =tr("Fonction complexe définie par une liste de triplets "
+                                     "(absc, partie réelle, partie imaginaire)")),
          VALE_PARA       =SIMP(statut='f',typ=listr8_sdaster,
-                               fr ="Fonction réelle définie par deux concepts de type listr8" ),
+                               fr =tr("Fonction réelle définie par deux concepts de type listr8") ),
          b_vale_para     =BLOC(condition = "VALE_PARA != None",
            VALE_FONC       =SIMP(statut='o',typ=listr8_sdaster ),
          ),
          b_abscisse      =BLOC(condition = "ABSCISSE != None",
            ORDONNEE        =SIMP(statut='o',typ='R',min=2,max='**',
-                               fr ="Liste d ordonnées d une fonction réelle"),
+                               fr =tr("Liste d ordonnées d une fonction réelle")),
          ),
          NOEUD_PARA      =SIMP(statut='f',typ=no,max='**',
-                               fr ="Fonction réelle définie par une liste de noeuds et un maillage"),
+                               fr =tr("Fonction réelle définie par une liste de noeuds et un maillage")),
          b_noeud_para    =BLOC(condition = "NOEUD_PARA != None",
            MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster ),
            VALE_Y          =SIMP(statut='o',typ='R',max='**'),
@@ -14679,7 +16264,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",
                     op=55,
                     sd_prod=fond_fiss,
                     reentrant='n',
-                    UIinfo={"groupes":("Modélisation",)},fr="Définition de lèvres et d'un fond de fissure",
+                    UIinfo={"groupes":("Modélisation",)},fr=tr("Définition de lèvres et d'un fond de fissure"),
 
     MAILLAGE  = SIMP(statut='o',typ=maillage_sdaster ),
     INFO      =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -14760,7 +16345,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",
 
     PREC_NORM    = SIMP(statut='f',typ='R',defaut=0.1),
 
-)  
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14781,7 +16366,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",
 # person_in_charge: jean-luc.flejou at edf.fr
 #
 DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op=  119, sd_prod=gfibre_sdaster,
-                    fr="Definition des groupes de fibres pour les elements multifibres",
+                    fr=tr("Definition des groupes de fibres pour les elements multifibres"),
                     reentrant='n',
             UIinfo={"groupes":("Modélisation",)},
          regles=(AU_MOINS_UN('SECTION','FIBRE'),),
@@ -14832,14 +16417,14 @@ DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op=  119, sd_prod=gfibre_sdaster,
 # person_in_charge: sebastien.fayolle at edf.fr
 DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
                UIinfo={"groupes":("Modélisation",)},
-               fr="Déterminer les caractéristiques homogenéisées du béton armé à partir des propriétés du béton et des  "
-                        +" armatures",
+               fr=tr("Déterminer les caractéristiques homogenéisées du béton armé à partir des propriétés du béton et des  "
+                     " armatures"),
                reuse = SIMP(statut='f',typ=mater_sdaster),
                RELATION = SIMP(statut='o',typ='TXM',defaut="GLRC_DAMAGE",
                           into=("GLRC_DM","GLRC_DAMAGE"),),
 
                b_glrc_dm=BLOC(condition = "RELATION == 'GLRC_DM'",
-                              fr="Paramètres de la loi GLRC_DM",
+                              fr=tr("Paramètres de la loi GLRC_DM"),
                               BETON = FACT(statut='o',max=1,
                                 MATER = SIMP(statut='o',typ=(mater_sdaster),),
                                 EPAIS = SIMP(statut='o',typ='R',val_min=0.E+0 ),),
@@ -14856,15 +16441,15 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
                               COMPR = SIMP(statut='o',typ='TXM',defaut="GAMMA",
                                            into=("GAMMA","SEUIL")),
                    b_gamma=BLOC(condition = "COMPR == 'GAMMA'",
-                                fr="Paramètre d'endommagement en compression ",
+                                fr=tr("Paramètre d'endommagement en compression "),
                                 GAMMA_C = SIMP(statut='o',typ='R',defaut=1.0E+0,val_min=0.0E+0, val_max=1.0E+0),),
                    b_seuil=BLOC(condition = "COMPR == 'SEUIL'",
-                                fr="Seuil d'endommagement en compression ",
+                                fr=tr("Seuil d'endommagement en compression "),
                                 NYC = SIMP(statut='o',typ='R'),),
                    PENTE = SIMP(statut='o',typ='TXM',defaut="RIGI_ACIER",
                                 into=("PLAS_ACIER","UTIL","RIGI_ACIER")),
                    b_util = BLOC(condition = "PENTE == 'UTIL'",
-                                 fr="Valeur de la déformation maximale de l'élément",
+                                 fr=tr("Valeur de la déformation maximale de l'élément"),
                                   EPSI_MEMB = SIMP(statut='o',typ='R',defaut=0.E+0),
                                   KAPPA_FLEX = SIMP(statut='o',typ='R',defaut=0.E+0),),
                    CISAIL = SIMP(statut='o',typ='TXM',defaut="NON",
@@ -14874,7 +16459,7 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
                    INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2),),
                            ),
            b_glrc_damage=BLOC(condition = "RELATION == 'GLRC_DAMAGE'",
-                            fr="Paramètres de la loi GLRC_DAMAGE",
+                            fr=tr("Paramètres de la loi GLRC_DAMAGE"),
                    CISAIL_NL          =FACT(statut='f',max=1,
                      BTD1            =SIMP(statut='o',typ='R'),
                      BTD2            =SIMP(statut='o',typ='R'),
@@ -14964,7 +16549,7 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
 # person_in_charge: samuel.geniaut at edf.fr
 DEFI_GRILLE=OPER(nom="DEFI_GRILLE",op=82,sd_prod=grille_sdaster,reentrant='n',
                 UIinfo={"groupes":("Modélisation",)},
-                fr="Définition d'une grille",
+                fr=tr("Définition d'une grille"),
     
     MAILLAGE       = SIMP(statut='o',typ=maillage_sdaster),
 
@@ -14997,7 +16582,7 @@ def defi_group_prod(MAILLAGE,GRILLE,**args):
   raise AsException("type de concept resultat non prevu")
 
 DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
-                fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage",
+                fr=tr("Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage"),
                 reentrant='o',
             UIinfo={"groupes":("Maillage",)},
          regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO','DETR_GROUP_NO','DETR_GROUP_MA'),
@@ -15205,8 +16790,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
              LONGUEUR        =SIMP(statut='f',typ='R'),
            ),
            b_inclusion         =BLOC(condition = "OPTION == 'INCLUSION'",
-             fr="""crée le groupe des noeuds des mailles de GROUP_MA inclus géométriquement
-                   dans les mailles de GROUP_MA_INCL""",
+             fr=tr("crée le groupe des noeuds des mailles de GROUP_MA inclus géométriquement"
+                  "dans les mailles de GROUP_MA_INCL"),
              NOM             =SIMP(statut='o',typ=grma),
              CAS_FIGURE      =SIMP(statut='o',typ='TXM',into=("2D","3D","2.5D",)),
              DISTANCE_MAX    =SIMP(statut='f',typ='R',),
@@ -15254,7 +16839,7 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
 DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,
                     sd_prod=interspectre,
                     reentrant='n',
-                    fr="Définit une matrice interspectrale",
+                    fr=tr("Définit une matrice interspectrale"),
                     UIinfo={"groupes":("Fonctions",)},
 
          DIMENSION       =SIMP(statut='f',typ='I',defaut= 1 ),
@@ -15347,14 +16932,14 @@ DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,
 DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op=  98,sd_prod=interf_dyna_clas,
                       reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)},
-            fr="Définir les interfaces d'une structure et leur affecter un type",
+            fr=tr("Définir les interfaces d'une structure et leur affecter un type"),
          NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
          INTERFACE       =FACT(statut='o',max='**',
            regles=(ENSEMBLE('NOM','TYPE'),
 #  erreur doc U sur la condition qui suit
                    UN_PARMI('NOEUD','GROUP_NO'),),
-           NOM             =SIMP(statut='f',typ='TXM' ),
-           TYPE            =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
+           NOM             =SIMP(statut='o',typ='TXM' ),
+           TYPE            =SIMP(statut='o',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
            NOEUD           =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
 #           DDL_ACTIF       =SIMP(statut='f',typ='TXM',max='**'),
@@ -15382,7 +16967,7 @@ DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op=  98,sd_prod=interf_dyna_clas,
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
-                    fr="Définir une liste d'entiers strictement croissante",
+                    fr=tr("Définir une liste d'entiers strictement croissante"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
 
@@ -15438,7 +17023,7 @@ DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
 DEFI_LIST_FREQ=MACRO(nom="DEFI_LIST_FREQ",
                     op=OPS('Macro.defi_list_freq_ops.defi_list_freq_ops'),
                     sd_prod=listr8_sdaster,
-                    fr="Définir une liste de fréquences strictement croissante",
+                    fr=tr("Définir une liste de fréquences strictement croissante"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('VALE','DEBUT',),
@@ -15460,10 +17045,9 @@ DEFI_LIST_FREQ=MACRO(nom="DEFI_LIST_FREQ",
               b_crit_rela_abs=BLOC(condition="(CRITERE=='RELATIF' or CRITERE=='ABSOLU')",
                  DISPERSION      =SIMP(statut='f',typ='R',defaut=0.01),),
               b_crit_larg=BLOC(condition="(CRITERE=='LARGEUR_3DB')",
-                 AMOR_MODAL      =FACT(statut='o',
                     regles = UN_PARMI('AMOR_REDUIT','LIST_AMOR'),
                     AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
-                    LIST_AMOR       =SIMP(statut='f',typ=listr8_sdaster ),),),
+                    LIST_AMOR       =SIMP(statut='f',typ=listr8_sdaster ),),
              ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
@@ -15490,9 +17074,9 @@ DEFI_LIST_FREQ=MACRO(nom="DEFI_LIST_FREQ",
 
 
 # Bloc pour decoupe automatique
-bloc_auto   =BLOC(fr                = "Subdivision de type automatique",
+bloc_auto   =BLOC(fr                = tr("Subdivision de type automatique"),
                   condition         = "SUBD_METHODE == 'AUTO'",
-                  SUBD_PAS_MINI     = SIMP(fr                = "Pas de temps en dessous duquel on ne subdivise plus",
+                  SUBD_PAS_MINI     = SIMP(fr                = tr("Pas de temps en dessous duquel on ne subdivise plus"),
                                            statut            = 'f',
                                            typ               = 'R',
                                            val_min           = 0.0,
@@ -15502,10 +17086,10 @@ bloc_auto   =BLOC(fr                = "Subdivision de type automatique",
                   )
 
 # Bloc pour decoupe manuel
-bloc_manu   =BLOC(fr                = "Subdivision de type manuel",
+bloc_manu   =BLOC(fr                = tr("Subdivision de type manuel"),
                   condition         = "SUBD_METHODE == 'MANUEL'",
                   regles            = (AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
-                  SUBD_PAS          = SIMP(fr                = "Nombre de subdivision d'un pas de temps",
+                  SUBD_PAS          = SIMP(fr                = tr("Nombre de subdivision d'un pas de temps"),
                                            statut            = 'f',
                                            typ               = 'I',
                                            val_min           = 2,
@@ -15513,14 +17097,14 @@ bloc_manu   =BLOC(fr                = "Subdivision de type manuel",
                                            defaut            = 4,
                                            ),
 
-                  SUBD_NIVEAU       = SIMP(fr                = "Nombre maximum de niveau de subdivision d'un pas de temps",
+                  SUBD_NIVEAU       = SIMP(fr                = tr("Nombre maximum de niveau de subdivision d'un pas de temps"),
                                            statut            = 'f',
                                            typ               = 'I',
                                            val_min           = 2,
                                            max               = 1,
                                            defaut            = 3,
                                            ),
-                  SUBD_PAS_MINI     = SIMP(fr                = "Pas de temps en dessous duquel on ne subdivise plus",
+                  SUBD_PAS_MINI     = SIMP(fr                = tr("Pas de temps en dessous duquel on ne subdivise plus"),
                                            statut            = 'f',
                                            typ               = 'R',
                                            val_min           = 0.0,
@@ -15530,15 +17114,15 @@ bloc_manu   =BLOC(fr                = "Subdivision de type manuel",
                  )
 
 # Bloc pour decoupe automatique - Cas de la collision
-bloc_auto2  =BLOC(fr                = "Subdivision de type automatique",
+bloc_auto2  =BLOC(fr                = tr("Subdivision de type automatique"),
                   condition         = "SUBD_METHODE == 'AUTO'",
-                  SUBD_INST         = SIMP(fr                = "Parametre de decoupe fine du pas de temps",
+                  SUBD_INST         = SIMP(fr                = tr("Parametre de decoupe fine du pas de temps"),
                                            statut            = 'o',
                                            typ               = 'R',
                                            val_min           = 0.0,
                                            max               = 1,
                                            ),
-                  SUBD_DUREE        = SIMP(fr                = "Duree de decoupe apres collision",
+                  SUBD_DUREE        = SIMP(fr                = tr("Duree de decoupe apres collision"),
                                            statut            = 'o',
                                            typ               = 'R',
                                            val_min           = 0.0,
@@ -15547,9 +17131,9 @@ bloc_auto2  =BLOC(fr                = "Subdivision de type automatique",
                   )
 
 # Bloc pour decoupe du pas de temps
-bloc_deco   =BLOC(fr                = "Action de decoupe du pas temps",
-                  condition         = "ACTION == 'DECOUPE' or ACTION == 'REAC_PRECOND' or ACTION == 'AUTRE_PILOTAGE'",
-                  SUBD_METHODE      = SIMP(fr                = "Méthode de subdivision des pas de temps en cas de divergence",
+bloc_deco   =BLOC(fr                = tr("Action de decoupe du pas temps"),
+                  condition         = "ACTION == 'DECOUPE' or ACTION == 'AUTRE_PILOTAGE'",
+                  SUBD_METHODE      = SIMP(fr                = tr("Méthode de subdivision des pas de temps en cas de divergence"),
                                            statut            = 'f',
                                            typ               = 'TXM',
                                            max               = 1,
@@ -15562,9 +17146,9 @@ bloc_deco   =BLOC(fr                = "Action de decoupe du pas temps",
 
 
 # Bloc pour decoupe du pas de temps - special pour collision
-bloc_deco2  =BLOC(fr                = "Action de decoupe du pas temps",
+bloc_deco2  =BLOC(fr                = tr("Action de decoupe du pas temps"),
                   condition         = "ACTION == 'DECOUPE'",
-                  SUBD_METHODE      = SIMP(fr                = "Méthode de subdivision des pas de temps en cas de collision",
+                  SUBD_METHODE      = SIMP(fr                = tr("Méthode de subdivision des pas de temps en cas de collision"),
                                            statut            = 'f',
                                            typ               = 'TXM',
                                            max               = 1,
@@ -15579,16 +17163,16 @@ bloc_deco2  =BLOC(fr                = "Action de decoupe du pas temps",
                  )
 
 # Bloc pour extrapolation du nombre d'iterations de Newton
-bloc_supp   =BLOC(fr                = "Action d'extrapolation du nombre d'iterations de Newton",
+bloc_supp   =BLOC(fr                = tr("Action d'extrapolation du nombre d'iterations de Newton"),
                   condition         = "ACTION == 'ITER_SUPPL'",
-                  PCENT_ITER_PLUS   = SIMP(fr                = "Pourcentage d'itérations autorisées en plus",
+                  PCENT_ITER_PLUS   = SIMP(fr                = tr("Pourcentage d'itérations autorisées en plus"),
                                            statut            = 'f',
                                            typ               = 'I',
                                            val_min           = 20,
                                            max               = 1,
                                            defaut            = 50,
                                            ),
-                  SUBD_METHODE      = SIMP(fr                = "Méthode de subdivision des pas de temps en cas de divergence",
+                  SUBD_METHODE      = SIMP(fr                = tr("Méthode de subdivision des pas de temps en cas de divergence"),
                                            statut            = 'f',
                                            typ               = 'TXM',
                                            max               = 1,
@@ -15600,9 +17184,9 @@ bloc_supp   =BLOC(fr                = "Action d'extrapolation du nombre d'iterat
                  )
 
 # Bloc pour adaptation du coefficient de penalisation
-bloc_pene   =BLOC(fr                = "Action d' adaptation du coefficient de penalisation",
+bloc_pene   =BLOC(fr                = tr("Action d' adaptation du coefficient de penalisation"),
                   condition         = "ACTION == 'ADAPT_COEF_PENA'",
-                  COEF_MAXI         = SIMP(fr                = "Coefficient multiplicateur maximum du coefficient de penalisation",
+                  COEF_MAXI         = SIMP(fr                = tr("Coefficient multiplicateur maximum du coefficient de penalisation"),
                                            statut            = 'f',
                                            typ               = 'R',
                                            val_min           = 1.,
@@ -15613,16 +17197,16 @@ bloc_pene   =BLOC(fr                = "Action d' adaptation du coefficient de pe
 
 DEFI_LIST_INST = OPER(nom="DEFI_LIST_INST",op=  28,sd_prod=list_inst,reentrant='n',
                       UIinfo={"groupes":("Fonctions",)},
-                      fr="Définition de la gestion de la liste d'instants",
+                      fr=tr("Définition de la gestion de la liste d'instants"),
 
 # ----------------------------------------------------------------------------------------------------------------------------------
 # mot-cle pour la definition a priori de la liste d'instant
 # ----------------------------------------------------------------------------------------------------------------------------------
 
-DEFI_LIST   =FACT(fr                = "Definition a priori de la liste d'instants",
+DEFI_LIST   =FACT(fr                = tr("Definition a priori de la liste d'instants"),
                   statut            = 'o',
                   max               = 1,
-                  METHODE           = SIMP(fr                = "Methode de definition de la liste d'instants",
+                  METHODE           = SIMP(fr                = tr("Methode de definition de la liste d'instants"),
                                            statut            = 'o',
                                            typ               = 'TXM',
                                            max               = 1,
@@ -15630,7 +17214,7 @@ DEFI_LIST   =FACT(fr                = "Definition a priori de la liste d'instant
                                            into              = ("MANUEL","AUTO",),
                                            defaut            = "MANUEL",
                                            ),
-                  b_manuel          = BLOC(fr                = "Liste d'instants donnée par l'utilisateur",
+                  b_manuel          = BLOC(fr                = tr("Liste d'instants donnée par l'utilisateur"),
                                            condition         = "METHODE == 'MANUEL' ",
                                            regles=(UN_PARMI('LIST_INST','VALE','RESULTAT'),
                                                    PRESENT_PRESENT('RESULTAT','SUBD_PAS'),),
@@ -15650,7 +17234,7 @@ DEFI_LIST   =FACT(fr                = "Definition a priori de la liste d'instant
                                                                     ),
 
                                            ),
-                  b_auto            = BLOC(fr                = "Gestion automatique de la liste d'instants",
+                  b_auto            = BLOC(fr                = tr("Gestion automatique de la liste d'instants"),
                                            condition         = "(METHODE == 'AUTO') ",
                                            regles=(UN_PARMI('LIST_INST','VALE',),),
                                            VALE              = SIMP(statut          = 'f',
@@ -15680,10 +17264,10 @@ DEFI_LIST   =FACT(fr                = "Definition a priori de la liste d'instant
 # mot-cle pour le comportement en cas d'echec (on doit recommencer le meme instant)
 # ----------------------------------------------------------------------------------------------------------------------------------
 
-ECHEC       =FACT(fr                = "Comportement en cas d'echec",
+ECHEC       =FACT(fr                = tr("Comportement en cas d'echec"),
                   statut            = 'd',
                   max               = '**',
-                  EVENEMENT         = SIMP(fr                = "Type de l'evenement",
+                  EVENEMENT         = SIMP(fr                = tr("Type de l'evenement"),
                                            statut            = 'f',
                                            typ               = 'TXM',
                                            max               = 1,
@@ -15691,38 +17275,38 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
                                                                 "INTERPENETRATION","DIVE_RESI","INSTABILITE"),
                                            defaut            = "ERREUR",
                                            ),
-                  b_erreur          = BLOC(fr                = "Event: erreur ou iter_maxi",
+                  b_erreur          = BLOC(fr                = tr("Event: erreur ou iter_maxi"),
                                            condition         = "EVENEMENT == 'ERREUR' ",
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
-                                                                    into            = ("ARRET","DECOUPE","REAC_PRECOND",
+                                                                    into            = ("ARRET","DECOUPE",
                                                                                        "ITER_SUPPL","AUTRE_PILOTAGE"),
                                                                     defaut          = "DECOUPE",
                                                                     ),
                                            b_deco            = bloc_deco,
                                            b_supp            = bloc_supp,
                                            ),
-                  b_edelta          = BLOC(fr                = "Event: l'increment d'une composante d'un champ depasse le seuil",
+                  b_edelta          = BLOC(fr                = tr("Event: l'increment d'une composante d'un champ depasse le seuil"),
                                            condition         = "EVENEMENT == 'DELTA_GRANDEUR' ",
-                                           VALE_REF          = SIMP(fr              = "Valeur du seuil",
+                                           VALE_REF          = SIMP(fr              = tr("Valeur du seuil"),
                                                                     statut          = 'o',
                                                                     typ             = 'R',
                                                                     max             = 1,
                                                                     ),
-                                           NOM_CHAM          = SIMP(fr              = "Nom du champ",
+                                           NOM_CHAM          = SIMP(fr              = tr("Nom du champ"),
                                                                     statut          = 'o',
                                                                     typ             = 'TXM',
                                                                     max             = 1,
                                                                     into            = ("DEPL","VARI_ELGA","SIEF_ELGA",),
                                                                     ),
-                                           NOM_CMP           = SIMP(fr              = "Nom de la composante",
+                                           NOM_CMP           = SIMP(fr              = tr("Nom de la composante"),
                                                                     statut          = 'o',
                                                                     typ             = 'TXM',
                                                                     max             = 1,
                                                                     ),
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
@@ -15731,9 +17315,9 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
                                                                     ),
                                            b_deco            = bloc_deco,
                                            ),
-                  b_colli           = BLOC(fr                = "Event: collision",
+                  b_colli           = BLOC(fr                = tr("Event: collision"),
                                            condition         = "EVENEMENT == 'COLLISION' ",
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
@@ -15742,16 +17326,16 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
                                                                     ),
                                            b_deco2           = bloc_deco2,
                                            ),
-                  b_penetration     = BLOC(fr                = "Event: interpenetration des surfaces en contact",
+                  b_penetration     = BLOC(fr                = tr("Event: interpenetration des surfaces en contact"),
                                            condition         = "EVENEMENT == 'INTERPENETRATION' ",
-                                           PENE_MAXI         = SIMP(fr              = "Valeur maxi de l'interpenetration",
+                                           PENE_MAXI         = SIMP(fr              = tr("Valeur maxi de l'interpenetration"),
                                                                     statut          = 'o',
                                                                     typ             = 'R',
                                                                     max             = 1,
                                                                     ),
 
 
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
@@ -15760,9 +17344,9 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
                                                                     ),
                                            b_pene            = bloc_pene,
                                            ),
-                  b_dive_resi       = BLOC(fr                = "Event: divergence du residu",
+                  b_dive_resi       = BLOC(fr                = tr("Event: divergence du residu"),
                                            condition         = "EVENEMENT == 'DIVE_RESI' ",
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
@@ -15771,9 +17355,9 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
                                                                     ),
                                            b_deco            = bloc_deco,
                                            ),
-                  b_instabilite     = BLOC(fr                = "Event: instabilite",
+                  b_instabilite     = BLOC(fr                = tr("Event: instabilite"),
                                            condition         = "EVENEMENT == 'INSTABILITE' ",
-                                           ACTION            = SIMP(fr              = "Actions possibles",
+                                           ACTION            = SIMP(fr              = tr("Actions possibles"),
                                                                     statut          = 'f',
                                                                     max             = 1,
                                                                     typ             = 'TXM',
@@ -15790,17 +17374,17 @@ ECHEC       =FACT(fr                = "Comportement en cas d'echec",
 
 b_adap  =   BLOC(condition="METHODE == 'AUTO'",
 
-ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de l'adaptation du pas de temps",
+ADAPTATION  =FACT(fr                = tr("Parametres de l'evenement declencheur de l'adaptation du pas de temps"),
                   statut            = 'd',
                   max               = '**',
-                  EVENEMENT         = SIMP(fr                = "Nom de l'evenement declencheur de l'adaptation",
+                  EVENEMENT         = SIMP(fr                = tr("Nom de l'evenement declencheur de l'adaptation"),
                                            statut            = 'f',
                                            max               = 1,
                                            typ               = 'TXM',
                                            into              = ("SEUIL","TOUT_INST","AUCUN"),
                                            defaut            = "SEUIL",
                                            ),
-                  b_adap_seuil      = BLOC(fr                = "Seuil d'adaptation",
+                  b_adap_seuil      = BLOC(fr                = tr("Seuil d'adaptation"),
                                            condition         = "EVENEMENT == 'SEUIL' ",
                                            regles            = (PRESENT_PRESENT('NB_INCR_SEUIL','NOM_PARA',),
                                                                 PRESENT_PRESENT('NB_INCR_SEUIL','CRIT_COMP',),
@@ -15819,7 +17403,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
                                                                     into            = ("LT","GT","LE","GE"),
                                                                     defaut          = "LE",
                                                                     ),
-                                           b_vale_I          = BLOC(fr              = "Valeur entiere",
+                                           b_vale_I          = BLOC(fr              = tr("Valeur entiere"),
                                                                     condition       = "NOM_PARA == 'NB_ITER_NEWTON' ",
                                                                     VALE_I          = SIMP(statut='f',typ='I',),
                                                                     ),
@@ -15834,7 +17418,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
 #      dans le cas ITER_NEWTON    : (deltaT+) = (deltaT-) x sqrt(VALREF/N)  : l'acceleration est inversement proportionnelle
 #                                                                             au nombre d'iterations de Newton precedent
 
-                  MODE_CALCUL_TPLUS = SIMP(fr                = "Parametres du mode de calcul de dt+",
+                  MODE_CALCUL_TPLUS = SIMP(fr                = tr("Parametres du mode de calcul de dt+"),
                                            statut            = 'f',
                                            max               = 1,
                                            typ               = 'TXM',
@@ -15842,7 +17426,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
                                            defaut            = 'FIXE',
                                            ),
 
-                  b_mfixe           = BLOC(fr                = "Mode de calcul de dt+: fixe",
+                  b_mfixe           = BLOC(fr                = tr("Mode de calcul de dt+: fixe"),
                                            condition         = "MODE_CALCUL_TPLUS == 'FIXE' ",
                                            PCENT_AUGM        = SIMP(statut          = 'f',
                                                                     max             = 1,
@@ -15851,7 +17435,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
                                                                     val_min         = -100.,
                                                                     ),
                                            ),
-                  b_mdelta          = BLOC(fr                = "Mode de calcul de dt+: increment d'une grandeur",
+                  b_mdelta          = BLOC(fr                = tr("Mode de calcul de dt+: increment d'une grandeur"),
                                            condition         = "MODE_CALCUL_TPLUS == 'DELTA_GRANDEUR' ",
                                            VALE_REF          = SIMP(statut          = 'o',
                                                                     max             = 1,
@@ -15866,7 +17450,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
                                                                     max             = 1,
                                                                     typ             = 'TXM',),
                                            ),
-                  b_mitnew          = BLOC(fr                = "Mode de calcul de dt+: nb iterations de Newton",
+                  b_mitnew          = BLOC(fr                = tr("Mode de calcul de dt+: nb iterations de Newton"),
                                            condition         = "MODE_CALCUL_TPLUS == 'ITER_NEWTON' ",
                                            NB_ITER_NEWTON_REF= SIMP(statut          = 'o',
                                                                     max             = 1,
@@ -15931,7 +17515,7 @@ ADAPTATION  =FACT(fr                = "Parametres de l'evenement declencheur de
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster,
-                    fr="Définir une liste de réels strictement croissante",
+                    fr=tr("Définir une liste de réels strictement croissante"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('VALE','DEBUT',),
@@ -15967,7 +17551,7 @@ DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster,
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
-                   fr="Définition d'un nouveau maillage à partir de macro-éléments",
+                   fr=tr("Définition d'un nouveau maillage à partir de macro-éléments"),
                    reentrant='n',
             UIinfo={"groupes":("Maillage",)},
          DEFI_SUPER_MAILLE =FACT(statut='o',max='**',
@@ -15998,9 +17582,9 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
          DEFI_NOEUD      =FACT(statut='f',max='**',
            regles=(UN_PARMI('TOUT','NOEUD_INIT'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",),
-                                 fr="Renommage de tous les noeuds" ),
+                                 fr=tr("Renommage de tous les noeuds") ),
            NOEUD_INIT      =SIMP(statut='f',typ=no,
-                                 fr="Renommage d un seul noeud"),
+                                 fr=tr("Renommage d un seul noeud")),
            b_tout          =BLOC(condition = "TOUT != None",
              PREFIXE         =SIMP(statut='f',typ='TXM' ),
              INDEX           =SIMP(statut='o',typ='I',max='**'),
@@ -16016,11 +17600,11 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
                    ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),),
 #  la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",),
-                                 fr="Création de plusieurs groupes de noeuds" ),
+                                 fr=tr("Création de plusieurs groupes de noeuds") ),
            SUPER_MAILLE    =SIMP(statut='f',typ=ma,
-                                 fr="Création de plusieurs groupes de noeuds"),
+                                 fr=tr("Création de plusieurs groupes de noeuds")),
            GROUP_NO_INIT   =SIMP(statut='f',typ=grno,
-                                 fr="Création d un seul groupe de noeuds"),
+                                 fr=tr("Création d un seul groupe de noeuds")),
            PREFIXE         =SIMP(statut='f',typ='TXM' ),
            INDEX           =SIMP(statut='f',typ='I',max='**'),
            GROUP_NO_FIN    =SIMP(statut='f',typ=grno),
@@ -16046,88 +17630,86 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
 # person_in_charge: jean-luc.flejou at edf.fr
 
 DEFI_MATER_GC=MACRO(nom="DEFI_MATER_GC",
-   op=OPS('Macro.defi_mater_gc_ops.defi_mater_gc_ops'),
-   sd_prod=mater_sdaster,
-   reentrant='n',
-   UIinfo={"groupes":("Modélisation",) },
-   fr="Définir des lois matériaux spécifique au Génie Civil",
-   #
-   regles = (UN_PARMI('MAZARS','ACIER','ENDO_FISS_EXP'), ),
-   #
-   REGLE =SIMP(statut='f',typ='TXM',     into=('EC2',),     defaut='EC2'),
-   # ============================================================================
-   MAZARS      =FACT(statut= 'f',max= 1,
-      fr="Paramètres matériaux de MAZARS unilatéral en 1D à partir des caractéristiques du béton",
-      UNITE_LONGUEUR =SIMP(statut='o',typ='TXM',   into=("M","MM"),
-                           fr="Unité de longueur du problème [M|MM]"),
-      FCJ            =SIMP(statut='o',typ='R',     val_min=0.0E+0,
-                           fr="Contrainte au pic en compression [Unité]"),
-      EIJ            =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Module d'Young [Unité]"),
-      EPSI_C         =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Déformation au pic en compression"),
-      FTJ            =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Contrainte au pic en traction [Unité]"),
-      NU             =SIMP(statut='f',typ='R',     val_min=0.0E+0, val_max=0.5E+0,
-                           fr="Coefficient de poisson"),
-      EPSD0          =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Déformation, seuil d'endommagement"),
-      K              =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Asymptote en cisaillement pur"),
-      AC             =SIMP(statut='f',typ='R',     val_min=0.E+0,
-                           fr="Paramètre de décroissance post-pic en compression"),
-      BC             =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Paramètre de décroissance post-pic en compression"),
-      AT             =SIMP(statut='f',typ='R',     val_min=0.0E+0, val_max=1.0E+0,
-                           fr="Paramètre de décroissance post-pic en traction"),
-      BT             =SIMP(statut='f',typ='R',     val_min=0.0E+0,
-                           fr="Paramètre de décroissance post-pic en traction"),
-      # Pour post-traitement ELS et ELU
-      SIGM_LIM       =SIMP(statut='f',typ='R',  fr="Contrainte limite, post-traitement"),
-      EPSI_LIM       =SIMP(statut='f',typ='R',  fr="Déformation limite, post-traitement"),
-   ),
-   # ============================================================================
-   ACIER       =FACT(statut= 'f',max= 1,
-      fr="Définir les paramètres matériaux de l'acier pour le Génie Civil",
-      E              =SIMP(statut='o',typ='R',  val_min=0.0E+0,                     fr="Module d'Young"),
-      SY             =SIMP(statut='o',typ='R',                                      fr="Limite élastique"),
-      NU             =SIMP(statut='f',typ='R',  val_min=0.0E+0, val_max=0.5E+0,     fr="Coefficient de poisson"),
-      D_SIGM_EPSI    =SIMP(statut='f',typ='R',                                      fr="Module plastique"),
-      # Pour post-traitement ELS et ELU
-      SIGM_LIM       =SIMP(statut='f',typ='R',  fr="Contrainte limite, post-traitement"),
-      EPSI_LIM       =SIMP(statut='f',typ='R',  fr="Déformation limite, post-traitement"),
-   ),
-   # ============================================================================
-   ENDO_FISS_EXP       =FACT(statut= 'f',max= 1,
-      fr="Définir les paramètres matériaux du béton pour la loi ENDO_FISS_EXP",
-      regles = (
-        UN_PARMI('FT','FT_FENDAGE'),
-        UN_PARMI('P','DSIG_DU'),
-        EXCLUS('Q','Q_REL'),
+    op=OPS('Macro.defi_mater_gc_ops.defi_mater_gc_ops'),
+    sd_prod=mater_sdaster,
+    reentrant='n',
+    UIinfo={"groupes":("Modélisation",) },
+    fr=tr("Définir des lois matériaux spécifique au Génie Civil"),
+    #
+    regles = (UN_PARMI('MAZARS','ACIER','ENDO_FISS_EXP'), ),
+    #
+    # ============================================================================
+    MAZARS      =FACT(statut= 'f',max= 1,
+        fr=tr("Paramètres matériaux de MAZARS unilatéral en 1D à partir des caractéristiques du béton"),
+        CODIFICATION =SIMP(statut='o',typ='TXM', into=('ESSAI','BAEL91','EC2'),),
+        b_BAEL91 = BLOC(condition = " CODIFICATION == 'BAEL91'",
+            UNITE_CONTRAINTE =SIMP(statut='o',typ='TXM',   into=("MPa","Pa"), fr=tr("Unité des contraintes du problème.")),
+            FCJ =SIMP(statut='o',typ='R', val_min=0.0E+0, fr=tr("Contrainte au pic en compression [Unité]"),),
         ),
-      E              =SIMP(statut='o',typ='R',  val_min=0.0E+0,                     fr="Module d'Young"),
-      NU             =SIMP(statut='o',typ='R',  val_min=0.0E+0, val_max=0.5E+0,     fr="Coefficient de poisson"),
-      FT             =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr="Limite en traction simple"),
-      FT_FENDAGE     =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr="Limite en traction obtenue via un essai brésilien"),
-      FC             =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr="Limite en compression simple"),
-      GF             =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr="Energie de fissuration"),
-      P              =SIMP(statut='f',typ='R',  val_min=1.0E+0                ,     fr="Parametre dominant de la loi cohésive asymptotique"),
-      DSIG_DU        =SIMP(statut='f',typ='R',  val_min=1.102658              ,     fr="Pente initiale (au signe pres) de la loi cohesive asymptotique"),
-      Q              =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr="Parametre secondaire de la loi cohesive asymptotique"),
-      Q_REL          =SIMP(statut='f',typ='R',  val_min=0.0E+0, val_max=1.0   ,     fr="Parametre Q exprime de maniere relative par rapport a Qmax(P)"),
-      LARG_BANDE     =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr="Largeur de bande d'endommagement (2*D)"),
-      COEF_RIGI_MINI =SIMP(statut='f',typ='R',  val_min=0.0, defaut = 0.0     ,     fr="Rigidite minimale dans la matrice tangente"),
-   ),
-   # ============================================================================
-   INFO        =SIMP(statut='f',typ='I',     into=(1,2,),     defaut=1),
-   RHO         =SIMP(statut='f',typ='R',     fr="Masse volumique"),
-   ALPHA       =SIMP(statut='f',typ='R',     fr="Coefficient de dilatation"),
-   AMOR_ALPHA  =SIMP(statut='f',typ='R'),
-   AMOR_BETA   =SIMP(statut='f',typ='R'),
-   AMOR_HYST   =SIMP(statut='f',typ='R'),
+        b_EC2 = BLOC(condition = " CODIFICATION == 'EC2'",
+            UNITE_CONTRAINTE =SIMP(statut='o',typ='TXM',   into=("MPa","Pa"), fr=tr("Unité des contraintes du problème.")),
+            CLASSE =SIMP(statut='o',typ='TXM', fr=tr("Classe de résistance du béton, selon Eurocode 2"),
+                            into=(  "C12/15", "C16/20", "C20/25", "C25/30", "C30/37", "C35/45", "C40/50",
+                                    "C45/55", "C50/60", "C55/67", "C60/75", "C70/85", "C80/95", "C90/105"),),
+        ),
+        b_ESSAI = BLOC(condition = " CODIFICATION == 'ESSAI'",
+            FCJ            =SIMP(statut='o',typ='R', val_min=0.0E+0,                 fr=tr("Contrainte au pic en compression [Unité]")),
+            EIJ            =SIMP(statut='o',typ='R', val_min=0.0E+0,                 fr=tr("Module d'Young [Unité]")),
+            EPSI_C         =SIMP(statut='o',typ='R', val_min=0.0E+0,                 fr=tr("Déformation au pic en compression")),
+            FTJ            =SIMP(statut='o',typ='R', val_min=0.0E+0,                 fr=tr("Contrainte au pic en traction [Unité]")),
+            NU             =SIMP(statut='f',typ='R', val_min=0.0E+0, val_max=0.5E+0, fr=tr("Coefficient de poisson")),
+            EPSD0          =SIMP(statut='f',typ='R', val_min=0.0E+0,                 fr=tr("Déformation, seuil d'endommagement")),
+            K              =SIMP(statut='f',typ='R', val_min=0.0E+0,                 fr=tr("Asymptote en cisaillement pur")),
+            AC             =SIMP(statut='f',typ='R', val_min=0.0E+0,                 fr=tr("Paramètre de décroissance post-pic en compression")),
+            BC             =SIMP(statut='f',typ='R', val_min=0.0E+0,                 fr=tr("Paramètre de décroissance post-pic en compression")),
+            AT             =SIMP(statut='f',typ='R', val_min=0.0E+0, val_max=1.0E+0, fr=tr("Paramètre de décroissance post-pic en traction")),
+            BT             =SIMP(statut='f',typ='R', val_min=0.0E+0,                 fr=tr("Paramètre de décroissance post-pic en traction")),
+            # Pour post-traitement ELS et ELU
+            SIGM_LIM       =SIMP(statut='f',typ='R',                                 fr=tr("Contrainte limite, post-traitement")),
+            EPSI_LIM       =SIMP(statut='f',typ='R',                                 fr=tr("Déformation limite, post-traitement")),
+        ),
+    ),
+    # ============================================================================
+    ACIER       =FACT(statut= 'f',max= 1,
+        fr=tr("Définir les paramètres matériaux de l'acier pour le Génie Civil"),
+        E              =SIMP(statut='o',typ='R',  val_min=0.0E+0,                    fr=tr("Module d'Young")),
+        SY             =SIMP(statut='o',typ='R',                                     fr=tr("Limite élastique")),
+        NU             =SIMP(statut='f',typ='R',  val_min=0.0E+0, val_max=0.5E+0,    fr=tr("Coefficient de poisson")),
+        D_SIGM_EPSI    =SIMP(statut='f',typ='R',                                     fr=tr("Module plastique")),
+        # Pour post-traitement ELS et ELU
+        SIGM_LIM       =SIMP(statut='f',typ='R',                                     fr=tr("Contrainte limite, post-traitement")),
+        EPSI_LIM       =SIMP(statut='f',typ='R',                                     fr=tr("Déformation limite, post-traitement")),
+    ),
+    # ============================================================================
+    ENDO_FISS_EXP       =FACT(statut= 'f',max= 1,
+        fr=tr("Définir les paramètres matériaux du béton pour la loi ENDO_FISS_EXP"),
+        regles = (
+            UN_PARMI('FT','FT_FENDAGE'),
+            UN_PARMI('P','DSIG_DU'),
+            EXCLUS('Q','Q_REL'),
+            ),
+        E              =SIMP(statut='o',typ='R',  val_min=0.0E+0,                     fr=tr("Module d'Young")),
+        NU             =SIMP(statut='o',typ='R',  val_min=0.0E+0, val_max=0.5E+0,     fr=tr("Coefficient de poisson")),
+        FT             =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr=tr("Limite en traction simple")),
+        FT_FENDAGE     =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr=tr("Limite en traction obtenue via un essai brésilien")),
+        FC             =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr=tr("Limite en compression simple")),
+        GF             =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr=tr("Energie de fissuration")),
+        P              =SIMP(statut='f',typ='R',  val_min=1.0E+0                ,     fr=tr("Parametre dominant de la loi cohésive asymptotique")),
+        DSIG_DU        =SIMP(statut='f',typ='R',  val_min=1.102658              ,     fr=tr("Pente initiale (au signe pres) de la loi cohesive asymptotique")),
+        Q              =SIMP(statut='f',typ='R',  val_min=0.0E+0                ,     fr=tr("Parametre secondaire de la loi cohesive asymptotique")),
+        Q_REL          =SIMP(statut='f',typ='R',  val_min=0.0E+0, val_max=1.0   ,     fr=tr("Parametre Q exprime de maniere relative par rapport a Qmax(P)")),
+        LARG_BANDE     =SIMP(statut='o',typ='R',  val_min=0.0E+0                ,     fr=tr("Largeur de bande d'endommagement (2*D)")),
+        COEF_RIGI_MINI =SIMP(statut='f',typ='R',  val_min=0.0, defaut = 0.0     ,     fr=tr("Rigidite minimale dans la matrice tangente")),
+    ),
+    # ============================================================================
+    INFO        =SIMP(statut='f',typ='I',     into=(1,2,),     defaut=1),
+    RHO         =SIMP(statut='f',typ='R',     fr=tr("Masse volumique")),
+    ALPHA       =SIMP(statut='f',typ='R',     fr=tr("Coefficient de dilatation")),
+    AMOR_ALPHA  =SIMP(statut='f',typ='R'),
+    AMOR_BETA   =SIMP(statut='f',typ='R'),
+    AMOR_HYST   =SIMP(statut='f',typ='R'),
 )
 
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -16145,14 +17727,15 @@ DEFI_MATER_GC=MACRO(nom="DEFI_MATER_GC",
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # person_in_charge: j-pierre.lefebvre at edf.fr
+
 DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
-                   fr="Définition des paramètres décrivant le comportement d un matériau",
+                   fr=tr("Définition des paramètres décrivant le comportement d un matériau"),
                    reentrant='f',
             UIinfo={"groupes":("Modélisation",)},
        regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
                       'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
-                      'ELAS_HYPER','ELAS_2NDG','ELAS_GLRC'),
-               EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
+                      'ELAS_HYPER','ELAS_2NDG','ELAS_GLRC','ELAS_DHRC'),
+               EXCLUS('THER','THER_FO','THER_ORTH','THER_NL','THER_HYDR','THER_COQUE','THER_COQUE_FO'),
                EXCLUS('ECRO_LINE','ECRO_LINE_FO','ECRO_PUIS','ECRO_COOK','ECRO_COOK_FO',),
                EXCLUS('ENDO_HETEROGENE'),
                EXCLUS('TAHERI','TAHERI_FO'),
@@ -16177,7 +17760,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 
                EXCLUS('RCCM','RCCM_FO'),
                EXCLUS('WEIBULL','WEIBULL_FO'),
-               PRESENT_PRESENT('DHRC','DHRC_SEUILS'),
                PRESENT_PRESENT('LAIGLE','ELAS'),
                PRESENT_PRESENT('LETK','ELAS'),
                PRESENT_PRESENT('DRUCK_PRAGER','ELAS'),
@@ -16303,14 +17885,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
            ELAS_HYPER      =FACT(statut='f',
                                  regles=(UN_PARMI('K','NU'),),
              C10             =SIMP(statut='o',typ='R',
-                                   fr="Si C10 est le seul coefficient fourni, alors le matériau est Néo-Hookéen."),
+                                   fr=tr("Si C10 est le seul coefficient fourni, alors le matériau est Néo-Hookéen.")),
              C01             =SIMP(statut='f',typ='R',defaut=0.0,
-                                   fr="Si l'on fournit C01 en plus de C10, on obtient un matériau de type Mooney-Rivlin."),
+                                   fr=tr("Si l'on fournit C01 en plus de C10, on obtient un matériau de type Mooney-Rivlin.")),
              C20             =SIMP(statut='f',typ='R',defaut=0.0,
-                                   fr="Si l'on fournit C20 en plus de C10 et C01, on obtient un matériau de type Signorini."),
-             K               =SIMP(statut='f',typ='R',fr="Module de compressibilité."),
-             NU              =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0,fr="Coefficient de Poisson."),
-             RHO             =SIMP(statut='f',typ='R',defaut=0.0,fr="Masse volumique."),
+                                   fr=tr("Si l'on fournit C20 en plus de C10 et C01, on obtient un matériau de type Signorini.")),
+             K               =SIMP(statut='f',typ='R',fr=tr("Module de compressibilité.")),
+             NU              =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0,fr=tr("Coefficient de Poisson.")),
+             RHO             =SIMP(statut='f',typ='R',defaut=0.0,fr=tr("Masse volumique.")),
            ),
            ELAS_COQUE      =FACT(statut='f',
              regles=(EXCLUS('MEMB_L','M_LLLL',),
@@ -16470,6 +18052,34 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              AMOR_BETA       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
              AMOR_HYST       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
            ),
+           ELAS_DHRC     =FACT(statut='f',
+             A011            =SIMP(statut='o',typ='R',),
+             A012            =SIMP(statut='o',typ='R',),
+             A013            =SIMP(statut='o',typ='R',),
+             A014            =SIMP(statut='o',typ='R',),
+             A015            =SIMP(statut='o',typ='R',),
+             A016            =SIMP(statut='o',typ='R',),
+             A022            =SIMP(statut='o',typ='R',),
+             A023            =SIMP(statut='o',typ='R',),
+             A024            =SIMP(statut='o',typ='R',),
+             A025            =SIMP(statut='o',typ='R',),
+             A026            =SIMP(statut='o',typ='R',),
+             A033            =SIMP(statut='o',typ='R',),
+             A034            =SIMP(statut='o',typ='R',),
+             A035            =SIMP(statut='o',typ='R',),
+             A036            =SIMP(statut='o',typ='R',),
+             A044            =SIMP(statut='o',typ='R',),
+             A045            =SIMP(statut='o',typ='R',),
+             A046            =SIMP(statut='o',typ='R',),
+             A055            =SIMP(statut='o',typ='R',),
+             A056            =SIMP(statut='o',typ='R',),
+             A066            =SIMP(statut='o',typ='R',),
+             RHO             =SIMP(statut='f',typ='R',val_min=0.E+0),
+             ALPHA           =SIMP(statut='f',typ='R'),
+             AMOR_ALPHA      =SIMP(statut='f',typ='R'),
+             AMOR_BETA       =SIMP(statut='f',typ='R'),
+             AMOR_HYST       =SIMP(statut='f',typ='R'),
+           ),
            CABLE           =FACT(statut='f',
              EC_SUR_E        =SIMP(statut='f',typ='R',defaut= 1.E-4 ),
            ),
@@ -16596,6 +18206,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              AN              =SIMP(statut='f',typ='R',defaut= 0. ),
              DP_MAXI         =SIMP(statut='f',typ='R',defaut= 0.1),
              BETA            =SIMP(statut='f',typ='R',defaut=0.85),
+             PORO_TYPE       =SIMP(statut='f',typ='R',defaut=1.,fr=tr("choix de la modélisation de la porosité : 1 = IMPLICITE, 2 = EXPLICITE")),
            ),
            ROUSSELIER_FO   =FACT(statut='f',
              D               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -16608,6 +18219,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              AN              =SIMP(statut='f',typ='R',defaut= 0. ),
              DP_MAXI         =SIMP(statut='f',typ='R',defaut= 0.1),
              BETA            =SIMP(statut='f',typ='R',defaut=0.85),
+             PORO_TYPE       =SIMP(statut='f',typ='R',defaut=1.,fr=tr("choix de la modelisation de la porosite : 1 = IMPLICITE, 2 = EXPLICITE")),
            ),
            VISC_SINH      =FACT(statut='f',
              SIGM_0          =SIMP(statut='o',typ='R'),
@@ -16823,6 +18435,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              UN_SUR_M        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
            ),
              META_LEMA_ANI     =FACT(statut='f',
+             regles=(PRESENT_PRESENT('F_MRR_RR','C_MRR_RR','F_MTT_TT','C_MTT_TT',
+                                     'F_MZZ_ZZ','C_MZZ_ZZ','F_MRT_RT','C_MRT_RT',
+                                     'F_MRZ_RZ','C_MRZ_RZ','F_MTZ_TZ','C_MTZ_TZ'),
+                     PRESENT_PRESENT('F_MXX_XX','C_MXX_XX','F_MYY_YY','C_MYY_YY',
+                                     'F_MZZ_ZZ','C_MZZ_ZZ','F_MXY_XY','C_MXY_XY',
+                                     'F_MXZ_XZ','C_MXZ_XZ','F_MYZ_YZ','C_MYZ_YZ'),
+                     EXCLUS('F_MRR_RR','F_MXX_XX'),),
              F1_A            =SIMP(statut='o',typ='R'),
              F2_A            =SIMP(statut='o',typ='R'),
              C_A             =SIMP(statut='o',typ='R'),
@@ -16835,20 +18454,37 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              F1_Q            =SIMP(statut='o',typ='R'),
              F2_Q            =SIMP(statut='o',typ='R'),
              C_Q             =SIMP(statut='o',typ='R'),
-             F_MRR_RR        =SIMP(statut='o',typ='R'),
-             C_MRR_RR        =SIMP(statut='o',typ='R'),
-             F_MTT_TT        =SIMP(statut='o',typ='R'),
-             C_MTT_TT        =SIMP(statut='o',typ='R'),
-             F_MZZ_ZZ        =SIMP(statut='o',typ='R'),
-             C_MZZ_ZZ        =SIMP(statut='o',typ='R'),
-             F_MRT_RT        =SIMP(statut='o',typ='R'),
-             C_MRT_RT        =SIMP(statut='o',typ='R'),
-             F_MRZ_RZ        =SIMP(statut='o',typ='R'),
-             C_MRZ_RZ        =SIMP(statut='o',typ='R'),
-             F_MTZ_TZ        =SIMP(statut='o',typ='R'),
-             C_MTZ_TZ        =SIMP(statut='o',typ='R'),
+             F_MRR_RR        =SIMP(statut='f',typ='R'),
+             C_MRR_RR        =SIMP(statut='f',typ='R'),
+             F_MTT_TT        =SIMP(statut='f',typ='R'),
+             C_MTT_TT        =SIMP(statut='f',typ='R'),
+             F_MZZ_ZZ        =SIMP(statut='f',typ='R'),
+             C_MZZ_ZZ        =SIMP(statut='f',typ='R'),
+             F_MRT_RT        =SIMP(statut='f',typ='R'),
+             C_MRT_RT        =SIMP(statut='f',typ='R'),
+             F_MRZ_RZ        =SIMP(statut='f',typ='R'),
+             C_MRZ_RZ        =SIMP(statut='f',typ='R'),
+             F_MTZ_TZ        =SIMP(statut='f',typ='R'),
+             C_MTZ_TZ        =SIMP(statut='f',typ='R'),
+             F_MXX_XX        =SIMP(statut='f',typ='R'),
+             C_MXX_XX        =SIMP(statut='f',typ='R'),
+             F_MYY_YY        =SIMP(statut='f',typ='R'),
+             C_MYY_YY        =SIMP(statut='f',typ='R'),
+             F_MXY_XY        =SIMP(statut='f',typ='R'),
+             C_MXY_XY        =SIMP(statut='f',typ='R'),
+             F_MXZ_XZ        =SIMP(statut='f',typ='R'),
+             C_MXZ_XZ        =SIMP(statut='f',typ='R'),
+             F_MYZ_YZ        =SIMP(statut='f',typ='R'),
+             C_MYZ_YZ        =SIMP(statut='f',typ='R'),
            ),
              META_LEMA_ANI_FO  =FACT(statut='f',
+             regles=(PRESENT_PRESENT('F_MRR_RR','C_MRR_RR','F_MTT_TT','C_MTT_TT',
+                                     'F_MZZ_ZZ','C_MZZ_ZZ','F_MRT_RT','C_MRT_RT',
+                                     'F_MRZ_RZ','C_MRZ_RZ','F_MTZ_TZ','C_MTZ_TZ'),
+                     PRESENT_PRESENT('F_MXX_XX','C_MXX_XX','F_MYY_YY','C_MYY_YY',
+                                     'F_MZZ_ZZ','C_MZZ_ZZ','F_MXY_XY','C_MXY_XY',
+                                     'F_MXZ_XZ','C_MXZ_XZ','F_MYZ_YZ','C_MYZ_YZ'),
+                     EXCLUS('F_MRR_RR','F_MXX_XX'),),
              F1_A            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              F2_A            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              C_A             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -16861,18 +18497,28 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              F1_Q            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              F2_Q            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              C_Q             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MRR_RR        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MRR_RR        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MTT_TT        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MTT_TT        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MZZ_ZZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MZZ_ZZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MRT_RT        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MRT_RT        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MRZ_RZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MRZ_RZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             F_MTZ_TZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             C_MTZ_TZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MRR_RR        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MRR_RR        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MTT_TT        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MTT_TT        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MZZ_ZZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MZZ_ZZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MRT_RT        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MRT_RT        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MRZ_RZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MRZ_RZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MTZ_TZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MTZ_TZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MXX_XX        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MXX_XX        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MYY_YY        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MYY_YY        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MXY_XY        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MXY_XY        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MXZ_XZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MXZ_XZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             F_MYZ_YZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             C_MYZ_YZ        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
            ),
            ARME            =FACT(statut='f',
              KYE             =SIMP(statut='o',typ='R'),
@@ -17273,7 +18919,67 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              PARA_CIN        =SIMP(statut='o',typ='R'),
              ENR_AC_G        =SIMP(statut='o',typ='R'),
            ),
-           GLRC_DM         =FACT(statut='f',max=1,
+
+             PORO_BETON      =FACT(statut='f',
+             HYDS            =SIMP(statut='o',typ='R'),
+             F_C               =SIMP(statut='f',typ='R'),
+             F_T              =SIMP(statut='f',typ='R'),
+             EPS_COMP             =SIMP(statut='f',typ='R'),
+             EPS_TRAC             =SIMP(statut='f',typ='R'),
+             EKVP            =SIMP(statut='f',typ='R'),
+             CBIO            =SIMP(statut='f',typ='R'),
+             MODU_EAU        =SIMP(statut='f',typ='R'),
+             SFLD            =SIMP(statut='f',typ='R'),
+             MODU_GEL        =SIMP(statut='f',typ='R'),
+             VOL_GEL         =SIMP(statut='f',typ='R'),
+             PORO            =SIMP(statut='o',typ='R'),
+             TKVP            =SIMP(statut='f',typ='R'),
+             NRJA            =SIMP(statut='f',typ='R'),
+             MSHR            =SIMP(statut='f',typ='R'),
+             KD              =SIMP(statut='f',typ='R'),
+             MU              =SIMP(statut='f',typ='R'),
+             DT80            =SIMP(statut='o',typ='R'),
+             STMP            =SIMP(statut='f',typ='R'),
+             KTMP            =SIMP(statut='f',typ='R'),
+             TREF            =SIMP(statut='f',typ='R'),    
+             Y1SY            =SIMP(statut='f',typ='R'),
+             TAU1            =SIMP(statut='f',typ='R'),
+             TAU2            =SIMP(statut='f',typ='R'),
+             EKFL            =SIMP(statut='f',typ='R'),
+             DFMX            =SIMP(statut='f',typ='R'),
+             GFTL            =SIMP(statut='f',typ='R'),
+             GFCL            =SIMP(statut='f',typ='R'),
+             WREF            =SIMP(statut='f',typ='R'),
+             TPHI            =SIMP(statut='f',typ='R'),
+             ANG_CRIT        =SIMP(statut='f',typ='R'),
+             SREF            =SIMP(statut='f',typ='R'),
+             VREF            =SIMP(statut='f',typ='R'),
+             VMAX            =SIMP(statut='f',typ='R'),
+             KWB             =SIMP(statut='f',typ='R'),
+             COVS            =SIMP(statut='f',typ='R'),
+             ALUC            =SIMP(statut='f',typ='R'),   
+             SULC            =SIMP(statut='f',typ='R'),
+             SILC            =SIMP(statut='f',typ='R'),
+             TDEF            =SIMP(statut='f',typ='R'),
+             TAAR            =SIMP(statut='f',typ='R'),
+             SSAR            =SIMP(statut='f',typ='R'),     
+             SSDE            =SIMP(statut='f',typ='R'),     
+             VAAR            =SIMP(statut='f',typ='R'),     
+             VETT            =SIMP(statut='f',typ='R'),     
+             VVAR            =SIMP(statut='f',typ='R'),     
+             VVDE            =SIMP(statut='f',typ='R'),     
+             BAAR            =SIMP(statut='f',typ='R'),     
+             BDEF            =SIMP(statut='f',typ='R'),     
+             MAAR            =SIMP(statut='f',typ='R'),     
+             MDEF            =SIMP(statut='f',typ='R'),     
+             COTH            =SIMP(statut='f',typ='R'),     
+             CORG            =SIMP(statut='f',typ='R'),     
+             ID0             =SIMP(statut='f',typ='R'),     
+             ID1             =SIMP(statut='f',typ='R'),     
+             ID2             =SIMP(statut='f',typ='R'),     
+            ),
+
+           GLRC_DM         =FACT(statut='f',min=0,max=1,
              GAMMA_T         =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0),
              GAMMA_C         =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=1.E+0),
              GAMMA_F         =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0),
@@ -17282,33 +18988,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              MYF             =SIMP(statut='o',typ='R',val_min=0.E+0),
              ALPHA_C         =SIMP(statut='d',typ='R',val_min=1.E+0,defaut=1.E+0),
            ),
-           DHRC_SEUILS         =FACT(statut='f',
+           DHRC            =FACT(statut='f',
              SYD           =SIMP(statut='o',typ='R',),
              SCRIT         =SIMP(statut='o',typ='R',),
              K0MICR        =SIMP(statut='o',typ='R',),
-             A011          =SIMP(statut='o',typ='R',),
-             A012          =SIMP(statut='o',typ='R',),
-             A013          =SIMP(statut='o',typ='R',),
-             A014          =SIMP(statut='o',typ='R',),
-             A015          =SIMP(statut='o',typ='R',),
-             A016          =SIMP(statut='o',typ='R',),
-             A022          =SIMP(statut='o',typ='R',),
-             A023          =SIMP(statut='o',typ='R',),
-             A024          =SIMP(statut='o',typ='R',),
-             A025          =SIMP(statut='o',typ='R',),
-             A026          =SIMP(statut='o',typ='R',),
-             A033          =SIMP(statut='o',typ='R',),
-             A034          =SIMP(statut='o',typ='R',),
-             A035          =SIMP(statut='o',typ='R',),
-             A036          =SIMP(statut='o',typ='R',),
-             A044          =SIMP(statut='o',typ='R',),
-             A045          =SIMP(statut='o',typ='R',),
-             A046          =SIMP(statut='o',typ='R',),
-             A055          =SIMP(statut='o',typ='R',),
-             A056          =SIMP(statut='o',typ='R',),
-             A066          =SIMP(statut='o',typ='R',),
-           ),
-           DHRC            =FACT(statut='f',
              AAC111        =SIMP(statut='o',typ='R',),
              AAC121        =SIMP(statut='o',typ='R',),
              AAC131        =SIMP(statut='o',typ='R',),
@@ -17527,27 +19210,21 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              GB622         =SIMP(statut='o',typ='R',),
              C0111         =SIMP(statut='o',typ='R',),
              C0211         =SIMP(statut='o',typ='R',),
-             C0121         =SIMP(statut='o',typ='R',),
              C0221         =SIMP(statut='o',typ='R',),
              C0212         =SIMP(statut='o',typ='R',),
              C0112         =SIMP(statut='o',typ='R',),
-             C0122         =SIMP(statut='o',typ='R',),
              C0222         =SIMP(statut='o',typ='R',),
              AC111         =SIMP(statut='o',typ='R',),
              AC211         =SIMP(statut='o',typ='R',),
-             AC121         =SIMP(statut='o',typ='R',),
              AC221         =SIMP(statut='o',typ='R',),
              AC112         =SIMP(statut='o',typ='R',),
              AC212         =SIMP(statut='o',typ='R',),
-             AC122         =SIMP(statut='o',typ='R',),
              AC222         =SIMP(statut='o',typ='R',),
              GC111         =SIMP(statut='o',typ='R',),
              GC211         =SIMP(statut='o',typ='R',),
-             GC121         =SIMP(statut='o',typ='R',),
              GC221         =SIMP(statut='o',typ='R',),
              GC112         =SIMP(statut='o',typ='R',),
              GC212         =SIMP(statut='o',typ='R',),
-             GC122         =SIMP(statut='o',typ='R',),
              GC222         =SIMP(statut='o',typ='R',),
            ),
            GATT_MONERIE    =FACT(statut='f',min=0,max=1,
@@ -17565,17 +19242,17 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
            CABLE_GAINE_FROT=FACT(statut='f',min=0 ,max=1,
              TYPE = SIMP(statut='o',typ='TXM',into=("FROTTANT","GLISSANT","ADHERENT")),
              b_glissant =BLOC(condition="TYPE=='GLISSANT'",
-                                    fr="Loi cable gaine glissante",
+                                    fr=tr("Loi cable gaine glissante"),
                      FROT_LINE         =SIMP(statut='c',typ='R',defaut= 0.0,),
                      FROT_COURB       =SIMP(statut='c',typ='R',defaut= 0.0,),
              ),
              b_adherent =BLOC(condition="TYPE=='ADHERENT'",
-                                    fr="Loi cable gaine adherent",
+                                    fr=tr("Loi cable gaine adherent"),
                      FROT_LINE         =SIMP(statut='c',typ='R',defaut= -1.0,),
                      FROT_COURB       =SIMP(statut='c',typ='R',defaut= 0.0,),
              ),
              b_frottant =BLOC(condition="TYPE=='FROTTANT'",
-                                    fr="Loi cable gaine frottant",
+                                    fr=tr("Loi cable gaine frottant"),
                      FROT_LINE         =SIMP(statut='o',typ='R',defaut= 0.0,),
                      FROT_COURB       =SIMP(statut='o',typ='R',defaut= 0.0,),
              ),
@@ -17584,7 +19261,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 
 # Discrets non-linéaires : début
          DIS_ECRO_CINE  =FACT(statut='f',
-            fr="Loi pour les discrets avec écrouissage cinématique.",
+            fr=tr("Loi pour les discrets avec écrouissage cinématique."),
             regles=(PRESENT_PRESENT('LIMY_DX','KCIN_DX',),PRESENT_PRESENT('PUIS_DX','LIMU_DX',),
                     PRESENT_PRESENT('LIMY_DY','KCIN_DY',),PRESENT_PRESENT('PUIS_DY','LIMU_DY',),
                     PRESENT_PRESENT('LIMY_DZ','KCIN_DZ',),PRESENT_PRESENT('PUIS_DZ','LIMU_DZ',),
@@ -17592,99 +19269,99 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                     PRESENT_PRESENT('LIMY_RY','KCIN_RY',),PRESENT_PRESENT('PUIS_RY','LIMU_RY',),
                     PRESENT_PRESENT('LIMY_RZ','KCIN_RZ',),PRESENT_PRESENT('PUIS_RZ','LIMU_RZ',),),
             LIMY_DX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite élastique suivant l'axe local x de l'élément."),
+               fr=tr("Effort limite élastique suivant l'axe local x de l'élément.")),
             LIMY_DY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite élastique suivant l'axe local y de l'élément."),
+               fr=tr("Effort limite élastique suivant l'axe local y de l'élément.")),
             LIMY_DZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite élastique suivant l'axe local z de l'élément."),
+               fr=tr("Effort limite élastique suivant l'axe local z de l'élément.")),
             LIMY_RX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite élastique suivant l'axe local x de l'élément."),
+               fr=tr("Moment limite élastique suivant l'axe local x de l'élément.")),
             LIMY_RY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite élastique suivant l'axe local y de l'élément."),
+               fr=tr("Moment limite élastique suivant l'axe local y de l'élément.")),
             LIMY_RZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite élastique suivant l'axe local z de l'élément."),
+               fr=tr("Moment limite élastique suivant l'axe local z de l'élément.")),
             KCIN_DX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local x de l'élément."),
+               fr=tr("Raideur suivant l'axe local x de l'élément.")),
             KCIN_DY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local y de l'élément."),
+               fr=tr("Raideur suivant l'axe local y de l'élément.")),
             KCIN_DZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local z de l'élément."),
+               fr=tr("Raideur suivant l'axe local z de l'élément.")),
             KCIN_RX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local Rx de l'élément."),
+               fr=tr("Raideur suivant l'axe local Rx de l'élément.")),
             KCIN_RY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local Ry de l'élément."),
+               fr=tr("Raideur suivant l'axe local Ry de l'élément.")),
             KCIN_RZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur suivant l'axe local Rz de l'élément."),
+               fr=tr("Raideur suivant l'axe local Rz de l'élément.")),
             LIMU_DX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite suivant l'axe local x de l'élément."),
+               fr=tr("Effort limite suivant l'axe local x de l'élément.")),
             LIMU_DY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite suivant l'axe local y de l'élément."),
+               fr=tr("Effort limite suivant l'axe local y de l'élément.")),
             LIMU_DZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Effort limite suivant l'axe local z de l'élément."),
+               fr=tr("Effort limite suivant l'axe local z de l'élément.")),
             LIMU_RX =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite suivant l'axe local x de l'élément."),
+               fr=tr("Moment limite suivant l'axe local x de l'élément.")),
             LIMU_RY =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite suivant l'axe local y de l'élément."),
+               fr=tr("Moment limite suivant l'axe local y de l'élément.")),
             LIMU_RZ =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Moment limite suivant l'axe local z de l'élément."),
+               fr=tr("Moment limite suivant l'axe local z de l'élément.")),
             PUIS_DX =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local x de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local x de l'élément.")),
             PUIS_DY =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local y de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local y de l'élément.")),
             PUIS_DZ =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local z de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local z de l'élément.")),
             PUIS_RX =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local Rx de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local Rx de l'élément.")),
             PUIS_RY =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local Ry de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local Ry de l'élément.")),
             PUIS_RZ =SIMP(statut='f',typ='R',val_min = 1.0,
-               fr="Coefficient de non-linéarité suivant l'axe local Rz de l'élément."),
+               fr=tr("Coefficient de non-linéarité suivant l'axe local Rz de l'élément.")),
          ),
          DIS_VISC =FACT(statut='f',
-            fr="Loi pour un discret de type visqueux : Zener Généralisé.",
+            fr=tr("Loi pour un discret de type visqueux : Zener Généralisé."),
             regles=(UN_PARMI('K1','UNSUR_K1'),
                     UN_PARMI('K2','UNSUR_K2'),
                     UN_PARMI('K3','UNSUR_K3'), ),
             K1          =SIMP(statut='f',typ='R',val_min = 1.0E-08,
-               fr="Raideur en série avec les 2 autres branches."),
+               fr=tr("Raideur en série avec les 2 autres branches.")),
             K2          =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Raideur en parallèle de la branche visqueuse."),
+               fr=tr("Raideur en parallèle de la branche visqueuse.")),
             K3          =SIMP(statut='f',typ='R',val_min = 1.0E-08,
-               fr="Raideur dans la branche visqueuse."),
+               fr=tr("Raideur dans la branche visqueuse.")),
             UNSUR_K1    =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Souplesse en série avec les 2 autres branches."),
+               fr=tr("Souplesse en série avec les 2 autres branches.")),
             UNSUR_K2    =SIMP(statut='f',typ='R',val_min = 1.0E-08,
-               fr="Souplesse en parallèle de la branche visqueuse."),
+               fr=tr("Souplesse en parallèle de la branche visqueuse.")),
             UNSUR_K3    =SIMP(statut='f',typ='R',val_min = 0.0,
-               fr="Souplesse dans la branche visqueuse."),
+               fr=tr("Souplesse dans la branche visqueuse.")),
             C           =SIMP(statut='o',typ='R',val_min = 1.0E-08,
-               fr="'Raideur' de la partie visqueuse."),
+               fr=tr("'Raideur' de la partie visqueuse.")),
             PUIS_ALPHA  =SIMP(statut='o',typ='R',val_min = 1.0E-08, val_max=1.0, defaut=0.5,
-               fr="Puissance de la loi visqueuse ]0.0, 1.0] ."),
+               fr=tr("Puissance de la loi visqueuse ]0.0, 1.0] .")),
          ),
          DIS_BILI_ELAS  =FACT(statut='f',
-            fr="Loi bi-linéaire pour les discrets.",
+            fr=tr("Loi bi-linéaire pour les discrets."),
             regles=(PRESENT_PRESENT('KDEB_DX','KFIN_DX','FPRE_DX',),
                     PRESENT_PRESENT('KDEB_DY','KFIN_DY','FPRE_DY',),
                     PRESENT_PRESENT('KDEB_DZ','KFIN_DZ','FPRE_DZ',),),
             KDEB_DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur début suivant l'axe local x de l'élément."),
+               fr=tr("Raideur début suivant l'axe local x de l'élément.")),
             KDEB_DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur début suivant l'axe local y de l'élément."),
+               fr=tr("Raideur début suivant l'axe local y de l'élément.")),
             KDEB_DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur début  suivant l'axe local z de l'élément."),
+               fr=tr("Raideur début  suivant l'axe local z de l'élément.")),
             KFIN_DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur fin l'axe local x de l'élément."),
+               fr=tr("Raideur fin l'axe local x de l'élément.")),
             KFIN_DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur fin l'axe local y de l'élément."),
+               fr=tr("Raideur fin l'axe local y de l'élément.")),
             KFIN_DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-               fr="Raideur fin l'axe local z de l'élément."),
+               fr=tr("Raideur fin l'axe local z de l'élément.")),
             FPRE_DX =SIMP(statut='f',typ='R',
-               fr="Effort de préserrage suivant l'axe local x de l'élément."),
+               fr=tr("Effort de préserrage suivant l'axe local x de l'élément.")),
             FPRE_DY =SIMP(statut='f',typ='R',
-               fr="Effort de préserrage suivant l'axe local y de l'élément."),
+               fr=tr("Effort de préserrage suivant l'axe local y de l'élément.")),
             FPRE_DZ =SIMP(statut='f',typ='R',
-               fr="Effort de préserrage suivant l'axe local z de l'élément."),
+               fr=tr("Effort de préserrage suivant l'axe local z de l'élément.")),
          ),
 # Discrets non-linéaires : fin
 #
@@ -17956,7 +19633,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU -----------------------------------------------
 # =================================================================================
            b_liqusatu      = BLOC(condition = "COMP_THM == 'LIQU_SATU' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_SATU"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -18126,7 +19803,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
 # =================================================================================
            b_liqugaz      = BLOC(condition = "COMP_THM == 'LIQU_GAZ' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -18308,7 +19985,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_GAZ ------------------------------------------------
 # =================================================================================
            b_gaz          = BLOC(condition = "COMP_THM == 'GAZ' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type GAZ",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type GAZ"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -18469,7 +20146,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
 # =================================================================================
            b_liqugazatm   = BLOC(condition = "COMP_THM == 'LIQU_GAZ_ATM' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -18633,7 +20310,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ,  THM_AIR_DISSOUS---------
 # =================================================================================
            b_liquadgaz  = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -18840,7 +20517,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ ------------------------
 # =================================================================================
            b_liquvapegaz  = BLOC(condition = "COMP_THM == 'LIQU_VAPE_GAZ' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -19029,7 +20706,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ THM_AIR_DISSOUS---------
 # =================================================================================
            b_liquadvape  = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ_VAPE' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ_VAPE",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ_VAPE"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -19225,7 +20902,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # --- THM_INIT, THM_DIFFU, THM_LIQU, THM_VAPE_GAZ ---------------------------------
 # =================================================================================
            b_liquvape  = BLOC(condition = "COMP_THM == 'LIQU_VAPE' ",
-                                 fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE",
+                                 fr=tr("Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE"),
 # =================================================================================
 # --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
 # =================================================================================
@@ -19434,21 +21111,21 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                                                             ) ),
 
              b_critere_matake =BLOC(condition="CRITERE=='MATAKE_MODI_AC' or CRITERE=='MATAKE_MODI_AV'",
-                         fr="Cisaillement plan critique critère de matake pour les cas amplitude constante et amplitude variable",
+                         fr=tr("Cisaillement plan critique critère de matake pour les cas amplitude constante et amplitude variable"),
                MATAKE_A         =SIMP(statut='o',typ='R'),
                MATAKE_B         =SIMP(statut='o',typ='R'),
                COEF_FLEX_TORS   =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
              ),
 
              b_critere_dang_van =BLOC(condition="(CRITERE=='DANG_VAN_MODI_AC' or CRITERE=='DANG_VAN_MODI_AV')",
-                                 fr="Critère de Dang Van modifié pour les cas amplitude constante et amplitude variable",
+                                 fr=tr("Critère de Dang Van modifié pour les cas amplitude constante et amplitude variable"),
                D_VAN_A            =SIMP(statut='o',typ='R'),
                D_VAN_B            =SIMP(statut='o',typ='R'),
                COEF_CISA_TRAC     =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
              ),
 
              b_critere_fate_soci =BLOC(condition="CRITERE=='FATESOCI_MODI_AV'",
-                               fr="Critère de Fatemi et Socie, en élasticité ou élastoplasticité, pour le cas amplitude variable",
+                               fr=tr("Critère de Fatemi et Socie, en élasticité ou élastoplasticité, pour le cas amplitude variable"),
                FATSOC_A           =SIMP(statut='o',typ='R'),
                COEF_CISA_TRAC     =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
              ),
@@ -19497,6 +21174,8 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              SIGM_C          =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
              PENA_ADHERENCE  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
              PENA_CONTACT    =SIMP(statut='f',typ='R',defaut=1.),
+             PENA_LAGR       =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0),             
+             RIGI_GLIS       =SIMP(statut='f',typ='R',defaut=1.0E1),             
              CINEMATIQUE     =SIMP(statut='f',typ='TXM',defaut="UNILATER",into=("UNILATER","GLIS_1D","GLIS_2D")),
            ),
            CZM_LAB_MIX    =FACT(statut='f',
@@ -19551,6 +21230,9 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                      ),
              K_N             =SIMP(statut='o',typ='R',val_min=1.E-12),
              K_T             =SIMP(statut='f',typ='R',val_min=1.E-12),
+             AMOR_NOR        =SIMP(statut='f',typ='R',val_min=0.),
+             AMOR_TAN        =SIMP(statut='f',typ='R',val_min=0.),
+             COEF_AMOR       =SIMP(statut='f',typ='R',val_min=0.),
              MU              =SIMP(statut='o',typ='R',val_min=1.E-3),
              PENA_TANG       =SIMP(statut='f',typ='R',val_min=0.),
              ADHESION        =SIMP(statut='f',typ='R',defaut=0., val_min=0.),
@@ -19604,33 +21286,33 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              PA              =SIMP(statut='o',typ='R'),
            ),
            LETK          =FACT(statut='f',
-             PA         =SIMP(statut='o',typ='R',fr="pression atmospherique"),
-             NELAS      =SIMP(statut='o',typ='R',fr="exposant de la loi de variation des modules K et G"),
-             SIGMA_C    =SIMP(statut='o',typ='R',fr="résistance en compression simple "),
-             H0_EXT     =SIMP(statut='o',typ='R',fr="parametre pilotant la résistance en extension"),
-             GAMMA_CJS  =SIMP(statut='o',typ='R',fr="parametre de forme du critere ds le plan déviatoire entre 0 et 1."),
-             XAMS       =SIMP(statut='o',typ='R',fr="parametre non nul intervenant dans les lois d'écrouissage pre pic"),
-             ETA        =SIMP(statut='o',typ='R',fr="parametre non nul intervenant dans les lois d'écrouissage post pic"),
-             A_0        =SIMP(statut='o',typ='R',fr="a de la limite d'élasticité initiale"),
-             A_E        =SIMP(statut='o',typ='R',fr="a de la limite de clivage ou seuil intermédiaire"),
-             A_PIC      =SIMP(statut='o',typ='R',fr="a du seuil de pic"),
-             S_0        =SIMP(statut='o',typ='R',fr="s de la limite d'élasticité initiale"),
-             M_0        =SIMP(statut='o',typ='R',fr="m de la limite d'élasticité initiale"),
-             M_E        =SIMP(statut='o',typ='R',fr="m de la limite de clivage ou seuil intermédiaire"),
-             M_PIC      =SIMP(statut='o',typ='R',fr="m du seuil de pic"),
-             M_ULT      =SIMP(statut='o',typ='R',fr="m du seuil residuel"),
-             XI_ULT     =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil résiduel"),
-             XI_E       =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil de clivage"),
-             XI_PIC     =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil de pic"),
-             MV_MAX     =SIMP(statut='o',typ='R',fr="m du seuil viscoplastique maximal"),
-             XIV_MAX    =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil viscoplastique maximal"),
-             A          =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"),
-             N          =SIMP(statut='o',typ='R',fr="parametre intervenant dans la formule pilotant la cinetique de fluage"),
-             SIGMA_P1   =SIMP(statut='o',typ='R',fr="SIG min de l intersection du seuil de pic et intermediaire "),
-             MU0_V      =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance des mecanismes pre pic et viscoplastique"),
-             XI0_V      =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance des mecanismes pre pic et viscoplastique"),
-             MU1        =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance du mecanisme post pic "),
-             XI1        =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance du mecanisme post pic "),
+             PA         =SIMP(statut='o',typ='R',fr=tr("pression atmospherique")),
+             NELAS      =SIMP(statut='o',typ='R',fr=tr("exposant de la loi de variation des modules K et G")),
+             SIGMA_C    =SIMP(statut='o',typ='R',fr=tr("résistance en compression simple ")),
+             H0_EXT     =SIMP(statut='o',typ='R',fr=tr("parametre pilotant la résistance en extension")),
+             GAMMA_CJS  =SIMP(statut='o',typ='R',fr=tr("parametre de forme du critere ds le plan déviatoire entre 0 et 1.")),
+             XAMS       =SIMP(statut='o',typ='R',fr=tr("parametre non nul intervenant dans les lois d'écrouissage pre pic")),
+             ETA        =SIMP(statut='o',typ='R',fr=tr("parametre non nul intervenant dans les lois d'écrouissage post pic")),
+             A_0        =SIMP(statut='o',typ='R',fr=tr("a de la limite d'élasticité initiale")),
+             A_E        =SIMP(statut='o',typ='R',fr=tr("a de la limite de clivage ou seuil intermédiaire")),
+             A_PIC      =SIMP(statut='o',typ='R',fr=tr("a du seuil de pic")),
+             S_0        =SIMP(statut='o',typ='R',fr=tr("s de la limite d'élasticité initiale")),
+             M_0        =SIMP(statut='o',typ='R',fr=tr("m de la limite d'élasticité initiale")),
+             M_E        =SIMP(statut='o',typ='R',fr=tr("m de la limite de clivage ou seuil intermédiaire")),
+             M_PIC      =SIMP(statut='o',typ='R',fr=tr("m du seuil de pic")),
+             M_ULT      =SIMP(statut='o',typ='R',fr=tr("m du seuil residuel")),
+             XI_ULT     =SIMP(statut='o',typ='R',fr=tr("niveau d écrouissage pour atteindre le seuil résiduel")),
+             XI_E       =SIMP(statut='o',typ='R',fr=tr("niveau d écrouissage pour atteindre le seuil de clivage")),
+             XI_PIC     =SIMP(statut='o',typ='R',fr=tr("niveau d écrouissage pour atteindre le seuil de pic")),
+             MV_MAX     =SIMP(statut='o',typ='R',fr=tr("m du seuil viscoplastique maximal")),
+             XIV_MAX    =SIMP(statut='o',typ='R',fr=tr("niveau d écrouissage pour atteindre le seuil viscoplastique maximal")),
+             A          =SIMP(statut='o',typ='R',fr=tr("parametre carcaterisant l amplitude de la vitesse de fluage")),
+             N          =SIMP(statut='o',typ='R',fr=tr("parametre intervenant dans la formule pilotant la cinetique de fluage")),
+             SIGMA_P1   =SIMP(statut='o',typ='R',fr=tr("SIG min de l intersection du seuil de pic et intermediaire ")),
+             MU0_V      =SIMP(statut='o',typ='R',fr=tr("relatif à l angle de dilatance des mecanismes pre pic et viscoplastique")),
+             XI0_V      =SIMP(statut='o',typ='R',fr=tr("relatif à l angle de dilatance des mecanismes pre pic et viscoplastique")),
+             MU1        =SIMP(statut='o',typ='R',fr=tr("relatif à l angle de dilatance du mecanisme post pic ")),
+             XI1        =SIMP(statut='o',typ='R',fr=tr("relatif à l angle de dilatance du mecanisme post pic ")),
            ),
            DRUCK_PRAGER  =FACT(statut='f',
              ALPHA           =SIMP(statut='o',typ='R'),
@@ -19638,12 +21320,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              P_ULTM          =SIMP(statut='o',typ='R'),
              ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
              b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
+                                    fr=tr("Loi de comportement de type Drucker Prager avec un ecrouissage lineaire"),
                     H               =SIMP(statut='o',typ='R'),
                     TYPE_DP         =SIMP(statut='c',typ='R',defaut= 1.0,),
              ),
              b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
+                                    fr=tr("Loi de comportement de type Drucker Prager avec un ecrouissage parabolique"),
                     SY_ULTM         =SIMP(statut='o',typ='R'),
                     TYPE_DP         =SIMP(statut='c',typ='R',defaut= 2.0,),
              ),
@@ -19656,12 +21338,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              P_ULTM          =SIMP(statut='o',typ=(fonction_sdaster,formule)),
              ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
              b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
+                                    fr=tr("Loi de comportement de type Drucker Prager avec un ecrouissage lineaire"),
                     H               =SIMP(statut='o',typ=(fonction_sdaster,formule)),
                     TYPE_DP         =SIMP(statut='c',typ='R',defaut= 1.0,),
              ),
              b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
+                                    fr=tr("Loi de comportement de type Drucker Prager avec un ecrouissage parabolique"),
                     SY_ULTM         =SIMP(statut='o',typ=(fonction_sdaster,formule)),
                     TYPE_DP         =SIMP(statut='c',typ='R',defaut= 2.0,),
              ),
@@ -19669,20 +21351,20 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
            ),
 
            VISC_DRUC_PRAG          =FACT(statut='f',
-             PREF       =SIMP(statut='o',typ='R',fr="pression de reference"),
-             A          =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"),
-             N          =SIMP(statut='o',typ='R',fr="parametre intervenant dans la formule pilotant la cinetique de fluage"),
-             P_PIC      =SIMP(statut='o',typ='R',fr="niveau d ecrouissage pour atteindre le seuil de pic"),
-             P_ULT      =SIMP(statut='o',typ='R',fr="niveau d ecrouissage pour atteindre le seuil utime"),
-             ALPHA_0    =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil d elasticite"),
-             ALPHA_PIC  =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil de pic"),
-             ALPHA_ULT  =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil ultime"),
-             R_0        =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil d'elasticite"),
-             R_PIC      =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil de pic"),
-             R_ULT      =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil ultime"),
-             BETA_0     =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil d elasticite"),
-             BETA_PIC   =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil de pic"),
-             BETA_ULT   =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil ultime"),
+             PREF       =SIMP(statut='o',typ='R',fr=tr("pression de reference")),
+             A          =SIMP(statut='o',typ='R',fr=tr("parametre carcaterisant l amplitude de la vitesse de fluage")),
+             N          =SIMP(statut='o',typ='R',fr=tr("parametre intervenant dans la formule pilotant la cinetique de fluage")),
+             P_PIC      =SIMP(statut='o',typ='R',fr=tr("niveau d ecrouissage pour atteindre le seuil de pic")),
+             P_ULT      =SIMP(statut='o',typ='R',fr=tr("niveau d ecrouissage pour atteindre le seuil utime")),
+             ALPHA_0    =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la cohesion au seuil d elasticite")),
+             ALPHA_PIC  =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la cohesion au seuil de pic")),
+             ALPHA_ULT  =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la cohesion au seuil ultime")),
+             R_0        =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage correspondant au seuil d'elasticite")),
+             R_PIC      =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage correspondant au seuil de pic")),
+             R_ULT      =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage correspondant au seuil ultime")),
+             BETA_0     =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la dilatance au seuil d elasticite")),
+             BETA_PIC   =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la dilatance au seuil de pic")),
+             BETA_ULT   =SIMP(statut='o',typ='R',fr=tr("parametre d ecrouissage relatif à la dilatance au seuil ultime")),
            ),
              HOEK_BROWN          =FACT(statut='f',
              GAMMA_RUP       =SIMP(statut='o',typ='R'),
@@ -19776,16 +21458,16 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                       PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'),
                       ),
             # TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             K               =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"),
-             TAUR            =SIMP(statut='o',typ='R',fr="Contraintes de cisaillement à T=0K, en unite de contraintes"),
-             TAU0            =SIMP(statut='o',typ='R',fr="Contraintes critique initiale de cisaillement, en unite de contraintes"),
-             GAMMA0          =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"),
-             DELTAG0         =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"),
-             BSD             =SIMP(statut='o',typ='R',fr="fonction de la taille du grain B/D"),
-             GCB             =SIMP(statut='o',typ='R',fr="distance critique d'annihilation GC/B"),
-             KDCS            =SIMP(statut='o',typ='R',fr="Parametre relatif à la direction principale de la dislocation"),
-             P               =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"),
-             Q               =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"),
+             K               =SIMP(statut='o',typ='R',fr=tr("Constante de Boltzmann, en eV/K")),
+             TAUR            =SIMP(statut='o',typ='R',fr=tr("Contraintes de cisaillement à T=0K, en unite de contraintes")),
+             TAU0            =SIMP(statut='o',typ='R',fr=tr("Contraintes critique initiale de cisaillement, en unite de contraintes")),
+             GAMMA0          =SIMP(statut='o',typ='R',fr=tr("Vitesse d ecoulement initiale")),
+             DELTAG0         =SIMP(statut='o',typ='R',fr=tr("Gain d energie lie au franchissement d obstacle")),
+             BSD             =SIMP(statut='o',typ='R',fr=tr("fonction de la taille du grain B/D")),
+             GCB             =SIMP(statut='o',typ='R',fr=tr("distance critique d'annihilation GC/B")),
+             KDCS            =SIMP(statut='o',typ='R',fr=tr("Parametre relatif à la direction principale de la dislocation")),
+             P               =SIMP(statut='o',typ='R',fr=tr("Parametre materiau dépendant de la forme de l'obstacle")),
+             Q               =SIMP(statut='o',typ='R',fr=tr("Parametre materiau dépendant de la forme de l'obstacle")),
              H               =SIMP(statut='f',typ='R'),
              H1              =SIMP(statut='f',typ='R'),
              H2              =SIMP(statut='f',typ='R'),
@@ -19800,21 +21482,21 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                      PRESENT_ABSENT('H','H1','H2','H3','H4','H5'),
                      ),
              #TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             GAMMA0          =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"),
-             TAU_F           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
-             A               =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"),
-             B               =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"),
-             N               =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"),
-             Y               =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"),
-             ALPHA           =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"),
-             BETA            =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"),
-             RHO_REF         =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"),
+             GAMMA0          =SIMP(statut='f',typ='R',defaut=0.001,fr=tr("Vitesse d ecoulement initiale en s**-1")),
+             TAU_F           =SIMP(statut='o',typ='R',fr=tr("Contraintes , en unite de contraintes ex 20 MPa")),
+             A               =SIMP(statut='f',typ='R',defaut=0.13,fr=tr("paramètre A, sans unité")),
+             B               =SIMP(statut='f',typ='R',defaut=0.005,fr=tr("paramètre B, sans unité")),
+             N               =SIMP(statut='f',typ='R',defaut=200.,fr=tr("paramètre n, sans unité")),
+             Y               =SIMP(statut='o',typ='R',fr=tr("paramète Y, en unité de longueur ex 2.5 A")),
+             ALPHA           =SIMP(statut='f',typ='R',defaut=0.35,fr=tr("ecrouissage, paramètre alpha")),
+             BETA            =SIMP(statut='o',typ='R',fr=tr("ecrouissage, paramètre b, en unite de longueur")),
+             RHO_REF         =SIMP(statut='o',typ='R',fr=tr("ecrouissage, paramètre rho_ref, en unité de longueur **-2")),
              H               =SIMP(statut='f',typ='R'),
-             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",),
-             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",),
-             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",),
-             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",),
-             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",),
+             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr=tr("matrice d'interaction, terme a*"),),
+             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr=tr("matrice d'interaction, terme a_colineaire"),),
+             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr=tr("matrice d'interaction, terme a_glissile"),),
+             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr=tr("matrice d'interaction, terme a_Lomer"),),
+             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr=tr("matrice d'interaction, terme a_Hirth"),),
            ),
 
            MONO_DD_CFC_IRRA      =FACT(statut='f',
@@ -19823,30 +21505,30 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                      PRESENT_ABSENT('H','H1','H2','H3','H4','H5'),
                      ),
              #TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             GAMMA0          =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"),
-             TAU_F           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
-             A               =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"),
-             B               =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"),
-             N               =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"),
-             Y               =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"),
-             ALPHA           =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"),
-             BETA            =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"),
-             RHO_REF         =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"),
+             GAMMA0          =SIMP(statut='f',typ='R',defaut=0.001,fr=tr("Vitesse d ecoulement initiale en s**-1")),
+             TAU_F           =SIMP(statut='o',typ='R',fr=tr("Contraintes , en unite de contraintes ex 20 MPa")),
+             A               =SIMP(statut='f',typ='R',defaut=0.13,fr=tr("paramètre A, sans unité")),
+             B               =SIMP(statut='f',typ='R',defaut=0.005,fr=tr("paramètre B, sans unité")),
+             N               =SIMP(statut='f',typ='R',defaut=200.,fr=tr("paramètre n, sans unité")),
+             Y               =SIMP(statut='o',typ='R',fr=tr("paramète Y, en unité de longueur ex 2.5 A")),
+             ALPHA           =SIMP(statut='f',typ='R',defaut=0.35,fr=tr("ecrouissage, paramètre alpha")),
+             BETA            =SIMP(statut='o',typ='R',fr=tr("ecrouissage, paramètre b, en unite de longueur")),
+             RHO_REF         =SIMP(statut='o',typ='R',fr=tr("ecrouissage, paramètre rho_ref, en unité de longueur **-2")),
              H               =SIMP(statut='f',typ='R'),
-             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",),
-             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",),
-             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",),
-             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",),
-             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",),
+             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr=tr("matrice d'interaction, terme a*"),),
+             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr=tr("matrice d'interaction, terme a_colineaire"),),
+             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr=tr("matrice d'interaction, terme a_glissile"),),
+             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr=tr("matrice d'interaction, terme a_Lomer"),),
+             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr=tr("matrice d'interaction, terme a_Hirth"),),
 
-             DZ_IRRA         =SIMP(statut='o',typ='R',val_min=0.E+0,fr="Parametre dzeta pour irradiation"),
-             XI_IRRA         =SIMP(statut='o',typ='R',val_min=0.E+0,fr="Parametre xi pour irradiation"),
-             RHO_VOID        =SIMP(statut='o',typ='R',fr="Parametre rho_voids pour irradiation"),
-             PHI_LOOP        =SIMP(statut='o',typ='R',fr="Parametre phi_loops pour irradiation"),
-             ALP_VOID        =SIMP(statut='o',typ='R',fr="Parametre alpha_voids pour irradiation"),
-             ALP_LOOP        =SIMP(statut='o',typ='R',fr="Parametre alpha_loops pour irradiation"),
-             RHO_SAT         =SIMP(statut='o',typ='R',fr="Parametre rho_sat*b*b pour irradiation"),
-             PHI_SAT         =SIMP(statut='o',typ='R',fr="Parametre phi_sat pour irradiation"),
+             DZ_IRRA         =SIMP(statut='o',typ='R',val_min=0.E+0,fr=tr("Parametre dzeta pour irradiation")),
+             XI_IRRA         =SIMP(statut='o',typ='R',val_min=0.E+0,fr=tr("Parametre xi pour irradiation")),
+             RHO_VOID        =SIMP(statut='o',typ='R',fr=tr("Parametre rho_voids pour irradiation")),
+             PHI_LOOP        =SIMP(statut='o',typ='R',fr=tr("Parametre phi_loops pour irradiation")),
+             ALP_VOID        =SIMP(statut='o',typ='R',fr=tr("Parametre alpha_voids pour irradiation")),
+             ALP_LOOP        =SIMP(statut='o',typ='R',fr=tr("Parametre alpha_loops pour irradiation")),
+             RHO_SAT         =SIMP(statut='o',typ='R',fr=tr("Parametre rho_sat*b*b pour irradiation")),
+             PHI_SAT         =SIMP(statut='o',typ='R',fr=tr("Parametre phi_sat pour irradiation")),
 
            ),
 
@@ -19856,77 +21538,73 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                      PRESENT_ABSENT('H','H1','H2','H3','H4','H5'),
                      ),
              #TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             GAMMA0          =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale en s**-1"),
-             TAU_F           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
-             BETA            =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"),
-             N               =SIMP(statut='o',typ='R',fr="paramètre n, sans unite"),
-             UN_SUR_D        =SIMP(statut='o',typ='R',fr="paramètre 1/D, en unite de 1/longueur"),
-             GC0             =SIMP(statut='o',typ='R',fr="paramètre GC0, en unite de longueur"),
-             K               =SIMP(statut='o',typ='R',fr="paramètre K, sans unite"),
+             GAMMA0          =SIMP(statut='o',typ='R',fr=tr("Vitesse d ecoulement initiale en s**-1")),
+             TAU_F           =SIMP(statut='o',typ='R',fr=tr("Contraintes , en unite de contraintes ex 20 MPa")),
+             BETA            =SIMP(statut='o',typ='R',fr=tr("ecrouissage, paramètre b, en unite de longueur")),
+             N               =SIMP(statut='o',typ='R',fr=tr("paramètre n, sans unite")),
+             UN_SUR_D        =SIMP(statut='o',typ='R',fr=tr("paramètre 1/D, en unite de 1/longueur")),
+             GC0             =SIMP(statut='o',typ='R',fr=tr("paramètre GC0, en unite de longueur")),
+             K               =SIMP(statut='o',typ='R',fr=tr("paramètre K, sans unite")),
              H               =SIMP(statut='f',typ='R'),
-             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",),
-             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",),
-             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",),
-             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",),
-             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",),
+             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr=tr("matrice d'interaction, terme a*"),),
+             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr=tr("matrice d'interaction, terme a_colineaire"),),
+             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr=tr("matrice d'interaction, terme a_glissile"),),
+             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr=tr("matrice d'interaction, terme a_Lomer"),),
+             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr=tr("matrice d'interaction, terme a_Hirth"),),
            ),
 
           MONO_DD_CC      =FACT(statut='f',
              #TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             B               =SIMP(statut='o',typ='R',fr="parametre B, en unite de longueur"),
-             GH               =SIMP(statut='o',typ='R',fr="parametre H, en unite de 1/temps"),
-             DELTAG0         =SIMP(statut='o',typ='R',fr="energie d'activation, en unite d'energie (eV ou J)"),
-             TAU_0           =SIMP(statut='o',typ='R',fr="contrainte ultime, en unite de contraintes "),
-             TAU_F           =SIMP(statut='o',typ='R',fr="seuil en contrainte , en unite de contraintes"),
-             GAMMA0          =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale en s**-1"),
-             N               =SIMP(statut='o',typ='R',fr="parametre n, sans unite"),
-             RHO_MOB         =SIMP(statut='o',typ='R',fr="densite de dislocations mobiles, en unite de longueur **-2"),
-             D               =SIMP(statut='o',typ='R',fr="parametre D, en unite de longueur"),
-             BETA            =SIMP(statut='o',typ='R',fr="parametre beta, sans unite"),
-             D_LAT           =SIMP(statut='o',typ='R',fr="parametre D_LAT, en unite de longueur"),
-             Y_AT            =SIMP(statut='o',typ='R',fr="parametre Y_AT, en unite de longueur"),
-             K_F             =SIMP(statut='o',typ='R',fr="Parametre K_F"),
-             K_SELF          =SIMP(statut='o',typ='R',fr="Parametre K_SELF"),
-             K_BOLTZ         =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"),
-             H1              =SIMP(statut='o',typ='R',fr="Parametre a_self"),
-             H2              =SIMP(statut='o',typ='R',fr="Parametre a_coli"),
-             H3              =SIMP(statut='o',typ='R',fr="Parametre a_ncol"),
+             B               =SIMP(statut='o',typ='R',fr=tr("parametre B, en unite de longueur")),
+             GH               =SIMP(statut='o',typ='R',fr=tr("parametre H, en unite de 1/temps")),
+             DELTAG0         =SIMP(statut='o',typ='R',fr=tr("energie d'activation, en unite d'energie (eV ou J)")),
+             TAU_0           =SIMP(statut='o',typ='R',fr=tr("contrainte ultime, en unite de contraintes ")),
+             TAU_F           =SIMP(statut='o',typ='R',fr=tr("seuil en contrainte , en unite de contraintes")),
+             GAMMA0          =SIMP(statut='o',typ='R',fr=tr("Vitesse d ecoulement initiale en s**-1")),
+             N               =SIMP(statut='o',typ='R',fr=tr("parametre n, sans unite")),
+             RHO_MOB         =SIMP(statut='o',typ='R',fr=tr("densite de dislocations mobiles, en unite de longueur **-2")),
+             D               =SIMP(statut='o',typ='R',fr=tr("parametre D, en unite de longueur")),
+             D_LAT           =SIMP(statut='o',typ='R',fr=tr("parametre D_LAT, en unite de longueur")),
+             Y_AT            =SIMP(statut='o',typ='R',fr=tr("parametre Y_AT, en unite de longueur")),
+             K_F             =SIMP(statut='o',typ='R',fr=tr("Parametre K_F")),
+             K_SELF          =SIMP(statut='o',typ='R',fr=tr("Parametre K_SELF")),
+             K_BOLTZ         =SIMP(statut='o',typ='R',fr=tr("Constante de Boltzmann, en eV/K")),
+             H1              =SIMP(statut='o',typ='R',fr=tr("Parametre a_self")),
+             H2              =SIMP(statut='o',typ='R',fr=tr("Parametre a_coli")),
+             H3              =SIMP(statut='o',typ='R',fr=tr("Parametre a_ncol")),
              H4              =SIMP(statut='f',typ='R',defaut=0.),
              H5              =SIMP(statut='f',typ='R',defaut=0.),
              H6              =SIMP(statut='f',typ='R',defaut=0.),
-             DELTA1          =SIMP(statut='f',typ='R',defaut=1.,fr="parametre permettant la variation de Y_AT avec tau_eff"),
-             DELTA2          =SIMP(statut='f',typ='R',defaut=1.,fr="parametre permettant la variation de a_AT avec tau_eff"),
-             DEPDT           =SIMP(statut='f',typ='R',defaut=0.,fr="parametre dEps/dT pour le calcul de DeltaG"),
+             DEPDT           =SIMP(statut='f',typ='R',defaut=0.,fr=tr("parametre dEps/dT pour le calcul de DeltaG")),
+             MU_MOY          =SIMP(statut='f',typ='R'),
            ),
 
           MONO_DD_CC_IRRA =FACT(statut='f',
              #TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
-             B               =SIMP(statut='o',typ='R',fr="parametre B, en unite de longueur"),
-             GH               =SIMP(statut='o',typ='R',fr="parametre H, en unite de 1/temps"),
-             DELTAG0         =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"),
-             TAU_0           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
-             TAU_F           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
-             GAMMA0          =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale en s**-1"),
-             N               =SIMP(statut='o',typ='R',fr="parametre n, sans unite"),
-             RHO_MOB         =SIMP(statut='o',typ='R',fr="densite de dislocations mobiles, en unite de longueur **-2"),
-             D               =SIMP(statut='o',typ='R',fr="parametre D, en unite de longueur"),
-             BETA            =SIMP(statut='o',typ='R',fr="ecrouissage, parametre beta"),
-             D_LAT           =SIMP(statut='o',typ='R',fr="parametre D_LAT, en unite de longueur"),
-             Y_AT            =SIMP(statut='o',typ='R',fr="parametre Y_AT, en unite de longueur"),
-             K_F             =SIMP(statut='o',typ='R',fr="Parametre K_F"),
-             K_SELF          =SIMP(statut='o',typ='R',fr="Parametre K_SELF"),
-             K_BOLTZ         =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"),
-             H1              =SIMP(statut='o',typ='R',fr="Parametre a_self"),
-             H2              =SIMP(statut='o',typ='R',fr="Parametre a_coli"),
-             H3              =SIMP(statut='o',typ='R',fr="Parametre a_ncol"),
+             B               =SIMP(statut='o',typ='R',fr=tr("parametre B, en unite de longueur")),
+             GH               =SIMP(statut='o',typ='R',fr=tr("parametre H, en unite de 1/temps")),
+             DELTAG0         =SIMP(statut='o',typ='R',fr=tr("Gain d energie lie au franchissement d obstacle")),
+             TAU_0           =SIMP(statut='o',typ='R',fr=tr("Contraintes , en unite de contraintes ex 20 MPa")),
+             TAU_F           =SIMP(statut='o',typ='R',fr=tr("Contraintes , en unite de contraintes ex 20 MPa")),
+             GAMMA0          =SIMP(statut='o',typ='R',fr=tr("Vitesse d ecoulement initiale en s**-1")),
+             N               =SIMP(statut='o',typ='R',fr=tr("parametre n, sans unite")),
+             RHO_MOB         =SIMP(statut='o',typ='R',fr=tr("densite de dislocations mobiles, en unite de longueur **-2")),
+             D               =SIMP(statut='o',typ='R',fr=tr("parametre D, en unite de longueur")),
+             D_LAT           =SIMP(statut='o',typ='R',fr=tr("parametre D_LAT, en unite de longueur")),
+             Y_AT            =SIMP(statut='o',typ='R',fr=tr("parametre Y_AT, en unite de longueur")),
+             K_F             =SIMP(statut='o',typ='R',fr=tr("Parametre K_F")),
+             K_SELF          =SIMP(statut='o',typ='R',fr=tr("Parametre K_SELF")),
+             K_BOLTZ         =SIMP(statut='o',typ='R',fr=tr("Constante de Boltzmann, en eV/K")),
+             H1              =SIMP(statut='o',typ='R',fr=tr("Parametre a_self")),
+             H2              =SIMP(statut='o',typ='R',fr=tr("Parametre a_coli")),
+             H3              =SIMP(statut='o',typ='R',fr=tr("Parametre a_ncol")),
              H4              =SIMP(statut='f',typ='R',defaut=0.),
              H5              =SIMP(statut='f',typ='R',defaut=0.),
              H6              =SIMP(statut='f',typ='R',defaut=0.),
-             DELTA1          =SIMP(statut='f',typ='R',defaut=1.,fr="parametre permettant la variation de Y_AT avec tau_eff"),
-             DELTA2          =SIMP(statut='f',typ='R',defaut=1.,fr="parametre permettant la variation de a_AT avec tau_eff"),
-             DEPDT           =SIMP(statut='f',typ='R',defaut=0.,fr="parametre dEps/dT pour le calcul de DeltaG"),
-             A_IRRA          =SIMP(statut='o',typ='R',fr="Parametre a_loops pour irradiation"),
-             XI_IRRA         =SIMP(statut='o',typ='R',fr="Parametre xi pour irradiation"),
+             DEPDT           =SIMP(statut='f',typ='R',defaut=0.,fr=tr("parametre dEps/dT pour le calcul de DeltaG")),
+             A_IRRA          =SIMP(statut='o',typ='R',fr=tr("Parametre a_loops pour irradiation")),
+             XI_IRRA         =SIMP(statut='o',typ='R',fr=tr("Parametre xi pour irradiation")),
+             MU_MOY          =SIMP(statut='f',typ='R'),
            ),
 
 
@@ -20336,13 +22014,14 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 ### UMAT
 ### CRITERE DE RUPTURE
            CRIT_RUPT      =FACT(statut='f',
-             SIGM_C           =SIMP(statut='o',typ='R',fr="contrainte critique"),
-             COEF             =SIMP(statut='o',typ='R',fr="E=E/COEF,si la contrainte principale max est atteinte dans l'element"),
+             SIGM_C           =SIMP(statut='o',typ='R',fr=tr("contrainte critique")),
+             COEF             =SIMP(statut='o',typ='R',fr=tr("E=E/COEF,si la contrainte principale max est atteinte dans l'element")),
            ),
 #
 
            INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)  ;
+           **C_MFRONT_OFFICIAL()
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20363,7 +22042,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
 # person_in_charge: mathieu.corus at edf.fr
 DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene,
                       reentrant='n',
-            fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique"
+            fr=tr("Créer la structure globale à partir des sous-structures en sous-structuration dynamique")
             UIinfo={"groupes":("Matrices et vecteurs",)},
          SOUS_STRUC      =FACT(statut='o',max='**',
            NOM             =SIMP(statut='o',typ='TXM' ),
@@ -20411,7 +22090,7 @@ DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene,
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op=4,sd_prod=nappe_sdaster,
-                fr="Définir une fonction réelle de deux variables réelles",
+                fr=tr("Définir une fonction réelle de deux variables réelles"),
                 reentrant='n',UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('FONCTION','DEFI_FONCTION'),
                  EXCLUS('FONCTION','NOM_PARA_FONC',),
@@ -20424,12 +22103,12 @@ DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op=4,sd_prod=nappe_sdaster,
          DEFI_FONCTION   =FACT(statut='f',max='**',
            VALE            =SIMP(statut='o',typ='R',max='**'),
            INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"),
-                                 fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction."),
+                                 fr=tr("Type d'interpolation pour les abscisses et les ordonnées de la fonction.")),
            PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
            PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
          ),
          INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"),
-                               fr="Type d'interpolation pour le paramètre de la nappe"),
+                               fr=tr("Type d'interpolation pour le paramètre de la nappe")),
          PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
          PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1, 2) ),
@@ -20455,7 +22134,7 @@ DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op=4,sd_prod=nappe_sdaster,
 # ======================================================================
 # person_in_charge: marc.kham at edf.fr
 DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op=  73,sd_prod=table_fonction,
-                   fr="Définition d'un obstacle plan perpendiculaire à une structure filaire",
+                   fr=tr("Définition d'un obstacle plan perpendiculaire à une structure filaire"),
                    reentrant='n',
          UIinfo={"groupes":("Modélisation",)},
          TYPE            =SIMP(statut='o',typ='TXM',defaut="CERCLE",
@@ -20467,7 +22146,7 @@ DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op=  73,sd_prod=table_fonction,
 )  ;
 
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
@@ -20482,81 +22161,24 @@ DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op=  73,sd_prod=table_fonction,
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
-# person_in_charge: aimery.assire at edf.fr
+# person_in_charge: jacques.pellet at edf.fr
 
-DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_partit,
-                    fr="Creation partitionnement en sous-domaines",
-                    docu="U4.23.05",reentrant='n',
-                    UIinfo={"groupes":("Modélisation",)},
-         MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
-         MAILLAGE        =SIMP(statut='f',typ=(maillage_sdaster) ),
-         NOM             =SIMP(statut='f',typ='TXM',defaut='SD'),
-         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4) ),
-         DEFI          =FACT(statut='f',max='**',
-           GROUP_MA        =SIMP(statut='o',typ=grma),
-           GROUP_MA_BORD   =SIMP(statut='f',typ=grma),
-         ),
-         EXCIT           =FACT(statut='f',max='**',
-           CHARGE          =SIMP(statut='f',typ=(char_meca,char_cine_meca)),
-         ),
-);
 
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# person_in_charge: aimery.assire at edf.fr
+DEFI_PARTITION=OPER(nom="DEFI_PARTITION",op=21,sd_prod=sd_partit,
+                    fr=tr("Creation partitionnement en sous-domaines"),
+                    docu="U4.23.05",reentrant='n',UIinfo={"groupes":("Modélisation",)},
 
-DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29,
-                    fr="Creation partitionnement en sous-domaines",
-                    docu="U4.00.00",
-                    UIinfo={"groupes":("Modélisation",)},
-         MAILLAGE        =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
-         MODELE          =SIMP(statut='f',typ=(modele_sdaster)),
-         NB_PART         =SIMP(statut='o',typ='I',),
+         NB_PART         =SIMP(statut='o',typ='I',val_min=2),
+         MODELE          =SIMP(statut='o',typ=modele_sdaster),
 
          # Methode de partitionnement
          METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ),
 
-         LOGICIEL      =SIMP(statut='f',typ='TXM'),
-
-         # Corrige les problemes possibles de non-connexite des sous-domaines
-         CORRECTION_CONNEX    =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
 
-         # Permet de grouper des mailles dans un meme sous-doamine
-         GROUPAGE        =FACT(statut='f',max='**',
-           GROUP_MA       =SIMP(statut='o',typ=grma,),
-                          ),
-         # Permet d'appliquer des poids sur certaines mailles
-         POIDS_MAILLES   =FACT(statut='f',max='**',
-           GROUP_MA       =SIMP(statut='o',typ=grma,),
-           POIDS          =SIMP(statut='f',typ='I'),
-                          ),
          # Prefixe pour le nom des group_ma definissant les sous-domaines
          NOM_GROUP_MA    =SIMP(statut='f',typ='TXM',defaut='SD' ),
 
-         # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
-         TRAITER_BORDS   =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
-
-         # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
-         b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
-           NOM_GROUP_MA_BORD  =SIMP(statut='f',typ='TXM'),
-             ),
-
          INFO            =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
-
 );
 
 # ======================================================================
@@ -20575,52 +22197,68 @@ DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29,
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
-# person_in_charge: aimery.assire at edf.fr
-
-
-DEFI_PARTITION=MACRO(nom="DEFI_PARTITION",
-                     op=OPS('Macro.defi_partition_ops.defi_partition_ops'),
-                     sd_prod=sd_partit,
-                     reentrant='n',UIinfo={"groupes":("Modélisation",)},
-                     fr="Creation partitionnement en sous-domaines",
-         regles=(UN_PARMI('MAILLAGE','MODELE'),PRESENT_PRESENT('MODELE','EXCIT'),),
-
-         NB_PART         =SIMP(statut='o',typ='I',val_min=2),
-         MAILLAGE        =SIMP(statut='f',typ=maillage_sdaster),
-         MODELE          =SIMP(statut='f',typ=modele_sdaster),
-         EXCIT           =FACT(statut='f',max='**',
-           CHARGE          =SIMP(statut='f',typ=(char_meca,char_cine_meca)),),
-
-         # Methode de partitionnement
-         METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ),
-
-         LOGICIEL      =SIMP(statut='f',typ='TXM'),
-
-         # Corrige les problemes possibles de non-connexite des sous-domaines
-         CORRECTION_CONNEX    =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
-
-         # Permet de grouper des mailles dans un meme sous-doamine
-         GROUPAGE        =FACT(statut='f',max='**',
-           GROUP_MA       =SIMP(statut='o',typ=grma,),
-                          ),
-         # Permet d'appliquer des poids sur certaines mailles
-         POIDS_MAILLES   =FACT(statut='f',max='**',
-           GROUP_MA       =SIMP(statut='o',typ=grma,),
-           POIDS          =SIMP(statut='f',typ='I',val_min=2),
-                          ),
-         # Prefixe pour le nom des group_ma definissant les sous-domaines
-         NOM_GROUP_MA    =SIMP(statut='f',typ='TXM',defaut='SD' ),
-
-         # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
-         TRAITER_BORDS   =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
-
-         # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
-         b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
-           NOM_GROUP_MA_BORD  =SIMP(statut='f',typ='TXM'),
-             ),
-
-         INFO            =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
-);
+DEFI_SOL_EQUI = MACRO(nom="DEFI_SOL_EQUI",
+                      op=OPS('Macro.defi_sol_equi_ops.defi_sol_equi_ops'),
+                      sd_prod=table_sdaster,
+                      fr=tr("Définition des données de sol pour Miss"),
+                      reentrant='n',
+                      UIinfo={"groupes":("Modélisation","Outils-métier",)},
+   FONC_SIGNAL   =SIMP(statut='o',typ=(fonction_sdaster), 
+                       fr=tr("Signal impose d'accelero horizontal") ),
+   SURF          =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"),
+   LIEU_SIGNAL   =SIMP(statut='f',typ='TXM',into=("AFFLEURANT","CHAMP_LIBRE",),
+                       defaut="AFFLEURANT",fr=tr("lieu d'imposition du signal") ),
+   MAILLAGE      =SIMP(statut='o', typ=maillage_sdaster),     
+   GROUP_MA_DROITE =SIMP(statut='o',typ=grma,),
+   GROUP_MA_GAUCHE =SIMP(statut='o',typ=grma,),
+   GROUP_MA_SUBSTR =SIMP(statut='o',typ=grma,),
+   GROUP_MA_COL    =SIMP(statut='o',typ=grma,),
+   COEF_VARI_MATE  =SIMP(statut='f',typ='R',defaut=1.0,
+                         fr=tr("facteur de variation des modules") ),
+   COEF_AMPL_ACCE  =SIMP(statut='f',typ='R',defaut=1.0,
+                         fr=tr("facteur sur l'amplitude d'accelero") ),
+   COEF_GAMMA      =SIMP(statut='f',typ='R',defaut=0.65,
+                         fr=tr("facteur Gamma_max par couche") ),
+   NMAX_ITER       =SIMP(statut='f',typ='I',defaut=10,
+                         fr=tr("nombre d'iterations maximum") ),
+   RESI_RELA       =SIMP(statut='f',typ='R',defaut=0.05,
+                         fr=tr("tolerance d'arret des iterations") ),
+   FREQ_COUP     =SIMP(statut='f',typ='R',
+                       fr=tr("frequence de coupure de filtrage du signal")),
+   # Si precise et SURF='NON' nombre de couches enfoncees
+   NIVE_COUCH_ENFO   =SIMP(statut='f', typ='I',),
+   # Unites de sortie
+   UNITE_TABLE_RESU =SIMP(statut='f', typ='I',),
+   UNITE_RESU_TRAN =SIMP(statut='f', typ='I', defaut=40,),
+   UNITE_RESU_SPEC =SIMP(statut='f', typ='I', defaut=55,),
+   regles=(ENSEMBLE('TABLE_MATER_ELAS','TABLE_GEQUI_GMAX','TABLE_AMOR_EQUI') ,),
+   TABLE_MATER_ELAS =SIMP(statut='f', typ=table_sdaster,),
+   TABLE_GEQUI_GMAX =SIMP(statut='f', typ=table_sdaster,),
+   TABLE_AMOR_EQUI =SIMP(statut='f', typ=table_sdaster,),
+   b_ntabl_mater = BLOC(condition="TABLE_MATER_ELAS is None",
+    MATERIAU = FACT(statut='f', max='**',
+            fr=tr("Définition des matériaux"),
+      GAMMA = SIMP(statut='o',typ='R',max='**',fr=tr("Abscisses de distorsion")),
+      G_GMAX= SIMP(statut='o',typ='R',max='**',
+                   fr=tr("Valeurs de reduction de module G")),
+      D     = SIMP(statut='o',typ='R',max='**',
+                   fr=tr("Valeurs de coefficient d'amortissement")),
+    ),
+    COUCHE = FACT(statut='f', max='**',
+                 fr=tr("Définition des couches"),
+      EPAIS     = SIMP(statut='o', typ='R', fr=tr("Epaisseur de la couche")),
+      GROUP_MA  = SIMP(statut='o',typ=grma,),
+      E         = SIMP(statut='o', typ='R', fr=tr("Module d'Young")),
+      NU        = SIMP(statut='o', typ='R', fr=tr("Coefficient de Poisson")),
+      RHO       = SIMP(statut='o', typ='R', fr=tr("Masse volumique")),
+      AMOR_HYST = SIMP(statut='o', typ='R', fr=tr("Coefficient d'amortissement")),
+      NUME_MATE = SIMP(statut='o', typ='I', fr=tr("Numéro du matériau")),
+    ),
+   ),
+   TITRE = SIMP(statut='f', typ='TXM', max='**',
+                fr=tr("Titre de la table produite")),
+   INFO  = SIMP(statut='f', typ='I', defaut=1, into=(1,2)),
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20644,27 +22282,27 @@ DEFI_PARTITION=MACRO(nom="DEFI_PARTITION",
 DEFI_SOL_MISS = MACRO(nom="DEFI_SOL_MISS",
                       op=OPS('Macro.defi_sol_miss_ops.defi_sol_miss_ops'),
                       sd_prod=table_sdaster,
-                      fr="Définition des données de sol pour Miss",
+                      fr=tr("Définition des données de sol pour Miss"),
                       reentrant='n',
                       UIinfo={"groupes":("Modélisation","Outils-métier",)},
    MATERIAU = FACT(statut='o', max='**',
-            fr="Définition des matériaux",
-      E         = SIMP(statut='o', typ='R', fr="Module d'Young"),
-      NU        = SIMP(statut='o', typ='R', fr="Coefficient de Poisson"),
-      RHO       = SIMP(statut='o', typ='R', fr="Masse volumique"),
-      AMOR_HYST = SIMP(statut='o', typ='R', fr="Coefficient d'amortissement"),
+            fr=tr("Définition des matériaux"),
+      E         = SIMP(statut='o', typ='R', fr=tr("Module d'Young")),
+      NU        = SIMP(statut='o', typ='R', fr=tr("Coefficient de Poisson")),
+      RHO       = SIMP(statut='o', typ='R', fr=tr("Masse volumique")),
+      AMOR_HYST = SIMP(statut='o', typ='R', fr=tr("Coefficient d'amortissement")),
    ),
    COUCHE = FACT(statut='o', max='**',
-                 fr="Définition des couches",
+                 fr=tr("Définition des couches"),
       regles=(AU_MOINS_UN('EPAIS','SUBSTRATUM'),),
       SUBSTRATUM= SIMP(statut='f', typ='TXM', into=("OUI","NON"),),
-      EPAIS     = SIMP(statut='f', typ='R', fr="Epaisseur de la couche"),
+      EPAIS     = SIMP(statut='f', typ='R', fr=tr("Epaisseur de la couche")),
       RECEPTEUR = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON"),),
       SOURCE    = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON"),),
-      NUME_MATE = SIMP(statut='o', typ='I', fr="Numéro du matériau"),
+      NUME_MATE = SIMP(statut='o', typ='I', fr=tr("Numéro du matériau")),
    ),
    TITRE = SIMP(statut='f', typ='TXM', max='**',
-                fr="Titre de la table produite"),
+                fr=tr("Titre de la table produite")),
    INFO  = SIMP(statut='f', typ='I', defaut=1, into=(1,2)),
 )
 
@@ -20686,7 +22324,7 @@ DEFI_SOL_MISS = MACRO(nom="DEFI_SOL_MISS",
 # ======================================================================
 # person_in_charge: andre.adobes at edf.fr
 DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster,
-                    fr="Definition d'un spectre d'excitation turbulente",
+                    fr=tr("Definition d'un spectre d'excitation turbulente"),
                     reentrant='n',
             UIinfo={"groupes":("Modelisation","Outils-metier",)},
          regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3',
@@ -20797,7 +22435,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster,
 # ======================================================================
 # person_in_charge: mathieu.corus at edf.fr
 DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette,
-                    fr="Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique",
+                    fr=tr("Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique"),
                     reentrant='n',
             UIinfo={"groupes":("Maillage","Dynamique",)},
          regles=(UN_PARMI('CYCLIQUE','MODELE_GENE','MAILLAGE'),
@@ -20875,8 +22513,8 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette,
 # person_in_charge: renaud.bargellini at edf.fr
 DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n',
             UIinfo={"groupes":("Modélisation","Thermique",)},
-              fr="Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier"
-                +" pour les calculs métallurgiques.",
+              fr=tr("Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier"
+                " pour les calculs métallurgiques."),
          HIST_EXP        =FACT(statut='o',max='**',
            VALE            =SIMP(statut='o',typ='R',max='**'),
          ),
@@ -20920,7 +22558,7 @@ def depl_interne_prod(DEPL_GLOBAL,**args ):
 
 DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
-                  fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique",
+                  fr=tr("Calculer le champ de déplacement à l'intérieur d'une sous-structure statique"),
          DEPL_GLOBAL     =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,mode_meca_c,evol_elas,dyna_trans,dyna_harmo),),
          SUPER_MAILLE    =SIMP(statut='o',typ=ma,),
          NOM_CAS         =SIMP(statut='f',typ='TXM',defaut=" "),
@@ -20946,7 +22584,7 @@ DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='
 DETRUIRE=MACRO(nom="DETRUIRE",
                op=OPS("Cata.ops.DETRUIRE"),
                UIinfo={"groupes":("Gestion du travail",)},
-               fr="Détruit des concepts utilisateurs dans la base GLOBALE ou des objets JEVEUX",
+               fr=tr("Détruit des concepts utilisateurs dans la base GLOBALE ou des objets JEVEUX"),
                op_init=ops.build_detruire,
     regles=(UN_PARMI('CONCEPT', 'OBJET',),),
 
@@ -20979,7 +22617,7 @@ DETRUIRE=MACRO(nom="DETRUIRE",
 # ======================================================================
 # person_in_charge: irmela.zentner at edf.fr
 DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=interspectre,
-                     fr="Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP",
+                     fr=tr("Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP"),
                      reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          BASE_MODALE     =FACT(statut='o',
@@ -21091,8 +22729,8 @@ def dyna_iss_vari_prod(self, FONC_SIGNAL,**args):
 DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",
                     op=OPS('Macro.dyna_iss_vari_ops.dyna_iss_vari_ops'),
                     sd_prod=dyna_iss_vari_prod,
-                    fr="Calcul du spectre de réponse ou de la reponse temporelle " \
-                       "sismique incoherente par decomposition spectrale",
+                    fr=tr("Calcul du spectre de réponse ou de la reponse temporelle "
+                         "sismique incoherente par decomposition spectrale"),
                     reentrant='n',
                     UIinfo={"groupes":("Outils métier",)},
          regles=(UN_PARMI('FONC_SIGNAL','NB_FREQ'),),
@@ -21167,7 +22805,7 @@ def dyna_line_harm_prod(MATR_RIGI,**args):
    raise AsException("type de concept resultat non prevu")
 
 DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
-                    fr="Calcul de la réponse dynamique complexe d'un système à une excitation harmonique",
+                    fr=tr("Calcul de la réponse dynamique complexe d'un système à une excitation harmonique"),
                     reentrant='f',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          regles=(PRESENT_ABSENT('MATR_AMOR','AMOR_MODAL'),
@@ -21188,7 +22826,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
          LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
          TOUT_CHAM       =SIMP(statut='f',typ='TXM',into=("OUI",)),
          NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ),
-         b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : RESULTAT obligatoire",
+         b_reuse =BLOC(condition = "reuse",fr=tr("en mode concept reentrant : RESULTAT obligatoire"),
              RESULTAT      =SIMP(statut='o',typ=(dyna_harmo,harm_gene)),
          ),
          EXCIT           =FACT(statut='o',max='**',
@@ -21218,12 +22856,12 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
 #-------------------------------------------------------------------
 #        Catalogue commun SOLVEUR
          b_matr_gene =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_gene_r,)",
-                           fr="Methode de resolution matrice generalisee",
+                           fr=tr("Methode de resolution matrice generalisee"),
           SOLVEUR         =C_SOLVEUR('DYNA_LINE_HARM','GENE'),
          ),
 
          b_matr_phys =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_depl_r,matr_asse_pres_c,)",
-                           fr="Methode de resolution matrice sur ddl physique",
+                           fr=tr("Methode de resolution matrice sur ddl physique"),
           SOLVEUR         =C_SOLVEUR('DYNA_LINE_HARM','PHYS'),
          ),
 #-------------------------------------------------------------------
@@ -21249,7 +22887,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
 # ======================================================================
 # person_in_charge: emmanuel.boyere at edf.fr
 DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
-                    fr="Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque",
+                    fr=tr("Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque"),
                     reentrant='f',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          MODELE          =SIMP(statut='f',typ=modele_sdaster ),
@@ -21390,7 +23028,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
 # person_in_charge: nicolas.greffet at edf.fr
 #
 DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
-            fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire",
+            fr=tr("Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire"),
             UIinfo={"groupes":("Résolution","Dynamique",)},
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
@@ -21447,61 +23085,14 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            ACCE_INIT_GENE  =SIMP(statut='f',typ=vect_asse_gene),
          ),
 #-------------------------------------------------------------------
-         COMPORTEMENT       =C_COMPORTEMENT('DYNA_NON_LINE'),
+         COMPORTEMENT      =C_COMPORTEMENT('DYNA_NON_LINE'),
 #-------------------------------------------------------------------
-         b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
-         ETAT_INIT       =FACT(statut='o',
-           regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',),
-                 #  EXCLUS('EVOL_NOLI','DEPL',),
-                 #  EXCLUS('EVOL_NOLI','VITE'),
-                 #  EXCLUS('EVOL_NOLI','ACCE'),
-                 #  EXCLUS('EVOL_NOLI','SIGM',),
-                 #  EXCLUS('EVOL_NOLI','VARI',),
-                   EXCLUS('NUME_ORDRE','INST'), ),
-           DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-           VITE            =SIMP(statut='f',typ=cham_no_sdaster),
-           ACCE            =SIMP(statut='f',typ=cham_no_sdaster),
-           SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-           VARI            =SIMP(statut='f',typ=cham_elem),
-           STRX            =SIMP(statut='f',typ=cham_elem),
-           EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-           NUME_ORDRE      =SIMP(statut='f',typ='I'),
-           INST            =SIMP(statut='f',typ='R'),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-               PRECISION       =SIMP(statut='o',typ='R',),),
-           NUME_DIDI       =SIMP(statut='f',typ='I'),
-           INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
-         b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
-         ETAT_INIT       =FACT(statut='f',
-           regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',),
-                 #  EXCLUS('EVOL_NOLI','DEPL',),
-                 #  EXCLUS('EVOL_NOLI','VITE'),
-                 #  EXCLUS('EVOL_NOLI','ACCE'),
-                 #  EXCLUS('EVOL_NOLI','SIGM',),
-                 #  EXCLUS('EVOL_NOLI','VARI',),
-                   EXCLUS('NUME_ORDRE','INST'), ),
-           DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-           VITE            =SIMP(statut='f',typ=cham_no_sdaster),
-           ACCE            =SIMP(statut='f',typ=cham_no_sdaster),
-           SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-           VARI            =SIMP(statut='f',typ=cham_elem),
-           EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-           NUME_ORDRE      =SIMP(statut='f',typ='I'),
-           INST            =SIMP(statut='f',typ='R'),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-               PRECISION       =SIMP(statut='o',typ='R',),),
-           NUME_DIDI       =SIMP(statut='f',typ='I'),
-           INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
+         b_reuse =BLOC(condition = "reuse",fr=tr("en mode concept reentrant : ETAT_INIT obligatoire"),
+            ETAT_INIT         =C_ETAT_INIT('DYNA_NON_LINE','o'),),
+         b_notreuse =BLOC(condition = "not reuse",fr=tr("en mode concept reentrant : ETAT_INIT facultatif"),
+            ETAT_INIT         =C_ETAT_INIT('DYNA_NON_LINE','f'),),
 #-------------------------------------------------------------------
-         INCREMENT       =C_INCREMENT('MECANIQUE'),
+         INCREMENT         =C_INCREMENT('MECANIQUE'),
 #-------------------------------------------------------------------
          SCHEMA_TEMPS     =FACT(statut='o',
             SCHEMA          =SIMP(statut='o',min=1,max=1,typ='TXM',
@@ -21541,7 +23132,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
 #-------------------------------------------------------------------
          SOLVEUR         =C_SOLVEUR('DYNA_NON_LINE'),
 #-------------------------------------------------------------------
-         OBSERVATION     =C_OBSERVATION(),
+         OBSERVATION     =C_OBSERVATION('MECANIQUE'),
 #-------------------------------------------------------------------
          ENERGIE         =FACT(statut='f',max=1,
            CALCUL          =SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),
@@ -21560,7 +23151,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            MODI_RIGI     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
            bloc_char_crit=BLOC(condition="(RIGI_GEOM=='OUI')",
               CHAR_CRIT       =SIMP(statut='f',typ='R',min=2,max=2,
-                               fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),),
+                               fr=tr("Valeur des deux charges critiques délimitant la bande de recherche en HPP")),),
            TYPE          =SIMP(statut='f',typ='TXM',defaut="FLAMBEMENT",into=("FLAMBEMENT","STABILITE")),
            PREC_INSTAB   =SIMP(statut='f',typ='R',defaut=1.E-6,max=1,),
            SIGNE         =SIMP(statut='f',typ='TXM',defaut=("POSITIF_NEGATIF"),into=("NEGATIF","POSITIF","POSITIF_NEGATIF"),max=1,),
@@ -21600,10 +23191,10 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
          MODE_VIBR     =FACT(statut='f',min=1,max=1,
            MATR_RIGI        =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ),
            NB_FREQ          =SIMP(statut='f',typ='I',max=1,val_min=1,defaut=3,
-                            fr="Nombre de fréquences propres à calculer"),
+                            fr=tr("Nombre de fréquences propres à calculer")),
            COEF_DIM_ESPACE  =SIMP(statut='f',typ='I',max=1,val_min=2,defaut=5),
            BANDE            =SIMP(statut='f',typ='R',min=2,max=2,
-                            fr="Valeur des deux fréquences délimitant la bande de recherche",),
+                            fr=tr("Valeur des deux fréquences délimitant la bande de recherche"),),
            regles         = (EXCLUS('PAS_CALC','LIST_INST','INST'),),
            LIST_INST      = SIMP(statut='f',typ=(listr8_sdaster) ),
            INST           = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
@@ -21617,7 +23208,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
 #-------------------------------------------------------------------
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
          b_info=BLOC(condition="(INFO==2)",
-               fr="filtre les messages émis dans le .mess selon le type de message demandé",
+               fr=tr("filtre les messages émis dans le .mess selon le type de message demandé"),
                INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
                                into=("CONTACT",
                                      "MECA_NON_LINE",
@@ -21647,7 +23238,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
 # ======================================================================
 # person_in_charge: andre.adobes at edf.fr
 DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=interspectre,
-                     fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire",
+                     fr=tr("Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire"),
                      reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          BASE_ELAS_FLUI  =SIMP(statut='o',typ=melasflu_sdaster ),
@@ -21678,8 +23269,8 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=interspectre,
 # ======================================================================
 # person_in_charge: emmanuel.boyere at edf.fr
 DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
-                     fr="Calcul de la reponse dynamique transitoire d'un systeme amorti ou non en coordonees generalisees"
-                        +" par superposition modale ou par sous structuration",
+                     fr=tr("Calcul de la reponse dynamique transitoire d'un systeme amorti ou non en coordonees generalisees"
+                        " par superposition modale ou par sous structuration"),
                      reentrant='f',
             UIinfo={"groupes":("Resolution","Dynamique",)},
       regles=(EXCLUS('AMOR_MODAL','MATR_AMOR'),
@@ -21721,9 +23312,9 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
                COUPLAGE_EDYOS     =FACT(statut='f',max=1,
                                    PAS_TPS_EDYOS      = SIMP(statut='o',typ='R' ),
          ),
-               
+
            ),
-               
+
          AMOR_MODAL      =FACT(statut='f', max=1,
                     regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),),
                 AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
@@ -21913,6 +23504,26 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
            PUIS_ALPHA      =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
            DX_MAX          =SIMP(statut='f',typ='R',defaut= 1. ),
          ),
+         DIS_VISC =FACT(statut='f',max='**',
+            fr=tr("Loi pour un discret de type visqueux : Zener Généralisé."),
+            regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),UN_PARMI('NOEUD_2','GROUP_NO_2'),
+                    UN_PARMI('K1','UNSUR_K1'), UN_PARMI('K2','UNSUR_K2'), UN_PARMI('K3','UNSUR_K3'),),
+            NOEUD_1     =SIMP(statut='f',typ=no),
+            NOEUD_2     =SIMP(statut='f',typ=no),
+            GROUP_NO_1  =SIMP(statut='f',typ=grno),
+            GROUP_NO_2  =SIMP(statut='f',typ=grno),
+            K1          =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Raideur en série avec les 2 autres branches.")),
+            K2          =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Raideur en parallèle de la branche visqueuse.")),
+            K3          =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Raideur dans la branche visqueuse.")),
+            UNSUR_K1    =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Souplesse en série avec les 2 autres branches.")),
+            UNSUR_K2    =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Souplesse en parallèle de la branche visqueuse.")),
+            UNSUR_K3    =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Souplesse dans la branche visqueuse.")),
+            C           =SIMP(statut='o',typ='R',val_min = 1.0E-08, fr=tr("'Raideur' de la partie visqueuse.")),
+            PUIS_ALPHA  =SIMP(statut='o',typ='R',val_min = 1.0E-08, fr=tr("Puissance de la loi visqueuse ]0.0, 1.0]."),
+                              val_max=1.0, defaut=0.5, ),
+            ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 20 ),
+            RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+         ),
          RELA_EFFO_DEPL  =FACT(statut='f',max='**',
            NOEUD           =SIMP(statut='o',typ=no),
            SOUS_STRUC      =SIMP(statut='f',typ='TXM' ),
@@ -21927,11 +23538,13 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          IMPRESSION      =FACT(statut='f',
-           regles=(EXCLUS('TOUT','NIVEAU'),),
-           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           NIVEAU          =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
-           INST_INIT       =SIMP(statut='f',typ='R' ),
-           INST_FIN        =SIMP(statut='f',typ='R' ),
+           regles=(EXCLUS('TOUT','NIVEAU','UNITE_DIS_VISC'),
+                   PRESENT_ABSENT('UNITE_DIS_VISC','INST_FIN','INST_INIT',),),
+           TOUT           =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+           NIVEAU         =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
+           INST_INIT      =SIMP(statut='f',typ='R' ),
+           INST_FIN       =SIMP(statut='f',typ='R' ),
+           UNITE_DIS_VISC =SIMP(statut='f',typ='I', fr=tr("Unité de sortie des variables internes pour les DIS_VISC")),
          ),
 
 
@@ -21979,7 +23592,7 @@ DYNA_VIBRA=MACRO(nom="DYNA_VIBRA",
 #                 op=dyna_vibra_ops,
                  sd_prod=dyna_vibra_prod,
                  reentrant='f',
-                 fr="Calcul dynamique",
+                 fr=tr("Calcul dynamique"),
                  UIinfo={"groupes":("Resolution","Dynamique",)},
         BASE_CALCUL     =SIMP(statut='o',typ='TXM',position='global',into=("PHYS","GENE") ),
         TYPE_CALCUL     =SIMP(statut='o',typ='TXM',position='global',into=("HARM","TRAN") ),
@@ -22010,7 +23623,7 @@ DYNA_VIBRA=MACRO(nom="DYNA_VIBRA",
                VITE_ROTA          = SIMP(statut='o',typ='R',defaut=0.E0),
             ),
         ),
-        b_reuse_harm =BLOC(condition = "reuse and TYPE_CALCUL == 'HARM'",fr="en mode concept reentrant : RESULTAT obligatoire",
+        b_reuse_harm =BLOC(condition = "reuse and TYPE_CALCUL == 'HARM'",fr=tr("en mode concept reentrant : RESULTAT obligatoire"),
              RESULTAT      =SIMP(statut='o',typ=(dyna_harmo,harm_gene)),
             ),
         b_matr_harm     =BLOC(condition="TYPE_CALCUL == 'HARM'",
@@ -22350,6 +23963,26 @@ regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),),
            PUIS_ALPHA      =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
            DX_MAX          =SIMP(statut='f',typ='R',defaut= 1. ),
          ),
+         DIS_VISC =FACT(statut='f',max='**',
+            fr=tr("Loi pour un discret de type visqueux : Zener Généralisé."),
+            regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),UN_PARMI('NOEUD_2','GROUP_NO_2'),
+                    UN_PARMI('K1','UNSUR_K1'), UN_PARMI('K2','UNSUR_K2'), UN_PARMI('K3','UNSUR_K3'),),
+            NOEUD_1     =SIMP(statut='f',typ=no),
+            NOEUD_2     =SIMP(statut='f',typ=no),
+            GROUP_NO_1  =SIMP(statut='f',typ=grno),
+            GROUP_NO_2  =SIMP(statut='f',typ=grno),
+            K1          =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Raideur en série avec les 2 autres branches.")),
+            K2          =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Raideur en parallèle de la branche visqueuse.")),
+            K3          =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Raideur dans la branche visqueuse.")),
+            UNSUR_K1    =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Souplesse en série avec les 2 autres branches.")),
+            UNSUR_K2    =SIMP(statut='f',typ='R',val_min = 1.0E-08, fr=tr("Souplesse en parallèle de la branche visqueuse.")),
+            UNSUR_K3    =SIMP(statut='f',typ='R',val_min = 0.0,     fr=tr("Souplesse dans la branche visqueuse.")),
+            C           =SIMP(statut='o',typ='R',val_min = 1.0E-08, fr=tr("'Raideur' de la partie visqueuse.")),
+            PUIS_ALPHA  =SIMP(statut='o',typ='R',val_min = 1.0E-08, fr=tr("Puissance de la loi visqueuse ]0.0, 1.0]."),
+                              val_max=1.0, defaut=0.5, ),
+            ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 20 ),
+            RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+         ),
 #non-linearite effort-deplacement
         RELA_EFFO_DEPL  =FACT(statut='f',max='**',
            NOEUD           =SIMP(statut='o',typ=no),
@@ -22368,11 +24001,11 @@ regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),),
 #-------------------------------------------------------------------
 #        Catalogue commun SOLVEUR
          b_solv_harm_gene =BLOC(condition = "BASE_CALCUL=='GENE' and TYPE_CALCUL=='HARM'",
-                           fr="Methode de resolution matrice generalisee",
+                           fr=tr("Methode de resolution matrice generalisee"),
         SOLVEUR         =C_SOLVEUR('DYNA_LINE_HARM','GENE'),
          ),
          b_solv_harm_phys =BLOC(condition = "BASE_CALCUL=='PHYS' and TYPE_CALCUL=='HARM'",
-                           fr="Methode de resolution matrice sur ddl physique",
+                           fr=tr("Methode de resolution matrice sur ddl physique"),
         SOLVEUR         =C_SOLVEUR('DYNA_LINE_HARM','PHYS'),
          ),
          b_solv_line_tran      =BLOC(condition = "BASE_CALCUL=='PHYS' and TYPE_CALCUL=='TRAN'",
@@ -22385,15 +24018,17 @@ regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),),
         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
         INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
         b_impression = BLOC(condition = "BASE_CALCUL=='GENE' and TYPE_CALCUL=='TRAN'",
-        IMPRESSION      =FACT(statut='f',
-           regles=(EXCLUS('TOUT','NIVEAU'),),
-           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           NIVEAU          =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
-           INST_INIT       =SIMP(statut='f',typ='R' ),
-           INST_FIN        =SIMP(statut='f',typ='R' ),
-         ),
-         ),
-        );
+            IMPRESSION      =FACT(statut='f',
+                regles=(EXCLUS('TOUT','NIVEAU','UNITE_DIS_VISC'),
+                        PRESENT_ABSENT('UNITE_DIS_VISC','INST_FIN','INST_INIT',),),
+                TOUT           =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                NIVEAU         =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
+                INST_INIT      =SIMP(statut='f',typ='R' ),
+                INST_FIN       =SIMP(statut='f',typ='R' ),
+                UNITE_DIS_VISC =SIMP(statut='f',typ='I', fr=tr("Unité de sortie des variables internes pour les DIS_VISC")),
+            ),
+        ),
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22418,7 +24053,7 @@ def elim_lagr_prod(MATR_RIGI,**args):
   raise AsException("type de concept resultat non prevu")
 
 ELIM_LAGR=OPER(nom="ELIM_LAGR",op=69,sd_prod=elim_lagr_prod,
-               fr="Créer une matrice en ayant éliminé les condition cinématiques dualisées.",
+               fr=tr("Créer une matrice en ayant éliminé les condition cinématiques dualisées."),
                reentrant='f', UIinfo={"groupes":("Résolution",)},
 
          # Matrice de "rigidité" (celle qui contient les équations dualisées) :
@@ -22450,7 +24085,7 @@ ELIM_LAGR=OPER(nom="ELIM_LAGR",op=69,sd_prod=elim_lagr_prod,
 # person_in_charge: jacques.pellet at edf.fr
 ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,
                    UIinfo={"groupes":("Impression","Utilitaires",)},
-                   fr="Engendre des tests pour la non régression du code (pour développeurs)",
+                   fr=tr("Engendre des tests pour la non régression du code (pour développeurs)"),
          UNITE           =SIMP(statut='f',typ='I',defaut=8),
          FORMAT          =SIMP(statut='f',typ='TXM',into=("OBJET",) ),
          FORMAT_R        =SIMP(statut='f',typ='TXM',defaut="1PE20.13"),
@@ -22493,7 +24128,7 @@ ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,
 ENV_CINE_YACS=PROC(nom             = "ENV_CINE_YACS",
                    op              = 111,
                    UIinfo          = {"groupes":("Résultats et champs",)},
-                   fr              = "Envoi des champs de deplacement et vitesse via YACS pour Couplage de Code_Aster et Saturne",
+                   fr              = tr("Envoi des champs de deplacement et vitesse via YACS pour Couplage de Code_Aster et Saturne"),
                    regles          = (EXCLUS('ETAT_INIT','RESULTAT',),),
                    MATR_PROJECTION = SIMP(statut='o', typ=corresp_2_mailla,),
                    VIS_A_VIS = FACT(statut='o', max='**',
@@ -22539,7 +24174,7 @@ def exec_logiciel_prod(self, MAILLAGE, **args):
 EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL",
                       op=OPS('Macro.exec_logiciel_ops.exec_logiciel_ops'),
                       sd_prod=exec_logiciel_prod,
-                      fr="Exécute un logiciel ou une commande système depuis Aster",
+                      fr=tr("Exécute un logiciel ou une commande système depuis Aster"),
                       UIinfo={"groupes":("Gestion du travail","Outils-métier",)},
 
       regles = ( AU_MOINS_UN('LOGICIEL', 'MAILLAGE', 'SALOME'),
@@ -22547,26 +24182,26 @@ EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL",
                  EXCLUS('MAILLAGE','SALOME'),
                  ),
 
-      LOGICIEL = SIMP(statut='f', typ='TXM'),
+      LOGICIEL = SIMP(statut='f', typ=('Fichier','','Sauvegarde')),
       ARGUMENT = SIMP(statut='f', max='**', typ='TXM'),
 
 
       MACHINE_DISTANTE = FACT(statut='f',
         SSH_ADRESSE  = SIMP(statut='o', typ='TXM', val_min=1, val_max=255,
-                           fr="Adresse IP ou nom de la machine sur laquelle le logiciel/script sera exécuté via SSH"),
+                           fr=tr("Adresse IP ou nom de la machine sur laquelle le logiciel/script sera exécuté via SSH")),
         SSH_LOGIN    = SIMP(statut='f', typ='TXM', val_min=1, val_max=255,
-                           fr="Nom d'utilisateur sur la machine distante"),
+                           fr=tr("Nom d'utilisateur sur la machine distante")),
         SSH_PORT     = SIMP(statut='f', typ='I', val_min=1, val_max=65535, defaut=22,
-                           fr="Port SSH de la machien distante"),
+                           fr=tr("Port SSH de la machien distante")),
       ),
 
 
       MAILLAGE = FACT(statut='f',
          FORMAT     = SIMP(statut='o', typ='TXM', into=("GMSH", "GIBI", "SALOME")),
          UNITE_GEOM = SIMP(statut='f', typ='I', val_min=10, val_max=90, defaut=16,
-                           fr="Unité logique définissant le fichier (fort.N) contenant les données géométriques (datg)"),
+                           fr=tr("Unité logique définissant le fichier (fort.N) contenant les données géométriques (datg)")),
          UNITE      = SIMP(statut='f', typ='I', val_min=10, val_max=90, defaut=19,
-                           fr="Unité logique définissant le fichier (fort.N) produit par le mailleur"),
+                           fr=tr("Unité logique définissant le fichier (fort.N) produit par le mailleur")),
          MAILLAGE   = SIMP(statut='o', typ=CO),
       ),
 
@@ -22574,28 +24209,28 @@ EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL",
       SALOME = FACT(statut='f',
            regles=(UN_PARMI('CHEMIN_SCRIPT', 'UNITE_SCRIPT'),
                    PRESENT_PRESENT('NOM_PARA','VALE'),),
-         CHEMIN_SCRIPT     = SIMP(statut='f', typ='TXM',
-                               fr="Chemin du script Salome"),
+         CHEMIN_SCRIPT     = SIMP(statut='f', typ=('Fichier','','Sauvegarde'),
+                               fr=tr("Chemin du script Salome")),
          UNITE_SCRIPT      = SIMP(statut='f', typ='I', val_min=80, val_max=99,
-                               fr="Unité logique du script Salome"),
+                               fr=tr("Unité logique du script Salome")),
          SALOME_HOST       = SIMP(statut='f', typ='TXM', defaut='localhost',
-                               fr="Machine sur laquelle tourne Salome"),
+                               fr=tr("Machine sur laquelle tourne Salome")),
          SALOME_PORT       = SIMP(statut='f', typ='I', val_min=2800, val_max=2900, defaut=2810,
-                               fr="Port de l'instance Salome (2810 ou supérieur)"),
+                               fr=tr("Port de l'instance Salome (2810 ou supérieur)")),
          SALOME_RUNAPPLI   = SIMP(statut='f', typ='TXM',
-                               fr="Chemin vers le script de lancement runAppli de Salome"),
+                               fr=tr("Chemin vers le script de lancement runAppli de Salome")),
          FICHIERS_ENTREE   = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**',
-                               fr="Liste des fichiers d'entrée du script Salome"),
+                               fr=tr("Liste des fichiers d'entrée du script Salome")),
          FICHIERS_SORTIE   = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**',
-                               fr="Liste des fichiers générés par le script Salome"),
+                               fr=tr("Liste des fichiers générés par le script Salome")),
          NOM_PARA          = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
-                               fr="Liste des noms des paramètres à modifier dans le script Salome"),
+                               fr=tr("Liste des noms des paramètres à modifier dans le script Salome")),
          VALE              = SIMP(statut='f',typ='TXM',max='**',
-                               fr="Valeur des paramètres à) modifier dans le script Salome"),
+                               fr=tr("Valeur des paramètres à) modifier dans le script Salome")),
       ),
 
       CODE_RETOUR_MAXI = SIMP(statut='f', typ='I', defaut=0, val_min=-1,
-                              fr="Valeur maximale du code retour toléré (-1 pour l'ignorer)"),
+                              fr=tr("Valeur maximale du code retour toléré (-1 pour l'ignorer)")),
 
       INFO     = SIMP(statut='f', typ='I', defaut=2, into=(1,2),),
 )
@@ -22626,7 +24261,7 @@ def extr_mode_prod(FILTRE_MODE,**args):
   raise AsException("type de concept resultat non prevu")
 
 EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod,
-               reentrant='n',fr="Extraire séléctivement des modes des structures de données modales",
+               reentrant='n',fr=tr("Extraire séléctivement des modes des structures de données modales"),
             UIinfo={"groupes":("Résolution","Dynamique",)},
          FILTRE_MODE     =FACT(statut='o',max='**',
            regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),),
@@ -22691,7 +24326,7 @@ def extr_resu_prod(RESULTAT,**args):
 
 EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
             UIinfo={"groupes":("Résultats et champs",)},
-            fr="Extraire des champs au sein d'une SD Résultat",
+            fr=tr("Extraire des champs au sein d'une SD Résultat"),
          RESULTAT        =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
                                                mode_acou,evol_ther,evol_noli,evol_varc,
                                                mult_elas,fourier_elas,fourier_ther ) ),
@@ -22723,10 +24358,14 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
                                ),
 
          RESTREINT   =FACT(statut='f', max=1,
-            fr="Pour réduire une ou plusieurs sd_resultat sur un maillage ou un modèle réduit",
+            fr=tr("Pour réduire une ou plusieurs sd_resultat sur un maillage ou un modèle réduit"),
             regles=(UN_PARMI('MAILLAGE','MODELE'),),
             MAILLAGE        =SIMP(statut='f',typ=maillage_sdaster),
             MODELE          =SIMP(statut='f',typ=modele_sdaster),
+            CHAM_MATER      =SIMP(statut='f',typ=cham_mater,
+               fr=tr("le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)"),),
+            CARA_ELEM       =SIMP(statut='f',typ=cara_elem,
+               fr=tr("le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ..."),),
             ),
 
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
@@ -22762,7 +24401,7 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",
                 sd_prod=extr_table_prod,
                 reentrant='n',
                 UIinfo={"groupes":("Résultats et champs","Tables")},
-                fr="Extraire d'une table des concepts Code_Aster",
+                fr=tr("Extraire d'une table des concepts Code_Aster"),
          TYPE_RESU       =SIMP(statut='o',typ='TXM',
                                into=('MATR_ASSE_GENE_R', 'MATR_ELEM_DEPL_R',
                                      'VECT_ELEM_DEPL_R',
@@ -22823,8 +24462,8 @@ def factoriser_prod(MATR_ASSE,**args):
   raise AsException("type de concept resultat non prevu")
 
 FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod,
-               fr="Factoriser une matrice assemblée en un produit de deux matrices triangulaires"+
-                  "ou construire une matrice de préconditionnement pour une résolution par gradient conjugué",
+               fr=tr("Factoriser une matrice assemblée en un produit de deux matrices triangulaires"
+                  "ou construire une matrice de préconditionnement pour une résolution par gradient conjugué"),
                reentrant='f', UIinfo={"groupes":("Résolution",)},
          regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'),
                  EXCLUS('BLOC_FIN','DDL_FIN'),),
@@ -22854,11 +24493,11 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod,
            NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
            REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
          ),
-         b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+         b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr=tr("Paramètres de la factorisation simple précision"),
            REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=30, ),
          ),
          b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'",
-                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+                                                                         fr=tr("Paramètres des préconditionneurs JACOBI et SOR"),
            RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
          ),
 
@@ -22870,35 +24509,69 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod,
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # person_in_charge: j-pierre.lefebvre at edf.fr
-FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude, fin du travail engagé par une des commandes DEBUT ou POURSUITE",
-            UIinfo={"groupes":("Gestion du travail",)},
-#
-# FIN est appelé prématurément en cas d'exception ("SIGUSR1", ArretCPUError,
-# NonConvergenceError..., erreurs <S> ou erreurs <F> récupérées).
-# En cas d'ArretCPUError, on limite au maximum le travail à faire dans FIN.
-# Pour cela, on force certains mots-clés dans Execution/E_JDC.py.
-# 
-         FORMAT_HDF      =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
-                               typ='TXM',defaut="NON",into=("OUI","NON",) ), 
-         RETASSAGE       =SIMP(fr="provoque le retassage de la base GLOBALE",
-                               statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
-         INFO_RESU       =SIMP(fr="provoque l'impression des informations sur les structures de données",
-                               statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
-         UNITE           =SIMP(statut='f',typ='I',defaut=6),  
-)  ;
+
+
+class FIN_ETAPE(PROC_ETAPE):
+
+    """Particularisation pour FIN"""
+
+    def Build_sd(self):
+        """Fonction Build_sd pour FIN"""
+        PROC_ETAPE.Build_sd(self)
+        if self.nom == 'FIN':
+            try:
+                from Noyau.N_Exception import InterruptParsingError
+                raise InterruptParsingError
+            except ImportError:
+                # eficas does not known this exception
+                pass
+        return None
+
+
+class FIN_PROC(PROC):
+
+    """Procédure FIN"""
+    class_instance = FIN_ETAPE
+
+FIN = FIN_PROC(nom="FIN",
+               op=9999,
+               repetable='n',
+               fr=tr("Fin d'une étude, fin du travail engagé par une des commandes DEBUT ou POURSUITE"),
+               UIinfo={"groupes": ("Gestion du travail",)},
+
+        # FIN est appelé prématurément en cas d'exception ("SIGUSR1", ArretCPUError,
+        # NonConvergenceError..., erreurs <S> ou erreurs <F> récupérées).
+        # En cas d'ArretCPUError, on limite au maximum le travail à faire dans FIN.
+        # Pour cela, on force certains mots-clés dans Execution/E_JDC.py.
+        FORMAT_HDF=SIMP(
+            fr=tr("sauvegarde de la base GLOBALE au format HDF"),
+            statut='f', typ='TXM', defaut="NON", into=("OUI", "NON",)),
+        RETASSAGE=SIMP(
+            fr=tr("provoque le retassage de la base GLOBALE"),
+            statut='f', typ='TXM', defaut="NON", into=("OUI", "NON",)),
+        INFO_RESU=SIMP(
+            fr=tr("provoque l'impression des informations sur les structures de données"),
+            statut='f', typ='TXM', defaut="OUI", into=("OUI", "NON",)),
+        UNITE=SIMP(
+            statut='f', typ='I', defaut=6),
+        # hidden keyword used to ensure that the fortran knows that an error occurred
+        # because when an exception is raised, the global status is reset by utmess.
+        STATUT=SIMP(
+            statut='c', typ='I', defaut=0),
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22918,7 +24591,7 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude, fin du travail en
 # ======================================================================
 # person_in_charge: andre.adobes at edf.fr
 FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster,
-                    reentrant='n',fr="Crée une fonction constante paramétrée par l'abscisse curviligne",
+                    reentrant='n',fr=tr("Crée une fonction constante paramétrée par l'abscisse curviligne"),
             UIinfo={"groupes":("Fonctions",)},
          TYPE_FLUI_STRU  =SIMP(statut='o',typ=(type_flui_stru) ),
 )  ;
@@ -22951,7 +24624,7 @@ FORMULE=FORM(nom="FORMULE",
              op=-5,
              sd_prod=formule_prod,
              UIinfo={"groupes":("Fonctions",)},
-             fr="Définit une formule réelle ou complexe à partir de son expression mathématique",
+             fr=tr("Définit une formule réelle ou complexe à partir de son expression mathématique"),
     regles = (UN_PARMI('VALE', 'VALE_C',),),
     VALE     = SIMP(statut='f', typ='TXM'),
     VALE_C   = SIMP(statut='f', typ='TXM'),
@@ -22978,75 +24651,85 @@ FORMULE=FORM(nom="FORMULE",
 GENE_ACCE_SEISME=MACRO(nom="GENE_ACCE_SEISME",
                      op=OPS('Macro.gene_acce_seisme_ops.gene_acce_seisme_ops'),
                      sd_prod=table_fonction,
-                     fr="Generation d'accelerogrammes sismiques ",
+                     fr=tr("Generation d'accelerogrammes sismiques "),
                      reentrant='n',
                      UIinfo={"groupes":("Fonctions","Dynamique",)},
 
+         regles=(UN_PARMI('DSP','SPEC_MEDIANE','SPEC_UNIQUE','SPEC_FRACTILE'),),  
+
          INIT_ALEA       =SIMP(statut='f',typ='I'),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          PAS_INST        =SIMP(statut='o',typ='R' ),
-         NB_POIN           =SIMP(statut='f',typ='I',fr="nombre de points" ),
-         PESANTEUR         =SIMP(statut='o', typ='R', fr="constante de normalisation de ACCE_MAX, ECART_TYPE et INTE_ARIAS (g) ou le spectre" ),
-         DUREE_PHASE_FORTE =SIMP(statut='o',typ='R',fr="durée phase forte du signal" ),
-         NB_TIRAGE        =SIMP(statut='f',typ='I',defaut= 1,fr="nombre accelerogrammes" ),
-         FREQ_FILTRE       =SIMP(statut='f',typ='R',fr="frequence du filtre: corner frequency"),
+         NB_POIN           =SIMP(statut='f',typ='I',fr=tr("nombre de points") ),
+         PESANTEUR         =SIMP(statut='o', typ='R', fr=tr("constante de normalisation de ACCE_MAX, ECART_TYPE et INTE_ARIAS (g) ou le spectre") ),
+         DUREE_PHASE_FORTE =SIMP(statut='o',typ='R',fr=tr("durée phase forte du signal") ),
+         NB_TIRAGE         =SIMP(statut='f',typ='I',defaut= 1, val_min=1, fr=tr("nombre accelerogrammes") ),
+         FREQ_CORNER       =SIMP(statut='f',typ='R', val_min=0.0, fr=tr("frequence du filtre frequentiel: corner frequency")),
+         FREQ_FILTRE       =SIMP(statut='f',typ='R', defaut= 0.0, val_min=0.0, fr=tr("frequence du filtre temporel")),
 #
          DSP        = FACT(statut='f',max=1,     
             AMOR_REDUIT   =SIMP(statut='o',typ='R'),
-            FREQ_FOND     =SIMP(statut='o',typ='R', fr="frequence centrale"),
-            FREQ_PENTE    =SIMP(statut='f',typ='R',  fr="pente pour l'evolution de la frequence centrale"),        
+            FREQ_FOND     =SIMP(statut='o',typ='R', fr=tr("frequence centrale")),
+            FREQ_PENTE    =SIMP(statut='f',typ='R',  fr=tr("pente pour l'evolution de la frequence centrale")),        
         ),
          SPEC_MEDIANE    = FACT(statut='f',max=1,
-        regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'),EXCLUS('FREQ_PAS','LIST_FREQ'),),
-            SPEC_OSCI       =SIMP(statut='o',typ=(fonction_sdaster),),
-            AMOR_REDUIT     =SIMP(statut='o', typ='R', val_min=0., val_max=1.),
-            FREQ_PAS      =SIMP(statut='f',typ='R' , fr="pas"),      
-            LIST_FREQ       =SIMP(statut='f', typ=listr8_sdaster ),            
-            NB_ITER      =SIMP(statut='f',typ='I' ,defaut=0, val_min=0,fr="nombre d'iterations pour fitter le spectre"  ,),
-            ERRE_ZPA      =SIMP(statut='f',typ='R' ,defaut=(1.,0.2), min=1,max=2,  fr="coef et erreur maxi ZPA",),
-            ERRE_MAX      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr="coef et erreur maxi global",),
-            ERRE_RMS      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr="coef et erreur maxi rms",),
-            FREQ_PENTE    =SIMP(statut='f',typ='R',  fr="pente pour l'evolution de la frequence centrale"), 
-            METHODE         =SIMP(statut='f',typ='TXM',defaut="HARMO",into=("NIGAM","HARMO") ),            
+            regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'),EXCLUS('FREQ_PAS','LIST_FREQ'),),
+            SPEC_OSCI     =SIMP(statut='o',typ=(fonction_sdaster),),
+            AMOR_REDUIT   =SIMP(statut='o', typ='R', val_min=0.00001, val_max=1.),
+            FREQ_PAS      =SIMP(statut='f',typ='R' , fr=tr("pas")),      
+            LIST_FREQ     =SIMP(statut='f', typ=listr8_sdaster ),            
+            NB_ITER       =SIMP(statut='f',typ='I' ,val_min=0,fr=tr("nombre d'iterations pour fitter le spectre")  ,),
+            ERRE_ZPA      =SIMP(statut='f',typ='R' ,defaut=(1.,0.2), min=1,max=2,  fr=tr("coef et erreur maxi ZPA"),),
+            ERRE_MAX      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr=tr("coef et erreur maxi global"),),
+            ERRE_RMS      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr=tr("coef et erreur maxi rms"),),
+            FREQ_PENTE    =SIMP(statut='f',typ='R',  fr=tr("pente pour l'evolution de la frequence centrale")), 
+            METHODE       =SIMP(statut='f',typ='TXM',defaut="HARMO",into=("NIGAM","HARMO") ),            
         ),
          SPEC_UNIQUE    = FACT(statut='f',max=1,
-        regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'),EXCLUS('FREQ_PAS','LIST_FREQ'),),
-            ERRE_ZPA      =SIMP(statut='f',typ='R' ,defaut=(1.,0.2), min=1,max=2,  fr="coef et erreur maxi ZPA",),
-            ERRE_MAX      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr="coef et erreur maxi global",),
-            ERRE_RMS      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr="coef et erreur maxi rms",),
-            SPEC_OSCI       =SIMP(statut='o',typ=(fonction_sdaster),),
-            AMOR_REDUIT     =SIMP(statut='o', typ='R', val_min=0., val_max=1.),
-            FREQ_PAS      =SIMP(statut='f',typ='R' , fr="pas"),
-            LIST_FREQ       =SIMP(statut='f', typ=listr8_sdaster ),
-            NB_ITER      =SIMP(statut='f',typ='I' ,defaut=0, val_min=0,fr="nombre d'iterations pour fitter le spectre" ,),
-            METHODE         =SIMP(statut='f',typ='TXM',defaut="HARMO",into=("NIGAM","HARMO") ),    
+            regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'),EXCLUS('FREQ_PAS','LIST_FREQ'),),
+            ERRE_ZPA      =SIMP(statut='f',typ='R' ,defaut=(1.,0.2), min=1,max=2,  fr=tr("coef et erreur maxi ZPA"),),
+            ERRE_MAX      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr=tr("coef et erreur maxi global"),),
+            ERRE_RMS      =SIMP(statut='f',typ='R' ,defaut=(0.5,0.2), min=1,max=2,  fr=tr("coef et erreur maxi rms"),),
+            SPEC_OSCI     =SIMP(statut='o',typ=(fonction_sdaster),),
+            AMOR_REDUIT   =SIMP(statut='o', typ='R', val_min=0.00001, val_max=1.),
+            FREQ_PAS      =SIMP(statut='f',typ='R' , fr=tr("pas")),
+            LIST_FREQ     =SIMP(statut='f', typ=listr8_sdaster ),
+            NB_ITER       =SIMP(statut='f',typ='I' , val_min=0,fr=tr("nombre d'iterations pour fitter le spectre") ,),
+            METHODE       =SIMP(statut='f',typ='TXM',defaut="HARMO",into=("NIGAM","HARMO") ),    
         ),
 #       
          SPEC_FRACTILE    = FACT(statut='f',max=1,
-        regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'), EXCLUS('FREQ_PAS','LIST_FREQ'),),
+            regles=(ENSEMBLE('ERRE_ZPA','ERRE_MAX','ERRE_RMS'), EXCLUS('FREQ_PAS','LIST_FREQ'),),
             SPEC_OSCI       =SIMP(statut='o',typ=(fonction_sdaster),),
-            SPEC_1_SIGMA       =SIMP(statut='o',typ=(fonction_sdaster),),  
-            AMOR_REDUIT     =SIMP(statut='o', typ='R', val_min=0., val_max=1.),
-            FREQ_PAS      =SIMP(statut='f',typ='R' , fr="pas"),    
+            SPEC_1_SIGMA    =SIMP(statut='o',typ=(fonction_sdaster),),  
+            AMOR_REDUIT     =SIMP(statut='o', typ='R', val_min=0.00001, val_max=1.),
+            FREQ_PAS        =SIMP(statut='f',typ='R' , fr=tr("pas")),    
             LIST_FREQ       =SIMP(statut='f', typ=listr8_sdaster ),               
-           FREQ_PENTE    =SIMP(statut='f',typ='R',  fr="pente pour l'evolution de la frequence centrale"),           
+            FREQ_PENTE      =SIMP(statut='f',typ='R',  fr=tr("pente pour l'evolution de la frequence centrale")),           
         ),
 
-
-         regles=(UN_PARMI('DSP','SPEC_MEDIANE','SPEC_UNIQUE','SPEC_FRACTILE'),),    
+         a_type_dsp   = BLOC(condition='DSP !=None' ,
          MODULATION      = FACT(statut='o',max=1, 
             regles=(EXCLUS('ACCE_MAX','INTE_ARIAS','ECART_TYPE'),),         
             TYPE         = SIMP(statut='o',typ='TXM' , into=("GAMMA","JENNINGS_HOUSNER","CONSTANT")),
-            ACCE_MAX     = SIMP(statut='f',typ='R',fr="PGA: acceleration max au sol (g)" ),
-            ECART_TYPE   = SIMP(statut='f',typ='R',fr="ecart-type" ),
-            INTE_ARIAS   = SIMP(statut='f',typ='R',fr="intensite d'Arias" ),
-              c_type_mod   = BLOC(condition="TYPE=='GAMMA' ",
-                           INST_INI     = SIMP(statut='o',typ='R',fr="instant debut phase forte" ),
+            ACCE_MAX     = SIMP(statut='f',typ='R',fr=tr("PGA: acceleration max au sol (g)") ),
+            ECART_TYPE   = SIMP(statut='f',typ='R',fr=tr("ecart-type") ),
+            INTE_ARIAS   = SIMP(statut='f',typ='R',fr=tr("intensite d'Arias") ),
+            a_type_mod   = BLOC(condition="TYPE=='GAMMA' ",
+                           INST_INI     = SIMP(statut='o',typ='R',fr=tr("instant debut phase forte") ),
                             ),
-            ),
-)  ;
+            ),),
+
+
+        b_type_spec   = BLOC(condition='DSP == None',
+        MODULATION      = FACT(statut='o',max=1,        
+            TYPE        = SIMP(statut='o',typ='TXM' , into=("GAMMA","JENNINGS_HOUSNER","CONSTANT")),
+            b_type_mod  = BLOC(condition="TYPE=='GAMMA' ",
+                           INST_INI     = SIMP(statut='o',typ='R',fr=tr("instant debut phase forte") ),
+                            ),
+            ),),
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23065,14 +24748,14 @@ GENE_ACCE_SEISME=MACRO(nom="GENE_ACCE_SEISME",
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
 # ======================================================================
 # person_in_charge: irmela.zentner at edf.fr
-GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_fonction,
-                    fr="Génération de la fonction temporelle à partir d une matrice interspectrale",
+GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=interspectre,
+                    fr=tr("Génération de la fonction temporelle à partir d une matrice interspectrale"),
                     reentrant='n',
             UIinfo={"groupes":("Fonctions",)},
          INTE_SPEC       =SIMP(statut='o',typ=interspectre),
          NUME_VITE_FLUI  =SIMP(statut='f',typ='I' ),
          INTERPOL        =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
-         b_interpol_oui    =BLOC(condition = "INTERPOL == 'OUI' ",fr="Parametres cas interpolation autorisee",
+         b_interpol_oui    =BLOC(condition = "INTERPOL == 'OUI' ",fr=tr("Parametres cas interpolation autorisee"),
            DUREE_TIRAGE    =SIMP(statut='f',typ='R' ),
            FREQ_INIT       =SIMP(statut='f',typ='R' ),
            FREQ_FIN        =SIMP(statut='f',typ='R' ),
@@ -23109,7 +24792,7 @@ def gene_matr_alea_prod(MATR_MOYEN,**args ):
 GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op=  27,
 #sd_prod=matr_asse_gene_r,
 sd_prod=gene_matr_alea_prod,
-               fr="Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique",
+               fr=tr("Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique"),
                reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
    MATR_MOYEN   = SIMP(statut='o', typ=(matr_asse_gene_r,macr_elem_dyna)),
@@ -23117,17 +24800,17 @@ sd_prod=gene_matr_alea_prod,
 #    cas matrice generalisee
    b_matr =BLOC( condition = "AsType(MATR_MOYEN) in (matr_asse_gene_r,)",
            COEF_VAR     = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
-                                fr="coefficient de variation de la matrice a generer" ),
+                                fr=tr("coefficient de variation de la matrice a generer") ),
            ),
 #    cas macr_elem_dyna
    b_macr =BLOC( condition = "AsType(MATR_MOYEN) in (macr_elem_dyna,)",
-           fr="cas macr_elem_dyna (sous-structuratio)",
+           fr=tr("cas macr_elem_dyna (sous-structuratio)"),
            COEF_VAR_RIGI     = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
-                                fr="coefficient de variation de la matrice de raideur" ),
+                                fr=tr("coefficient de variation de la matrice de raideur") ),
            COEF_VAR_MASS     = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
-                                fr="coefficient de variation de la matrice de masse" ),
+                                fr=tr("coefficient de variation de la matrice de masse") ),
            COEF_VAR_AMOR     = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
-                                fr="coefficient de variation de la matrice d'amortissement" ),),
+                                fr=tr("coefficient de variation de la matrice d'amortissement") ),),
 
    INIT_ALEA    =SIMP(statut='f',typ='I'),
 ) ;
@@ -23155,20 +24838,22 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA",
                      op=EMPTY_OPS,
                      sd_prod=reel,
                      reentrant='n',
-                     fr="Générer une réalisation d'une variable aléatoire réelle " \
-                        "de loi de probabilité donnée (Gamma ou Exponentielle)",
+                     fr=tr("Générer une réalisation d'une variable aléatoire réelle "
+                          "de loi de probabilité donnée (Gamma ou Exponentielle)"),
                      UIinfo={"groupes":("Fonctions",)},
    TYPE       = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"),
-   b_gamma    =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma",
+   b_gamma    =BLOC(condition = "TYPE == 'GAMMA' ",fr=tr("Parametres loi gamma"),
            VALE_MOY   = SIMP(statut='f', typ='R', defaut=1.),
            BORNE_INF  = SIMP(statut='f', typ='R', defaut=0.),
            COEF_VAR   = SIMP(statut='f', typ='R', defaut=0.1),
              ),
-   b_expo    =BLOC(condition = "TYPE == 'EXPONENTIELLE' ",fr="Parametres loi exponentielle",
+   b_expo    =BLOC(condition = "TYPE == 'EXPONENTIELLE' ",
+                   fr=tr("Parametres loi exponentielle"),
            VALE_MOY   = SIMP(statut='f', typ='R', defaut=0.),
            BORNE_INF  = SIMP(statut='f', typ='R', defaut=-1.),
              ),
-   b_expo_tronq    =BLOC(condition = "TYPE == 'EXP_TRONQUEE' ",fr="Parametres loi exponentielle tronquee",
+   b_expo_tronq    =BLOC(condition = "TYPE == 'EXP_TRONQUEE' ",
+                         fr=tr("Parametres loi exponentielle tronquee"),
            VALE_MOY   = SIMP(statut='f', typ='R', defaut=0.),
            BORNE_INF  = SIMP(statut='f', typ='R', defaut=-1.),
            BORNE_SUP  = SIMP(statut='f', typ='R', defaut=1.),
@@ -23195,7 +24880,7 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA",
 # person_in_charge: j-pierre.lefebvre at edf.fr
 IMPR_CO=PROC(nom="IMPR_CO",op=17,
             UIinfo={"groupes":("Impression","Utilitaires",)},
-             fr="Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour les développeurs)",
+             fr=tr("Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour les développeurs)"),
          regles=(UN_PARMI('CONCEPT','CHAINE','TOUT' ),),
 
          UNITE           =SIMP(statut='f',typ='I',defaut=8),
@@ -23208,6 +24893,12 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17,
          CHAINE          =SIMP(statut='f',typ='TXM'),
          POSITION        =SIMP(statut='f',typ='I',defaut=1),
          TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+
+         b_permut = BLOC(
+                         condition   = "NIVEAU == -1 ",
+                         PERMUTATION = SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI")),
+                         ),
+
 )  ;
 
 # ======================================================================
@@ -23231,7 +24922,7 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17,
 
 IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL",
                          op=OPS('Macro.impr_diag_campbell_ops.impr_diag_campbell_ops'),
-                         fr="Tracé du Diagramme de Campbell",
+                         fr=tr("Tracé du Diagramme de Campbell"),
                          UIinfo={"groupes":("Impression","Outils-métier",)},
             MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster),
             MODES           =SIMP(statut='o',typ=table_container),
@@ -23267,55 +24958,56 @@ IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL",
 IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",
                     op=OPS('Macro.impr_fonction_ops.impr_fonction_ops'),
                     sd_prod=None,
-                    fr="Imprime le contenu d'objets de type fonction ou liste de " \
-                       "réels dans un fichier destiné à un traceur de courbe",
+                    fr=tr("Imprime le contenu d'objets de type fonction ou liste de "
+                         "réels dans un fichier destiné à un traceur de courbe"),
                     UIinfo={"groupes":("Impression","Fonctions",)},
          FORMAT          =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU',
                                into=("TABLEAU","AGRAF","XMGRACE",),),
          b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
-                        fr="Mots-clés propres à XMGRACE",
+                        fr=tr("Mots-clés propres à XMGRACE"),
            PILOTE          =SIMP(statut='f',typ='TXM',defaut='',
                                  into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
-                            fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+                            fr=tr("Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace")),
            UNITE           =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                                 fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                                 fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
          ),
          b_agraf = BLOC(condition = "FORMAT == 'AGRAF'",
-                        fr="Mots-clés propres à AGRAF",
+                        fr=tr("Mots-clés propres à AGRAF"),
            UNITE           =SIMP(statut='o',typ='I',defaut=25,
-                                 fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                                 fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
            UNITE_DIGR      =SIMP(statut='o',typ='I',defaut=26,
-                                 fr="Unité logique définissant le fichier dans lequel on écrit les directives Agraf"),
+                                 fr=tr("Unité logique définissant le fichier dans lequel on écrit les directives Agraf")),
          ),
          # unite pour TABLEAU dans le bloc de mise en forme spécifique
 
-         COURBE          =FACT(statut='o',max='**',fr="Définition de la fonction à tracer",
+         COURBE          =FACT(statut='o',max='**',fr=tr("Définition de la fonction à tracer"),
            regles=(UN_PARMI('FONCTION','LIST_RESU','FONC_X','ABSCISSE'),),
            FONCTION        =SIMP(statut='f',typ=(fonction_sdaster, formule, fonction_c, nappe_sdaster),
-                                 fr="Fonction réelle ou complexe", ),
+                                 fr=tr("Fonction réelle ou complexe"), ),
            LIST_RESU       =SIMP(statut='f',typ=listr8_sdaster,
-                                 fr="Liste des ordonnees d'une fonction réelle définie par deux listes", ),
+                                 fr=tr("Liste des ordonnees d'une fonction réelle définie par deux listes"), ),
            FONC_X          =SIMP(statut='f',typ=(fonction_sdaster,formule),
-                                 fr="Fonction abscisses d'une fonction paramétrique",),
+                                 fr=tr("Fonction abscisses d'une fonction paramétrique"),),
            ABSCISSE        =SIMP(statut='f',typ='R',max='**',
-                                 fr="Valeurs des abscisses", ),
+                                 fr=tr("Valeurs des abscisses"), ),
            b_fonction      =BLOC(condition = "FONCTION != None",
              LIST_PARA       =SIMP(statut='f',typ=listr8_sdaster ),
            ),
            b_fonction_c  =BLOC(condition = "AsType(FONCTION) in (fonction_c, formule_c)",
-                                 fr="Fonction complexe définie par le mot-clé fonction",
+                                 fr=tr("Fonction complexe définie par le mot-clé fonction"),
              PARTIE          =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
            ),
            b_list_resu     =BLOC(condition = "LIST_RESU != None",
              LIST_PARA       =SIMP(statut='o',typ=listr8_sdaster ),
            ),
            b_fonc_x        =BLOC(condition = "FONC_X != None",
-             FONC_Y          =SIMP(statut='o',typ=(fonction_sdaster,formule),fr="Fonction ordonnées d une fonction paramétrique" ),
+             FONC_Y          =SIMP(statut='o',typ=(fonction_sdaster,formule),
+                                   fr=tr("Fonction ordonnées d une fonction paramétrique") ),
              LIST_PARA       =SIMP(statut='f',typ=listr8_sdaster ),
            ),
            b_vale_resu     =BLOC(condition = "ABSCISSE != None",
              ORDONNEE      =SIMP(statut='o',typ='R',max='**',
-                                 fr="Valeurs des ordonnées"),
+                                 fr=tr("Valeurs des ordonnées")),
            ),
 
            # mots-clés utilisant uniquement aux formats autres que TABLEAU
@@ -23323,63 +25015,63 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",
            # donc on ne les met pas dans un bloc
            # "pseudo" bloc mise en forme :
                LEGENDE         =SIMP(statut='f',typ='TXM',
-                                    fr="Légende associée à la fonction" ),
+                                    fr=tr("Légende associée à la fonction") ),
                STYLE           =SIMP(statut='f',typ='I',val_min=0,
-                                    fr="Style de la ligne représentant la fonction",),
+                                    fr=tr("Style de la ligne représentant la fonction"),),
                COULEUR         =SIMP(statut='f',typ='I',val_min=0,
-                                    fr="Couleur associée à la fonction",),
+                                    fr=tr("Couleur associée à la fonction"),),
                MARQUEUR        =SIMP(statut='f',typ='I',val_min=0,
-                                    fr="Type du marqueur associé à la fonction",),
+                                    fr=tr("Type du marqueur associé à la fonction"),),
                FREQ_MARQUEUR   =SIMP(statut='f',typ='I',defaut=0,
-                                    fr="Fréquence d impression du marqueur associé à la fonction", ),
+                                    fr=tr("Fréquence d impression du marqueur associé à la fonction"), ),
            # fin bloc mise en forme
 
            TRI             =SIMP(statut='f',typ='TXM',defaut="N",
-                                 fr="Choix du tri effectué sur les abscisses ou sur les ordonnées",
+                                 fr=tr("Choix du tri effectué sur les abscisses ou sur les ordonnées"),
                                  into=("N","X","Y","XY","YX") ),
          ),
          # Mise en page du tableau ou du graphique
          b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'",
-                          fr="Mots-clés propres au format Tableau",
+                          fr=tr("Mots-clés propres au format Tableau"),
            UNITE           =SIMP(statut='o',typ='I',defaut=8,
-                                 fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                                 fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
            TITRE           =SIMP(statut='f',typ='TXM',
-                                 fr="Titre associé au graphique" ),
+                                 fr=tr("Titre associé au graphique") ),
            SOUS_TITRE      =SIMP(statut='f',typ='TXM',
-                                 fr="Sous-titre du graphique" ),
+                                 fr=tr("Sous-titre du graphique") ),
            SEPARATEUR      =SIMP(statut='f',typ='TXM',defaut=' ',
-                                 fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"),
+                                 fr=tr("Séparateur des colonnes du tableau (ex : ' ', ';'...)")),
            COMMENTAIRE     =SIMP(statut='f',typ='TXM',defaut='#',
-                                 fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"),
+                                 fr=tr("Caractère indiquant au traceur de fonction que la ligne peut etre ignorée")),
            COMM_PARA       =SIMP(statut='f',typ='TXM',defaut='',
-                                 fr="Caractère utilisé pour commentariser la ligne des labels de colonnes"),
+                                 fr=tr("Caractère utilisé pour commentariser la ligne des labels de colonnes")),
            DEBUT_LIGNE     =SIMP(statut='f',typ='TXM',defaut='',
-                                 fr="Caractère de debut de ligne"),
+                                 fr=tr("Caractère de debut de ligne")),
            FIN_LIGNE       =SIMP(statut='f',typ='TXM',defaut='\n',
-                                 fr="Caractère de fin de ligne"),
+                                 fr=tr("Caractère de fin de ligne")),
          ),
          b_graphique = BLOC(condition = "FORMAT != 'TABLEAU'",
-                        fr="Mise en page du graphique",
+                        fr=tr("Mise en page du graphique"),
            TITRE           =SIMP(statut='f',typ='TXM',
-                                 fr="Titre associé au graphique" ),
+                                 fr=tr("Titre associé au graphique") ),
            SOUS_TITRE      =SIMP(statut='f',typ='TXM',
-                                 fr="Sous-titre du graphique" ),
+                                 fr=tr("Sous-titre du graphique") ),
            BORNE_X         =SIMP(statut='f',typ='R',min=2,max=2,
-                                 fr="Intervalles de variation des abscisses"),
+                                 fr=tr("Intervalles de variation des abscisses")),
            BORNE_Y         =SIMP(statut='f',typ='R',min=2,max=2,
-                                 fr="Intervalles de variation des ordonnées"),
+                                 fr=tr("Intervalles de variation des ordonnées")),
            ECHELLE_X       =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
-                                 fr="Type d'échelle pour les abscisses" ),
+                                 fr=tr("Type d'échelle pour les abscisses") ),
            ECHELLE_Y       =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
-                                 fr="Type d'échelle pour les ordonnées" ),
+                                 fr=tr("Type d'échelle pour les ordonnées") ),
            GRILLE_X        =SIMP(statut='f',typ='R',max=1,val_min=0.,
-                                 fr="Pas du quadrillage vertical" ),
+                                 fr=tr("Pas du quadrillage vertical") ),
            GRILLE_Y        =SIMP(statut='f',typ='R',max=1,val_min=0.,
-                                 fr="Pas du quadrillage horizontal" ),
+                                 fr=tr("Pas du quadrillage horizontal") ),
            LEGENDE_X       =SIMP(statut='f',typ='TXM',
-                                 fr="Légende associée à l'axe des abscisses" ),
+                                 fr=tr("Légende associée à l'axe des abscisses") ),
            LEGENDE_Y       =SIMP(statut='f',typ='TXM',
-                                 fr="Légende associée à l'axe des ordonnées" ),
+                                 fr=tr("Légende associée à l'axe des ordonnées") ),
          ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )  ;
@@ -23402,7 +25094,7 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",
 # ======================================================================
 # person_in_charge: emmanuel.boyere at edf.fr
 IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
-            fr="Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT",
+            fr=tr("Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT"),
             UIinfo={"groupes":("Impression","Dynamique",)},
          FORMAT          =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ),
          UNITE           =SIMP(statut='f',typ='I',defaut=8),  
@@ -23464,24 +25156,24 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
 # person_in_charge: j-pierre.lefebvre at edf.fr
 IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,
             UIinfo={"groupes":("Impression","Utilitaires",)},
-                 fr="Imprimer le contenu des objets créés par JEVEUX (pour développeur)",
-         ENTITE          =SIMP(fr="choix de l'observation",statut='o',typ='TXM',
+                 fr=tr("Imprimer le contenu des objets créés par JEVEUX (pour développeur)"),
+         ENTITE          =SIMP(fr=tr("choix de l'observation"),statut='o',typ='TXM',
                                into=("DISQUE","MEMOIRE","REPERTOIRE",    
                                      "OBJET","ATTRIBUT","SYSTEME","ENREGISTREMENT") ),
          b_objet      =BLOC(condition = "(ENTITE=='OBJET')",
-            NOMOBJ          =SIMP(fr="nom d'objet",statut='f',typ='TXM' ),  
-            NUMOC           =SIMP(fr="numéro d objet de collection",statut='f',typ='I' ),  
-            NOMOC           =SIMP(fr="nom d'objet de collection",statut='f',typ='TXM' ),  
+            NOMOBJ          =SIMP(fr=tr("nom d'objet"),statut='f',typ='TXM' ),  
+            NUMOC           =SIMP(fr=tr("numéro d objet de collection"),statut='f',typ='I' ),  
+            NOMOC           =SIMP(fr=tr("nom d'objet de collection"),statut='f',typ='TXM' ),  
          ),
          b_attribut   =BLOC(condition = "(ENTITE=='ATTRIBUT')",
-            NOMOBJ          =SIMP(fr="nom de collection",statut='f',typ='TXM' ),  
-            NOMATR          =SIMP(fr="nom d attribut de collection",statut='f',typ='TXM',
+            NOMOBJ          =SIMP(fr=tr("nom de collection"),statut='f',typ='TXM' ),  
+            NOMATR          =SIMP(fr=tr("nom d attribut de collection"),statut='f',typ='TXM',
                                   into=('$$DESO','$$IADD','$$IADM','$$NOM','$$LONG',
                                       '$$LONO','$$LUTI','$$NUM') ),
          ),
          b_systeme    =BLOC(condition = "(ENTITE=='SYSTEME')",
             CLASSE          =SIMP(statut='o',typ='TXM',into=('G','V') ),  
-            NOMATR          =SIMP(fr="nom d attribut systeme",statut='f',typ='TXM',   
+            NOMATR          =SIMP(fr=tr("nom d attribut systeme"),statut='f',typ='TXM',   
                                   into=('$$CARA','$$IADD','$$GENR','$$TYPE','$$MARQ',
                                       '$$DOCU','$$ORIG','$$RNOM','$$LTYP','$$LONG',
                                       '$$LONO','$$DATE','$$LUTI','$$HCOD','$$INDX',
@@ -23525,7 +25217,7 @@ IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,
 
 IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160,
                     UIinfo={"groupes":("Impression","Outils-métier",)},
-         fr="Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D",
+         fr=tr("Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D"),
          MACR_ELEM_DYNA  =SIMP(statut='o',typ=macr_elem_dyna ),
          FORMAT          =SIMP(statut='f',typ='TXM',defaut="IDEAS",
                                into=("MISS_3D","IDEAS") ),
@@ -23576,7 +25268,7 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160,
 #
 IMPR_MAIL_YACS=PROC(nom="IMPR_MAIL_YACS",op=43,
             UIinfo={"groupes":("Maillage",)},
-               fr="Lecture d'un maillage via YACS lors du Couplage de Code_Aster et Saturne",
+               fr=tr("Lecture d'un maillage via YACS lors du Couplage de Code_Aster et Saturne"),
          UNITE_MAILLAGE = SIMP(statut='f',typ='I',defaut=30),
          TYPE_MAILLAGE = SIMP(statut='o',typ='TXM',into=("SOMMET","MILIEU")),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
@@ -23603,7 +25295,7 @@ IMPR_MAIL_YACS=PROC(nom="IMPR_MAIL_YACS",op=43,
 IMPR_OAR =MACRO(nom="IMPR_OAR",
                 op=OPS('Macro.impr_oar_ops.impr_oar_ops'),
                 sd_prod=None,
-                fr="Impression au format OAR",
+                fr=tr("Impression au format OAR"),
                 UIinfo={"groupes":("Impression","Outils-métier",)},
    TYPE_CALC = SIMP(statut='o', typ='TXM',into=('COMPOSANT', 'MEF', 'TUYAUTERIE')),
    b_composant =BLOC(condition = "TYPE_CALC == 'COMPOSANT' ",
@@ -23671,67 +25363,55 @@ IMPR_OAR =MACRO(nom="IMPR_OAR",
 # person_in_charge: nicolas.sellenet at edf.fr
 IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
             UIinfo={"groupes":("Impression","Résultats et champs",)},
-               fr="Imprimer un maillage et/ou les résultats d'un calcul (différents formats)",
+               fr=tr("Imprimer un maillage et/ou les résultats d'un calcul (différents formats)"),
 
          FORMAT          =SIMP(statut='f',typ='TXM',position='global',defaut="RESULTAT",
                                  into=("RESULTAT","IDEAS","ASTER","CASTEM","MED","GMSH") ),
 
-         b_modele =BLOC(condition="FORMAT!='MED'",fr="Modèle",
+         b_modele =BLOC(condition="FORMAT!='MED'",fr=tr("Modèle"),
            MODELE          =SIMP(statut='f',typ=modele_sdaster),
          ),
 
-         b_format_resultat  =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
+         b_format_resultat  =BLOC(condition="FORMAT=='RESULTAT'",fr=tr("unité logique d'impression au format RESULTAT"),
            UNITE           =SIMP(statut='f',typ='I',defaut=8),
          ),
 
-         b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
+         b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr=tr("unité logique d'impression et version IDEAS"),
            UNITE           =SIMP(statut='f',typ='I',defaut=30),
            VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
          ),
 
-         b_format_aster  =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER",
+         b_format_aster  =BLOC(condition="FORMAT=='ASTER'",fr=tr("unité logique d'impression au format ASTER"),
            UNITE           =SIMP(statut='f',typ='I',defaut=26),
          ),
 
-         b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM",
+         b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr=tr("unité logique d'impression et version CASTEM"),
            UNITE           =SIMP(statut='f',typ='I',defaut=37),
            NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
          ),
 
-         b_format_med  =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED",
+         b_format_med  =BLOC(condition="FORMAT=='MED'",fr=tr("unité logique d'impression au format MED"),
            UNITE           =SIMP(statut='f',typ='I',defaut=80),
          ),
 
-         b_format_gmsh  =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH",
+         b_format_gmsh  =BLOC(condition="FORMAT=='GMSH'",fr=tr("unité logique d'impression et version GMSH"),
            UNITE           =SIMP(statut='f',typ='I',defaut=37),
            VERSION         =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)),
          ),
 
          regles=(AU_MOINS_UN('CONCEPT','RESU',),),
 
-         b_restreint  =BLOC(condition="FORMAT=='MED'",fr="Seulement pour les fichiers MED",
-            RESTREINT   =FACT(statut='f', max=1,
-            fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles",
-            regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),),
-            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-            MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
-            TOUT_GROUP_MA   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
-            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-            TOUT_GROUP_NO   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
-            ),
-         ),
-
          CONCEPT          =FACT(statut='f',max='**',
-           fr='Pour imprimer les champs de "données" à des fins de visualisation (controle des affectations).',
+           fr=tr('Pour imprimer les champs de "données" à des fins de visualisation (controle des affectations).'),
            # (valide pour les format RESULTAT et MED)
            regles=(UN_PARMI('CHAM_MATER','CARA_ELEM','CHARGE'),),
            CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
            CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
            CHARGE          =SIMP(statut='f',typ=char_meca),
 
-           b_cara_elem        =BLOC(condition="CARA_ELEM != None", fr="impression des reperes locaux.",
+           b_cara_elem        =BLOC(condition="CARA_ELEM != None", fr=tr("impression des reperes locaux."),
               REPERE_LOCAL    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-              b_reploc        =BLOC(condition="REPERE_LOCAL == 'OUI'", fr="impression des reperes locaux.",
+              b_reploc        =BLOC(condition="REPERE_LOCAL == 'OUI'", fr=tr("impression des reperes locaux."),
                  MODELE          =SIMP(statut='o',typ=modele_sdaster),
               ),
            ),
@@ -23761,7 +25441,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
            ),
 
            b_extrac        =BLOC(condition="RESULTAT != None",
-                                 fr="extraction d un champ de grandeur",
+                                 fr=tr("extraction d un champ de grandeur"),
              regles=(EXCLUS('TOUT_CHAM','NOM_CHAM'),
                      EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP',
                             'LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS','ANGLE'),),
@@ -23798,14 +25478,14 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
 ###
            b_cmp=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
            ((FORMAT == 'CASTEM')or(FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'MED'))""",
-                                fr="sélection des composantes",
+                                fr=tr("sélection des composantes"),
              regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
              TOUT_CMP        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              NOM_CMP         =SIMP(statut='f',typ='TXM',max='**'),
            ),
 ###
            b_med=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and(FORMAT == 'MED')""",
-                                fr="renommage du champ",
+                                fr=tr("renommage du champ"),
              regles=(EXCLUS('NOM_CHAM_MED','NOM_RESU_MED'),),
              NOM_CHAM_MED    =SIMP(statut='f',typ='TXM',
                                    validators=AndVal((LongStr(1,64), NoRepeat())), max='**'),
@@ -23813,7 +25493,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
            ),
 ###
            b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""",
-                                fr="sélection des composantes et des entités toplogiques",
+                                fr=tr("sélection des composantes et des entités toplogiques"),
              MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
              GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
              TYPE_CHAM       =SIMP(statut='f',typ='TXM',defaut="SCALAIRE",
@@ -23832,7 +25512,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
 ###
            b_topologie=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
            ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'MED'))""",
-                                fr="sélection des entités topologiques",
+                                fr=tr("sélection des entités topologiques"),
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
              GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
@@ -23841,7 +25521,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
            ),
 ###
            b_valeurs=BLOC(condition="(FORMAT == 'RESULTAT')",
-                               fr="sélection sur les valeurs",
+                               fr=tr("sélection sur les valeurs"),
              VALE_MAX        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              VALE_MIN        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              BORNE_SUP       =SIMP(statut='f',typ='R'),
@@ -23850,7 +25530,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
            ),
 
            b_format_r=BLOC(condition="""((FORMAT == 'RESULTAT')or(FORMAT == 'ASTER'))""",
-                           fr="Format des nombres réels",
+                           fr=tr("Format des nombres réels"),
              FORMAT_R        =SIMP(statut='f',typ='TXM',defaut="1PE21.14"),
            ),
 
@@ -23881,21 +25561,21 @@ IMPR_TABLE=MACRO(nom="IMPR_TABLE",
                  op=OPS('Macro.impr_table_ops.impr_table_ops'),
                  sd_prod=None,
                  UIinfo={"groupes":("Impression","Tables",)},
-                 fr="Impression du contenu d'une table dans un fichier",
+                 fr=tr("Impression du contenu d'une table dans un fichier"),
    TABLE          =SIMP(statut='o',typ=table_sdaster),
    FORMAT         =SIMP(statut='f',typ='TXM',defaut="TABLEAU",
                          into=("TABLEAU","ASTER","TABLEAU_CROISE","AGRAF","XMGRACE",),),
    b_pilote       =BLOC(condition = "FORMAT == 'XMGRACE'",
-                        fr="Mots-clés propres à XMGRACE",
+                        fr=tr("Mots-clés propres à XMGRACE"),
       PILOTE         =SIMP(statut='f',typ='TXM',defaut='',
                            into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
-                      fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+                      fr=tr("Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace")),
       UNITE          =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                           fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                           fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
    ),
    b_unite        =BLOC(condition = "FORMAT != 'XMGRACE'",
       UNITE          =SIMP(statut='f',typ='I',defaut=8,
-                           fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                           fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
    ),
    FILTRE         =FACT(statut='f',max='**',
       NOM_PARA       =SIMP(statut='o',typ='TXM'),
@@ -23926,50 +25606,50 @@ IMPR_TABLE=MACRO(nom="IMPR_TABLE",
 
    # Mise en page du tableau ou du graphique
    b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'",
-                    fr="Mots-clés propres au format Tableau",
+                    fr=tr("Mots-clés propres au format Tableau"),
       SEPARATEUR      =SIMP(statut='f',typ='TXM',defaut=' ',
-                            fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"),
+                            fr=tr("Séparateur des colonnes du tableau (ex : ' ', ';'...)")),
       COMMENTAIRE     =SIMP(statut='f',typ='TXM',defaut='#',
-                            fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"),
+                            fr=tr("Caractère indiquant au traceur de fonction que la ligne peut etre ignorée")),
       COMM_PARA       =SIMP(statut='f',typ='TXM',defaut='',
-                            fr="Caractère utilisé pour commentariser la ligne des labels de colonnes"),
+                            fr=tr("Caractère utilisé pour commentariser la ligne des labels de colonnes")),
       DEBUT_LIGNE     =SIMP(statut='f',typ='TXM',defaut='',
-                            fr="Caractère de debut de ligne"),
+                            fr=tr("Caractère de debut de ligne")),
       FIN_LIGNE       =SIMP(statut='f',typ='TXM',defaut='\n',
-                            fr="Caractère de fin de ligne"),
+                            fr=tr("Caractère de fin de ligne")),
     ),
 
    # mise en forme pour les formats qui passent par Graph
    b_forme         =BLOC(condition = "FORMAT == 'XMGRACE'",
-                         fr="Données de mise en forme du graphique",
+                         fr=tr("Données de mise en forme du graphique"),
       # pour la courbe
       LEGENDE         =SIMP(statut='f',typ='TXM',
-                            fr="Légende associée à la fonction" ),
+                            fr=tr("Légende associée à la fonction") ),
       STYLE           =SIMP(statut='f',typ='I',val_min=0,
-                            fr="Style de la ligne représentant la fonction",),
+                            fr=tr("Style de la ligne représentant la fonction"),),
       COULEUR         =SIMP(statut='f',typ='I',val_min=0,
-                            fr="Couleur associée à la fonction",),
+                            fr=tr("Couleur associée à la fonction"),),
       MARQUEUR        =SIMP(statut='f',typ='I',val_min=0,
-                            fr="Type du marqueur associé à la fonction",),
+                            fr=tr("Type du marqueur associé à la fonction"),),
       FREQ_MARQUEUR   =SIMP(statut='f',typ='I',defaut=0,
-                            fr="Fréquence d impression du marqueur associé à la fonction", ),
+                            fr=tr("Fréquence d impression du marqueur associé à la fonction"), ),
       # format du graphique
       BORNE_X         =SIMP(statut='f',typ='R',min=2,max=2,
-                            fr="Intervalles de variation des abscisses"),
+                            fr=tr("Intervalles de variation des abscisses")),
       BORNE_Y         =SIMP(statut='f',typ='R',min=2,max=2,
-                            fr="Intervalles de variation des ordonnées"),
+                            fr=tr("Intervalles de variation des ordonnées")),
       ECHELLE_X       =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
-                            fr="Type d'échelle pour les abscisses" ),
+                            fr=tr("Type d'échelle pour les abscisses") ),
       ECHELLE_Y       =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
-                            fr="Type d'échelle pour les ordonnées" ),
+                            fr=tr("Type d'échelle pour les ordonnées") ),
       GRILLE_X        =SIMP(statut='f',typ='R',max=1,val_min=0.,
-                            fr="Pas du quadrillage vertical" ),
+                            fr=tr("Pas du quadrillage vertical") ),
       GRILLE_Y        =SIMP(statut='f',typ='R',max=1,val_min=0.,
-                            fr="Pas du quadrillage horizontal" ),
+                            fr=tr("Pas du quadrillage horizontal") ),
       LEGENDE_X       =SIMP(statut='f',typ='TXM',
-                            fr="Légende associée à l'axe des abscisses" ),
+                            fr=tr("Légende associée à l'axe des abscisses") ),
       LEGENDE_Y       =SIMP(statut='f',typ='TXM',
-                            fr="Légende associée à l'axe des ordonnées" ),
+                            fr=tr("Légende associée à l'axe des ordonnées") ),
    ),
 
    TITRE          =SIMP(statut='f',typ='TXM',max='**'),
@@ -23997,15 +25677,15 @@ IMPR_TABLE=MACRO(nom="IMPR_TABLE",
 INCLUDE=MACRO(nom="INCLUDE",
               op=OPS("Cata.ops.build_include"),
               UIinfo={"groupes":("Gestion du travail",)},
-              fr="Débranchement vers un fichier de commandes secondaires",
+              fr=tr("Débranchement vers un fichier de commandes secondaires"),
               sd_prod=ops.INCLUDE,
               op_init=ops.INCLUDE_context,
               fichier_ini=1,
               regles=(UN_PARMI('UNITE', 'DONNEE')),
          UNITE = SIMP(statut='f', typ='I',
-                      fr="Unité logique à inclure"),
-         DONNEE = SIMP(statut='f', typ='Fichier',
-                       fr="Nom du fichier de données à inclure"),
+                      fr=tr("Unité logique à inclure")),
+         DONNEE = SIMP(statut='f', typ=('Fichier','','Sauvegarde'),
+                       fr=tr("Nom du fichier de données à inclure")),
          INFO  = SIMP(statut='f', typ='I', defaut=1, into=(1, 2)),
 );
 
@@ -24031,22 +25711,28 @@ INCLUDE_MATERIAU = MACRO(nom="INCLUDE_MATERIAU",
                          op=OPS("Macro.include_materiau_ops.include_materiau_ops"),
                          sd_prod=mater_sdaster,
             UIinfo={"groupes":("Modélisation", "Gestion du travail", )},
-            fr="Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster ",
+            fr=tr("Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster "),
+            regles=(UN_PARMI('NOM_AFNOR', 'FICHIER'),
+                    ENSEMBLE('NOM_AFNOR', 'TYPE_MODELE', 'VARIANTE', 'TYPE_VALE')),
 
-         NOM_AFNOR      = SIMP(statut='o', typ='TXM',),
-         TYPE_MODELE    = SIMP(statut='o', typ='TXM', into=("REF", "PAR"),),
-         VARIANTE       = SIMP(statut='o', typ='TXM',
+         NOM_AFNOR      = SIMP(statut='f', typ='TXM',),
+         TYPE_MODELE    = SIMP(statut='f', typ='TXM', into=("REF", "PAR"),),
+         VARIANTE       = SIMP(statut='f', typ='TXM',
                                into=("A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
                                      "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                                      "U", "V", "W", "X", "Y", "Z",),),
-         TYPE_VALE      = SIMP(statut='o', typ='TXM', into=("NOMI", "MINI", "MAXI"),),
-         #NOM_MATER      = SIMP(statut='o', typ='TXM',),
-         #UNITE          = SIMP(statut='f', typ='I', defaut= 32,),
+         TYPE_VALE      = SIMP(statut='f', typ='TXM', into=("NOMI", "MINI", "MAXI"),),
+         # or
+         FICHIER        = SIMP(statut='f', typ=('Fichier','','Sauvegarde'),
+                               fr=tr("Nom du fichier de données à inclure")),
+
          EXTRACTION     = FACT(statut='f',
            COMPOR       = SIMP(statut='o', typ='TXM', max='**',),
            TEMP_EVAL    = SIMP(statut='o', typ='R',),
          ),
          UNITE_LONGUEUR = SIMP(statut='f', typ='TXM', into=("M", "MM"), defaut="M",),
+         PROL_DROITE     =SIMP(statut='f', typ='TXM', defaut="EXCLU", into=("CONSTANT", "LINEAIRE", "EXCLU")),
+         PROL_GAUCHE     =SIMP(statut='f', typ='TXM', defaut="EXCLU", into=("CONSTANT", "LINEAIRE", "EXCLU")),
          INFO           = SIMP(statut='f', typ='I', defaut= 1, into=(1, 2),),
 )
 
@@ -24068,7 +25754,7 @@ INCLUDE_MATERIAU = MACRO(nom="INCLUDE_MATERIAU",
 # ======================================================================
 # person_in_charge: j-pierre.lefebvre at edf.fr
 INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster,
-                    fr="Récupère différentes informations propres à l'exécution en cours",
+                    fr=tr("Récupère différentes informations propres à l'exécution en cours"),
                     reentrant='n',
                     UIinfo={"groupes":("Gestion du travail",)},
 
@@ -24078,9 +25764,9 @@ INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster,
          b_etat_unite   =BLOC(condition = "au_moins_un(LISTE_INFO, 'ETAT_UNITE')",
             regles=(UN_PARMI('UNITE','FICHIER'),),
             UNITE          =SIMP(statut='f',typ='I',val_min=1,val_max=99,max=1,
-                                 fr="Unité logique dont on veut obtenir l'état",),
-            FICHIER        =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),
-                                 fr="Nom du fichier dont on veut obtenir l'état",),
+                                 fr=tr("Unité logique dont on veut obtenir l'état"),),
+            FICHIER        =SIMP(statut='f',typ=('Fichier','','Sauvegarde'),validators=LongStr(1,255),
+                                 fr=tr("Nom du fichier dont on veut obtenir l'état"),),
          ),
          TITRE          =SIMP(statut='f',typ='TXM',max='**'),
          INFO           =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -24115,16 +25801,16 @@ def info_fonction_prod(self,ECART_TYPE,RMS,NOCI_SEISME,MAX,NORME, **args):
 INFO_FONCTION=MACRO(nom="INFO_FONCTION",
                     op=OPS('Macro.info_fonction_ops.info_fonction_ops'),
                     sd_prod=info_fonction_prod,
-                    fr="Opérations mathématiques sur des concepts de type fonction, " \
-                       "fonction_c ou nappe",
+                    fr=tr("Opérations mathématiques sur des concepts de type fonction, "
+                         "fonction_c ou nappe"),
                     reentrant='n',
                     UIinfo={"groupes":("Fonctions",)},
          regles=(UN_PARMI('MAX','RMS','NOCI_SEISME','NORME','ECART_TYPE',),),
-         RMS             =FACT(statut='f',fr="Valeur RMS d'une fonction",max='**',
+         RMS             =FACT(statut='f',fr=tr("Valeur RMS d'une fonction"),max='**',
            METHODE         =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
-           INST_INIT       =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
-           INST_FIN        =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
+           INST_INIT       =SIMP(statut='f',typ='R',fr=tr("Instant initial définissant le début du signal") ),
+           INST_FIN        =SIMP(statut='f',typ='R',fr=tr("Instant final définissant la fin du signal") ),
            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
            b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),),
@@ -24138,8 +25824,13 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",
            b_option_f      =BLOC(condition="""FONCTION != None""",
              OPTION          =SIMP(statut='f',typ='TXM',defaut="TOUT",validators=NoRepeat(),
                                    into=("INTE_ARIAS","POUV_DEST","INTE_SPEC","VITE_ABSO_CUMU",
-                                         "DUREE_PHAS_FORT","MAXI","ACCE_SUR_VITE","TOUT",), ),
-             b_amor_red          =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "INTE_SPEC")) """,
+                                         "DUREE_PHAS_FORT","MAXI","ACCE_SUR_VITE","ASA","TOUT",), ),
+            b_asa          =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "ASA")) """,
+                FREQ_FOND         =SIMP(statut='o',typ='R',val_min=0.E+0),
+                FREQ_PAS     =SIMP(statut='f',typ='R',defaut = 0.01 ),
+                NORME        =SIMP(statut='f',typ='R',defaut = 1.E+0 ),
+                RATIO     =SIMP(statut='f',typ='R',defaut = 0.40),),
+             b_amor_red          =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "INTE_SPEC","ASA" )) """,
                 AMOR_REDUIT     =SIMP(statut='o',typ='R'),),
              b_pesanteur         =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "INTE_ARIAS", "POUV_DEST", "DUREE_PHAS_FORT")) """,
                 PESANTEUR       =SIMP(statut='o',typ='R'),),
@@ -24166,19 +25857,19 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",
                       PRECISION       =SIMP(statut='o',typ='R'),),
            ),
          ),
-         MAX             =FACT(statut='f',fr="Extrémas locaux d'une fonction",
+         MAX             =FACT(statut='f',fr=tr("Extrémas locaux d'une fonction"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
            INTERVALLE      =SIMP(statut='f',typ='R',min=2,max='**',
-                               fr ="définition des bornes des intervalles sous forme de couples (xi_i1,xs_i1,xi_i2,xs_i2)"),
+                               fr =tr("définition des bornes des intervalles sous forme de couples (xi_i1,xs_i1,xi_i2,xs_i2)")),
          ),
-         NORME           =FACT(statut='f',fr="Norme L2 d'une fonction",
+         NORME           =FACT(statut='f',fr=tr("Norme L2 d'une fonction"),
             FONCTION      =SIMP(statut='o', typ=nappe_sdaster),
          ),
-         ECART_TYPE      =FACT(statut='f',fr="Ecart-type d'une fonction",
+         ECART_TYPE      =FACT(statut='f',fr=tr("Ecart-type d'une fonction"),
             METHODE       =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
             FONCTION      =SIMP(statut='o',typ=fonction_sdaster),
-            INST_INIT     =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
-            INST_FIN      =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
+            INST_INIT     =SIMP(statut='f',typ='R',fr=tr("Instant initial définissant le début du signal") ),
+            INST_FIN      =SIMP(statut='f',typ='R',fr=tr("Instant final définissant la fin du signal") ),
             CRITERE       =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),),
@@ -24206,21 +25897,21 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",
 # ======================================================================
 # person_in_charge: olivier.boiteau at edf.fr
 INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
-                fr="Calculer, imprimer, et sauvegarder le nombre de valeurs propres dans un contour donné",
+                fr=tr("Calculer, imprimer, et sauvegarder le nombre de valeurs propres dans un contour donné"),
             UIinfo={"groupes":("Résolution","Dynamique",)},
 
          TYPE_MODE       =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_COMPLEXE","DYNAMIQUE",
                                                                              "MODE_FLAMB",   "GENERAL"),
-                               fr="Type d analyse" ),
+                               fr=tr("Type d analyse") ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 
-         b_dynamique =BLOC(condition = "TYPE_MODE == 'DYNAMIQUE'",fr="Recherche du nombre de fréquences propres",
+         b_dynamique =BLOC(condition = "TYPE_MODE == 'DYNAMIQUE'",fr=tr("Recherche du nombre de fréquences propres"),
            MATR_RIGI       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r,
                                                  matr_asse_depl_c,matr_asse_gene_c) ),
            MATR_MASS       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
            FREQ            =SIMP(statut='o',typ='R',min=2,max='**',
                                  validators=AndVal((OrdList('croissant'), NoRepeat())),
-                                 fr="Liste de frequences" ),
+                                 fr=tr("Liste de frequences") ),
            COMPTAGE        =FACT(statut='d',
               METHODE          =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AUTO","STURM")),                
               SEUIL_FREQ       =SIMP(statut='f',typ='R',defaut= 1.E-2 ),  
@@ -24229,13 +25920,13 @@ INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
                                 ),
          ),
 
-         b_flambement =BLOC(condition = "TYPE_MODE == 'MODE_FLAMB'",fr="Recherche du nombre de charges critiques",
+         b_flambement =BLOC(condition = "TYPE_MODE == 'MODE_FLAMB'",fr=tr("Recherche du nombre de charges critiques"),
            MATR_RIGI       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r,
                                                  matr_asse_depl_c,matr_asse_gene_c) ),
            MATR_RIGI_GEOM  =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
            CHAR_CRIT       =SIMP(statut='o',typ='R',min=2,max='**',
                                  validators=AndVal((OrdList('croissant'), NoRepeat())),
-                                 fr="Liste de charges critiques" ),
+                                 fr=tr("Liste de charges critiques") ),
            COMPTAGE        =FACT(statut='d',
               METHODE          =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AUTO","STURM")),                
               SEUIL_CHAR_CRIT  =SIMP(statut='f',typ='R',defaut= 1.E-2 ),  
@@ -24244,7 +25935,7 @@ INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
                                 ),
          ),         
 
-         b_complexe  =BLOC(condition = "TYPE_MODE == 'MODE_COMPLEXE'",fr="Recherche du nombre de fréquences propres",
+         b_complexe  =BLOC(condition = "TYPE_MODE == 'MODE_COMPLEXE'",fr=tr("Recherche du nombre de fréquences propres"),
            MATR_RIGI       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r,
                                                  matr_asse_depl_c,matr_asse_gene_c) ),
            MATR_MASS       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
@@ -24259,14 +25950,14 @@ INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
                                ),
          ),
 
-         b_general  =BLOC(condition = "TYPE_MODE == 'GENERAL'",fr="Recherche du nombre de valeurs propres",
+         b_general  =BLOC(condition = "TYPE_MODE == 'GENERAL'",fr=tr("Recherche du nombre de valeurs propres"),
            MATR_A          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r,
                                                  matr_asse_depl_c,matr_asse_gene_c) ),
            MATR_B          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
            MATR_C          =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
            CHAR_CRIT       =SIMP(statut='f',typ='R',min=2,max='**',
                                  validators=AndVal((OrdList('croissant'), NoRepeat())),
-                                 fr="Liste de charges critiques" ),
+                                 fr=tr("Liste de charges critiques") ),
            b_contour  =BLOC(condition = "CHAR_CRIT == None",
              TYPE_CONTOUR    =SIMP(statut='f',typ='TXM',defaut="CERCLE",into=("CERCLE","CERCLE") ),        
              RAYON_CONTOUR   =SIMP(statut='o',typ='R',val_min=1.E-2 ),
@@ -24292,7 +25983,7 @@ INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
 #-------------------------------------------------------------------
 #  Mot-cles caches pour activer le parallelisme au sein d'une macro-commande
          PARALLELISME_MACRO=FACT(statut='d',min=0,
-           TYPE_COM   =SIMP(statut='c',typ='I',defaut=-999,into=(-999,1,2),fr="Type de communication"),
+           TYPE_COM   =SIMP(statut='c',typ='I',defaut=-999,into=(-999,1,2),fr=tr("Type de communication")),
          ),
 #-------------------------------------------------------------------
 
@@ -24317,7 +26008,7 @@ INFO_MODE=OPER(nom="INFO_MODE",op=32,sd_prod=table_sdaster,
 # person_in_charge: nicolas.sellenet at edf.fr
 INFO_RESU=PROC(nom="INFO_RESU",op=40,
                UIinfo={"groupes":("Impression","Utilitaires",)},
-               fr="Imprimer tous les champs présents dans une structure de données résultat",
+               fr=tr("Imprimer tous les champs présents dans une structure de données résultat"),
                RESULTAT=SIMP(statut='f',typ=resultat_sdaster),
                UNITE=SIMP(statut='f',typ='I',defaut=6),
 );
@@ -24342,7 +26033,7 @@ INFO_RESU=PROC(nom="INFO_RESU",op=40,
 INIT_COMPO=PROC(nom="INIT_COMPO",
                 op=  117,
                 UIinfo={"groupes":("Gestion du travail",)},
-                fr="Initialiser adresse component YACS",
+                fr=tr("Initialiser adresse component YACS"),
            COMPO           =SIMP(statut='o',typ='I',),
 )  ;
 
@@ -24365,7 +26056,7 @@ INIT_COMPO=PROC(nom="INIT_COMPO",
 # person_in_charge: xavier.desroches at edf.fr
 INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster,
             UIinfo={"groupes":("Post-traitements",)},
-                  fr="Définition d'une courbe dans un maillage 2D",reentrant='n',
+                  fr=tr("Définition d'une courbe dans un maillage 2D"),reentrant='n',
 
          MAILLAGE        =SIMP(statut='o',typ=(maillage_sdaster) ),
 
@@ -24446,7 +26137,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster,
 # person_in_charge: xavier.desroches at edf.fr
 INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster,
             UIinfo={"groupes":("Post-traitements",)},
-                  fr="Définir un chemin de type segment de droite dans un maillage 3D",reentrant='n',
+                  fr=tr("Définir un chemin de type segment de droite dans un maillage 3D"),reentrant='n',
          MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster),
          TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
          GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -24492,7 +26183,7 @@ def lire_champ_prod(TYPE_CHAM=None,**args):
 
 LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
                 UIinfo={"groupes":("Lecture","Résultats et champs",)},
-                fr="Lire un champ dans un fichier au format MED et le stocker dans un concept.",
+                fr=tr("Lire un champ dans un fichier au format MED et le stocker dans un concept."),
                 reentrant='n',
          MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster,),
          FORMAT          =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),),
@@ -24507,22 +26198,22 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
             NOM_CMP      =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
             NOM_CMP_MED  =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
             PROL_ZERO    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),
-               fr="Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)"),
+               fr=tr("Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)")),
             NUME_PT      =SIMP(statut='f',typ='I'  ,validators=NoRepeat(),max='**',),
             NUME_ORDRE   =SIMP(statut='f',typ='I'  ,validators=NoRepeat(),max='**',
-                           fr="Numero d ordre du champ à lire",ang="Rank of the field to be read" ),
-            INST         =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ),
+                           fr=tr("Numero d ordre du champ à lire"),),
+            INST         =SIMP(statut='f',typ='R',fr=tr("Instant associé"),),
 #
             b_precision     =BLOC(condition="(INST != None)",
                   CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),
-                  fr="Critère de précision sur le choix de l'instant associé",
-                  ang="Accuracy criterium over instant choice" ),
+                  fr=tr("Critère de précision sur le choix de l'instant associé"),
+                  ),
                   b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
                       PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
-                      fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),
+                      fr=tr("Précision sur le choix de l'instant associé"),),),
                   b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
                       PRECISION       =SIMP(statut='o',typ='R',
-                      fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),),
+                      fr=tr("Précision sur le choix de l'instant associé"),),),),
 #
             NOM_MAIL_MED =SIMP(statut='f',typ='TXM',),
                   ),
@@ -24535,6 +26226,43 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# person_in_charge: serguei.potapov at edf.fr
+
+LIRE_EUROPLEXUS = MACRO(nom="LIRE_EUROPLEXUS",
+                        op=OPS('Macro.lire_europlexus_ops.lire_europlexus_ops'),
+                        sd_prod=evol_noli,
+                        reentrant='n',
+                        UIinfo={"groupes":("Outils-métier","Dynamique",)},
+                        fr="Chainage Code_Aster-Europlexus",
+
+        UNITE_MED = SIMP(statut='o', typ='I',),
+        MODELE      = SIMP(statut='o',typ=modele_sdaster),
+        CARA_ELEM   = SIMP(statut='f',typ=cara_elem),
+        CHAM_MATER  = SIMP(statut='f',typ=cham_mater),
+        COMPORTEMENT  =C_COMPORTEMENT('CALC_EUROPLEXUS'),
+        EXCIT       = FACT(statut='f',max='**',
+           CHARGE         = SIMP(statut='o',typ=(char_meca,)),
+           FONC_MULT      = SIMP(statut='f',typ=(fonction_sdaster,)),
+          ),
+        INFO        = SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ),
+        ) ;
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -24563,8 +26291,8 @@ def lire_fonction_prod(self,TYPE,**args):
 LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",
                     op=OPS('Macro.lire_fonction_ops.lire_fonction_ops'),
                     sd_prod=lire_fonction_prod,
-                    fr="Lit les valeurs réelles dans un fichier de données représentant une " \
-                       "fonction et crée un concept de type fonction ou nappe",
+                    fr=tr("Lit les valeurs réelles dans un fichier de données représentant une "
+                         "fonction et crée un concept de type fonction ou nappe"),
                     reentrant='n',
                     UIinfo={"groupes":("Lecture","Fonctions",)},
          FORMAT          =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE"  ),
@@ -24585,7 +26313,7 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",
            NOM_PARA_FONC   =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
            INDIC_ABSCISSE  =SIMP(statut='o',typ='I',min=2,max=2,),
            INTERPOL_FONC   =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"),
-                                 fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"),
+                                 fr=tr("Type d'interpolation pour les abscisses et les ordonnées de la fonction")),
            PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
            PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
            DEFI_FONCTION   =FACT(statut='f',max='**',
@@ -24594,8 +26322,8 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",
          NOM_PARA        =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
          NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
          INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"),
-                               fr="Type d'interpolation pour les abscisses et les ordonnées de la " \
-                                  "fonction ou bien pour le paramètre de la nappe."),
+                               fr=tr("Type d'interpolation pour les abscisses et les ordonnées de la "
+                                    "fonction ou bien pour le paramètre de la nappe.")),
          PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
          PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
          VERIF           =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
@@ -24621,7 +26349,7 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",
 # ======================================================================
 # person_in_charge: Georges-cc.devesa at edf.fr
 LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene,
-                    fr="Création d'un vecteur assemblé à partir d'une base modale",
+                    fr=tr("Création d'un vecteur assemblé à partir d'une base modale"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)},           
          BASE            =SIMP(statut='o',typ=mode_meca),
@@ -24653,7 +26381,7 @@ LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene,
 # ======================================================================
 # person_in_charge: Georges-cc.devesa at edf.fr
 LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c,
-                    fr="Création d une matrice assemblée à partir de base modale",
+                    fr=tr("Création d une matrice assemblée à partir de base modale"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)},           
          BASE            =SIMP(statut='o',typ=mode_meca ),
@@ -24688,8 +26416,8 @@ LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c,
 LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",
                      op=OPS('Macro.lire_inte_spec_ops.lire_inte_spec_ops'),
                      sd_prod=interspectre,
-                     fr="Lecture sur un fichier externe de fonctions complexes pour " \
-                        "créer une matrice interspectrale",
+                     fr=tr("Lecture sur un fichier externe de fonctions complexes pour "
+                          "créer une matrice interspectrale"),
                      reentrant='n',
             UIinfo={"groupes":("Lecture","Fonctions",)},
          UNITE           =SIMP(statut='o',typ='I' ),
@@ -24724,20 +26452,16 @@ LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op=   1,sd_prod=maillage_sdaster,
-                   fr="Crée un maillage par lecture d'un fichier au format Aster ou Med",
-                   ang="Readings of a mesh file",
+                   fr=tr("Crée un maillage par lecture d'un fichier au format Aster ou Med"),
+                   
                    reentrant='n',
             UIinfo={"groupes":("Lecture","Maillage",)},
 
          UNITE           =SIMP(statut='f',typ='I',defaut= 20 ),
 
          FORMAT          =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
-                            fr="Format du fichier : ASTER ou MED.",
-                            ang="Format of the file : ASTER or MED.",),
-
-         ABSC_CURV       =FACT(statut='f',min=0,
-               TOUT          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
-         ),
+                            fr=tr("Format du fichier : ASTER ou MED."),
+                            ),
 
          VERI_MAIL       =FACT(statut='d',
                VERIF         =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
@@ -24745,22 +26469,22 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op=   1,sd_prod=maillage_sdaster,
          ),
 
          b_format_med =BLOC( condition = " ( FORMAT == 'MED' ) " ,
-                             fr="Informations complémentaires pour la lecture MED.",
-                             ang="Further information for MED readings.",
+                             fr=tr("Informations complémentaires pour la lecture MED."),
+                             
 
 # Pour une lecture dans un fichier MED, on peut préciser le nom sous lequel
 # le maillage y a été enregistré. Par défaut, on va le chercher sous le nom du concept à créer.
             NOM_MED    = SIMP(statut='f',typ='TXM',
-                              fr="Nom du maillage dans le fichier MED.",
-                              ang="Name of the mesh into the MED file.",),
+                              fr=tr("Nom du maillage dans le fichier MED."),
+                              ),
             INFO_MED   = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3) ),
 
             RENOMME = FACT(statut='f', max='**',
-                                 fr="Renommer un nom de groupe MED",
+                                 fr=tr("Renommer un nom de groupe MED"),
                  NOM_MED     = SIMP(statut='o', typ='TXM', validators=LongStr(1, 64),
-                                    fr="Nom du groupe dans le fichier MED"),
+                                    fr=tr("Nom du groupe dans le fichier MED")),
                  NOM         = SIMP(statut='o', typ=grma,
-                                    fr="Nom du groupe dans le maillage ASTER"),
+                                    fr=tr("Nom du groupe dans le maillage ASTER")),
             ),
          ),
 
@@ -24786,7 +26510,7 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op=   1,sd_prod=maillage_sdaster,
 # person_in_charge: serguei.potapov at edf.fr
 
 LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
-                 fr="Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS",
+                 fr=tr("Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS"),
                  reentrant='n',
             UIinfo={"groupes":("Lecture","Outils-métier",)},
          regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
@@ -24845,8 +26569,8 @@ def l_nom_cham_pas_elga() :
 
 LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
             UIinfo={"groupes":("Lecture","Resultats et champs",)},
-               fr="Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED,"
-                 +" des champs et les stocker dans une SD résultat",
+               fr=tr("Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED,"
+                  " des champs et les stocker dans une SD résultat"),
 
 
 # 0) mots cles generaux :
@@ -24924,7 +26648,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
 #           TEST            =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
            NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
            PROL_ZERO       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),
-             fr="Affecte des valeurs nulles la ou le champ n'est pas defini"),
+             fr=tr("Affecte des valeurs nulles la ou le champ n'est pas defini")),
            FORMAT_IDEAS    =FACT(statut='f',max='**',
              regles=(UN_PARMI('POSI_INST','POSI_FREQ'),),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=l_nom_cham_pas_elga()),
@@ -24950,18 +26674,18 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
 
 # 1-4 med :
 # ---------
-         b_med           =BLOC(condition = "FORMAT == 'MED'",fr="Nom du champ dans le fichier MED",
-           UNITE           =SIMP(statut='f',typ='I',defaut= 81, fr="Le fichier est : fort.n.",),
+         b_med           =BLOC(condition = "FORMAT == 'MED'",fr=tr("Nom du champ dans le fichier MED"),
+           UNITE           =SIMP(statut='f',typ='I',defaut= 81, fr=tr("Le fichier est : fort.n."),),
            FORMAT_MED      =FACT(statut='o',max='**',
              regles=(ENSEMBLE('NOM_CMP','NOM_CMP_MED'),UN_PARMI('NOM_CHAM_MED','NOM_RESU'),),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),),
-             NOM_CHAM_MED    =SIMP(statut='f',typ='TXM',               fr="Nom du champ dans le fichier MED.",  ),
-             NOM_RESU        =SIMP(statut='f',typ='TXM',               fr="Prefixe du nom de champ dans le fichier MED.",  ),
-             NOM_CMP         =SIMP(statut='f',typ='TXM',max='**',      fr="Nom des composantes dans ASTER.", ),
-             NOM_CMP_MED     =SIMP(statut='f',typ='TXM',max='**',      fr="Nom des composantes dans MED.", ),
+             NOM_CHAM_MED    =SIMP(statut='f',typ='TXM',               fr=tr("Nom du champ dans le fichier MED."),  ),
+             NOM_RESU        =SIMP(statut='f',typ='TXM',               fr=tr("Prefixe du nom de champ dans le fichier MED."),  ),
+             NOM_CMP         =SIMP(statut='f',typ='TXM',max='**',      fr=tr("Nom des composantes dans ASTER."), ),
+             NOM_CMP_MED     =SIMP(statut='f',typ='TXM',max='**',      fr=tr("Nom des composantes dans MED."), ),
            ),
            PROL_ZERO       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",),
-            fr="Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)"),
+            fr=tr("Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)")),
          ),
 
 # 2) blocs selon le type du resultat :
@@ -24976,7 +26700,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
 
 # 3) autres blocs :
 #---------------------------------
-         b_extrac        =BLOC(condition="1",fr="acces a un champ dans la structure de donnees resultat",
+         b_extrac        =BLOC(condition="1",fr=tr("acces a un champ dans la structure de donnees resultat"),
            regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST','FREQ','LIST_FREQ'),),
            TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
@@ -25018,7 +26742,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
 LIRE_TABLE=MACRO(nom="LIRE_TABLE",
                  op=OPS('Macro.lire_table_ops.lire_table_ops'),
                  sd_prod=table_sdaster,
-                 fr="Lecture d'un fichier contenant une table",
+                 fr=tr("Lecture d'un fichier contenant une table"),
                  UIinfo={"groupes":("Lecture","Tables",)},
          UNITE           = SIMP(statut='o', typ='I' ),
          FORMAT          = SIMP(statut='f', typ='TXM', into=("ASTER", "LIBRE", "TABLEAU"), defaut="TABLEAU"),
@@ -25048,7 +26772,7 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",
 # person_in_charge: harinaivo.andriambololona at edf.fr
 
 MAC_MODES=OPER(nom="MAC_MODES",op=  141,sd_prod=table_sdaster,
-               fr="Critere orthogonalite de modes propres",
+               fr=tr("Critere orthogonalite de modes propres"),
                reentrant='n',
                UIinfo={"groupes":("Résolution","Dynamique",)},
                regles=(PRESENT_PRESENT('IERI','MATR_ASSE'),),
@@ -25060,6 +26784,7 @@ MAC_MODES=OPER(nom="MAC_MODES",op=  141,sd_prod=table_sdaster,
          INFO       =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
 
+# -*- coding: utf-8 -*-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -25111,39 +26836,37 @@ def macr_adap_mail_prod(self, MAJ_CHAM, ADD_CHAM, ADAPTATION, **args):
 MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
                      op=OPS('Macro.macr_adap_mail_ops.macr_adap_mail_ops'),
                      sd_prod=macr_adap_mail_prod,
-                     fr="Adapter un maillage avec le logiciel HOMARD.",
-                     ang="Mesh adaptation with the HOMARD software.",
+                     fr=tr("Adapter un maillage avec le logiciel HOMARD."),
                      UIinfo={"groupes":("Maillage",)},
 #
 # 1. Le niveau d'information
 #
-  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)),
+  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1, 2, 3, 4)),
 #
 # 2. Les maillages
 # 2.1. Quel que soit le type de traitement, il faut donner le concept du maillage initial (entree)
 #
   MAILLAGE_N   = SIMP(statut='o',typ=maillage_sdaster,
-                      fr="Maillage avant adaptation",
-                      ang="Mesh before adaptation" ),
+                      fr=tr("Maillage avant adaptation"),
+                      ),
 #
 # 2.2. Si ce n'est pas une simple lecture :
 #
   b_maillage = BLOC( condition = " (ADAPTATION != 'LECTURE') " ,
-                          fr="Lectures de champs aux points de Gauss ou aux noeuds par element.",
-                          ang="Readings of the fields over the Gauss points.",
+                          fr=tr("Lectures de champs aux points de Gauss ou aux noeuds par element."),
 #
 # 2.2.1. Le concept du maillage final (sortie)
 #
     MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
-                        fr="Maillage après adaptation",
-                        ang="Mesh after adaptation" ),
+                        fr=tr("Maillage après adaptation"),
+                        ),
 #
 # 2.2.2. Eventuellement, on peut produire un maillage annexe
 #      Actuellement, c'est le maillage n+1, mais de degré différent.
 #
     MAILLAGE_NP1_ANNEXE = SIMP(statut='f',typ=CO,
-                              fr="Maillage annexe après adaptation",
-                              ang="Additional mesh after adaptation" ),
+                              fr=tr("Maillage annexe après adaptation"),
+                              ),
 #
   ) ,
 #
@@ -25161,16 +26884,15 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
                     into=("RAFF_DERA", "RAFFINEMENT", "DERAFFINEMENT", "RAFF_DERA_ZONE", \
                           "RAFFINEMENT_UNIFORME", "DERAFFINEMENT_UNIFORME", \
                           "MODIFICATION", "LECTURE", "RIEN"),
-                    fr="Pilotage de l'adaptation : selon un champ ou uniforme.",
-                    ang="Adaptation control: either among an field or uniform" ),
+                    fr=tr("Pilotage de l'adaptation : selon un champ ou uniforme."),
+                    ),
 #
 # 4. Pour de l'adaptation libre, il faut un champ d'indicateur
 #
   b_champ = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
                                 (ADAPTATION == 'RAFFINEMENT') or \
                                 (ADAPTATION == 'DERAFFINEMENT') " ,
-                  fr="Pour une adaptation libre, choix du champ définissant la région à raffiner/déraffiner",
-                  ang="For a free adaptation, selection of the field that defines the area for refinment/unrefinement",
+                  fr=tr("Pour une adaptation libre, choix du champ définissant la région à raffiner/déraffiner"),
 #
     regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
 #
@@ -25179,64 +26901,63 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 # 4.1.1. Sous forme de champ de grandeur
 #
     CHAM_GD    = SIMP(statut='f',typ=cham_gd_sdaster,
-                      fr="Champ de grandeur Code_Aster pilotant l'adaptation",
-                      ang="Code_Aster 'champ de grandeur' governing the adapatation" ),
+                      fr=tr("Champ de grandeur Code_Aster pilotant l'adaptation"),
+                      ),
 #
 # 4.1.2. Sous forme de concept resultat_sdaster
 #
     RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
-                      fr="Concept résultat Code_Aster contenant le champ",
-                      ang="The Code_Aster result with the field" ),
+                      fr=tr("Concept résultat Code_Aster contenant le champ"),
+                      ),
 #
     b_champ_adaptation = BLOC(condition="(RESULTAT_N != None)",
       NOM_CHAM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),
-                        fr="Champ dans le résultat",
-                        ang="The field in the result structure" ),
+                        fr=tr("Champ dans le résultat"),
+                        ),
     ),
 #
 # 4.1.4. La ou les composantes retenues
 #
     NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                          fr="Liste des composante(s) retenue(s) pour le champ.",
-                          ang="List of the selected component(s) for the field." ),
+                          fr=tr("Liste des composante(s) retenue(s) pour le champ."),
+                          ),
 #
 # 4.1.5. Le paramètre temporel pour le champ
 #
     b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)",
-                                fr="Choix éventuel du paramètre temporel pour le champ",
-                                ang="Time selection for the field (option)",
+                                fr=tr("Choix éventuel du paramètre temporel pour le champ"),
 #
       regles=(EXCLUS('NUME_ORDRE','INST'),),
 #
 # 4.1.5.1. Soit le numero d'ordre
 #
-      NUME_ORDRE = SIMP(statut='f',typ='I',
-                        fr="Numéro d ordre",
-                        ang="Rank" ),
+      NUME_ORDRE = SIMP(statut='f',typ='I',val_min=0,
+                        fr=tr("Numéro d ordre"),
+                        ),
 #
 # 4.1.5.2. Soit l'instant
 # 4.1.5.2.1. Sa valeur
 #
       INST       = SIMP(statut='f',typ='R',
-                        fr="Instant associé",
-                        ang="Instant" ),
+                        fr=tr("Instant associé"),
+                        ),
 #
 # 4.1.5.2.2. La précision du choix de l'instant
 #
       b_precision = BLOC(condition="(INST != None)",
-                         fr="Choix de la précision du choix de l'instant",
-                         ang="Precision for the choice of the instant",
+                         fr=tr("Choix de la précision du choix de l'instant"),
+
         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF", "ABSOLU",),
-                         fr="Critère de précision sur le choix de l'instant associé",
-                         ang="Accuracy criterium over the choice of the instant"),
+                         fr=tr("Critère de précision sur le choix de l'instant associé"),
+                         ),
         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
-                             fr="Précision relative sur le choix de l'instant associé",
-                             ang="Relative accuracy over the choice of the instant"),),
+                             fr=tr("Précision relative sur le choix de l'instant associé"),
+                             ),),
         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
             PRECISION       =SIMP(statut='o',typ='R',
-                             fr="Précision absolue sur le choix de l'instant associé",
-                             ang="Absolute accuracy over the choice of the instant"),),
+                             fr=tr("Précision absolue sur le choix de l'instant associé"),
+                             ),),
       ),
 #
     ),
@@ -25245,20 +26966,20 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 #
     USAGE_CMP = SIMP(statut='f',typ='TXM',defaut="NORME_L2",
                       into=("ABSOLU", "NORME_L2", "NORME_INFINIE", "RELATIF"),
-                      fr="Valeur absolue de la composante, ou norme du champ, ou valeur relative de la composante",
-                      ang="Absolute value of the component, or norm of the field, or relative value of the component" ),
+                      fr=tr("Valeur absolue de la composante, ou norme du champ, ou valeur relative de la composante"),
+                      ),
 #
 # 4.1.7. Usage du champ : la valeur par maille ou le max du saut entre mailles
 #
     USAGE_CHAMP = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE", "SAUT"),
-                        fr="Usage du champ : la valeur par maille ou le saut entre mailles voisines",
-                        ang="Use of the field: value over every mesh or jump between the neighbours" ),
+                        fr=tr("Usage du champ : la valeur par maille ou le saut entre mailles voisines"),
+                        ),
 #
 # 4.1.8. Initialisation de l'adaptation : raffinement ou déraffinement
 #
-    ADAP_INIT = SIMP(statut='f',typ='TXM',defaut="GARDER",into=("GARDER", "DERAFFINER"),
-                        fr="Initialisation de l'adaptation dans les régions sans indicateur : garder ou déraffiner",
-                        ang="Initialization of the adaptation in the areas without indicator: keep or unrefine" ),
+    ADAP_INIT = SIMP(statut='f',typ='TXM',defaut="GARDER",into=("GARDER", "RAFFINER", "DERAFFINER"),
+                        fr=tr("Initialisation de l'adaptation dans les régions sans indicateur : garder, raffiner ou déraffiner"),
+                        ),
 #
   ) ,
 #
@@ -25268,69 +26989,66 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 #
   b_critere_de_raffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
                                                  (ADAPTATION == 'RAFFINEMENT') " ,
-                                fr="Critère de raffinement.",
-                                ang="Refinement threshold.",
+                                fr=tr("Critère de raffinement."),
+
 #
     regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE', 'CRIT_RAFF_MS' ),),
 #
     CRIT_RAFF_ABS = SIMP(statut='f',typ='R',
-                         fr="Critère absolu",
-                         ang="Absolute threshold" ),
+                         fr=tr("Critère absolu"),
+                         ),
     CRIT_RAFF_REL = SIMP(statut='f',typ='R',val_min=0.0,val_max=1.0,
-                         fr="Critère relatif : fraction réelle entre 0. et 1.",
-                         ang="Relative threshold : ratio between 0. and 1." ),
+                         fr=tr("Critère relatif : fraction réelle entre 0. et 1."),
+                         ),
     CRIT_RAFF_PE  = SIMP(statut='f',typ='R',val_min=0.0,val_max=1.0,
-                         fr="Pourcentage de mailles : fraction réelle entre 0. et 1.",
-                         ang="Percentage of meshes: ratio between 0. and 1." ),
+                         fr=tr("Pourcentage de mailles : fraction réelle entre 0. et 1."),
+                         ),
     CRIT_RAFF_MS  = SIMP(statut='f',typ='R',
-                         fr="Critère absolu valant moyenne + n*sigma, n étant > 0",
-                         ang="Absolute threshold: mean + n*sigma, with n > 0" ),
+                         fr=tr("Critère absolu valant moyenne + n*sigma, n étant > 0"),
+                         ),
   ) ,
 #
 # 5.2. Pour le deraffinement :
 #
   b_critere_de_deraffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
                                                    (ADAPTATION == 'DERAFFINEMENT') " ,
-                                     fr="Critère de déraffinement.",
-                                     ang="Unrefinement threshold.",
+                                     fr=tr("Critère de déraffinement."),
 #
     regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE', 'CRIT_DERA_MS' ),),
 #
     CRIT_DERA_ABS = SIMP(statut='f',typ='R' ,
-                         fr="Critère absolu",
-                         ang="Absolute threshold" ),
+                         fr=tr("Critère absolu"),
+                         ),
     CRIT_DERA_REL = SIMP(statut='f',typ='R',val_min=0.0,val_max=1.0,
-                         fr="Critère relatif : fraction réelle entre 0. et 1.",
-                         ang="Relative threshold: ratio between 0. and 1." ),
+                         fr=tr("Critère relatif : fraction réelle entre 0. et 1."),
+                         ),
     CRIT_DERA_PE  = SIMP(statut='f',typ='R',val_min=0.0,val_max=1.0,
-                         fr="Pourcentage de mailles : fraction réelle entre 0. et 1.",
-                         ang="Percentage of meshes: ratio between 0. and 1." ),
+                         fr=tr("Pourcentage de mailles : fraction réelle entre 0. et 1."),
+                         ),
     CRIT_DERA_MS  = SIMP(statut='f',typ='R',
-                         fr="Critère absolu valant moyenne - n*sigma, n étant > 0",
-                         ang="Absolute threshold: mean - n*sigma, with n > 0" ),
+                         fr=tr("Critère absolu valant moyenne - n*sigma, n étant > 0"),
+                         ),
   ) ,
 #
 # 6. Pour de l'adaptation par zone, définitions des zones
 #
   b_zone = BLOC( condition = " (ADAPTATION == 'RAFF_DERA_ZONE') " ,
-                 fr="Pour une adaptation selon une zone à raffiner",
-                 ang="For adaptation among a zone",
+                 fr=tr("Pour une adaptation selon une zone à raffiner"),
 #
     ZONE = FACT(statut='o',min=1,max='**',
-                fr="Définition de zones à raffiner.",
-                ang="Refined zone definition.",
+                fr=tr("Définition de zones à raffiner ou déraffiner."),
 #
 # 6.1. Type de la zone
 #
       TYPE = SIMP(statut='o',typ='TXM',into=("RECTANGLE", "BOITE", "DISQUE", "SPHERE", "CYLINDRE", "DISQUE_PERCE", "TUYAU"),
-                  fr="Type de la zone",
-                  ang="Type of the zone" ),
+                  fr=tr("Type de la zone"),
+                  ),
 #
 # 6.2. Usage de la zone
 #
       USAGE = SIMP(statut='f',typ='TXM',into=("RAFFINEMENT","DERAFFINEMENT"),defaut="RAFFINEMENT",
-                   fr="Zone pour raffiner",
-                   ang="Zone: refinement" ),
+                   fr=tr("Zone pour raffiner ou déraffiner"),
+                   ),
 #
 # Ne sachant pas exploiter les blocs, je mets des regles
 #
@@ -25347,108 +27065,108 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 # 6.3.1. Incontournables
 #
 ##gn      b_z_boiteXY = BLOC( condition = " (TYPE == 'RECTANGLE') or (TYPE == 'BOITE') " ,
-##gn                          fr="X et Y mini/maxi pour un rectangle ou un parallelepipede.",
-##gn                          ang="X and Y min/max for a rectangle or a parallelepipedic box",
+##gn                          fr=tr("X et Y mini/maxi pour un rectangle ou un parallelepipede."),
+##gn
       X_MINI = SIMP(statut='f',typ='R',
-                    fr="Abscisse minimum de la boite",
-                    ang="Minimum X for the box"),
+                    fr=tr("Abscisse minimum de la boite"),
+                    ),
       X_MAXI = SIMP(statut='f',typ='R',
-                    fr="Abscisse maximum de la boite",
-                    ang="Maximum X for the box"),
+                    fr=tr("Abscisse maximum de la boite"),
+                    ),
       Y_MINI = SIMP(statut='f',typ='R',
-                    fr="Ordonnée minimum de la boite",
-                    ang="Minimum Y for the box"),
+                    fr=tr("Ordonnée minimum de la boite"),
+                    ),
       Y_MAXI = SIMP(statut='f',typ='R',
-                      fr="Abscisse maximum de la boite",
-                      ang="Maximum Y for the box"),
+                      fr=tr("Abscisse maximum de la boite"),
+                      ),
 ##gn      ) ,
 #
 # 6.3.2. Complement pour une boite parallelepipedique
 #
 ##gn      b_z_boiteZ = BLOC( condition = " (TYPE == 'BOITE') " ,
-##gn                         fr="Z mini/maxi pour un parallelepipede.",
-##gn                         ang="Z min/max for a parallelepipedic box",
+##gn                         fr=tr("Z mini/maxi pour un parallelepipede."),
+##gn
       Z_MINI = SIMP(statut='f',typ='R',
-                    fr="Cote minimum de la boite",
-                    ang="Minimum Z for the box"),
+                    fr=tr("Cote minimum de la boite"),
+                    ),
       Z_MAXI = SIMP(statut='f',typ='R',
-                    fr="Cote maximum de la boite",
-                    ang="Maximum Z for the box"),
+                    fr=tr("Cote maximum de la boite"),
+                    ),
 ##gn      ) ,
 #
 # 6.4. Rayon pour un disque, une sphere ou un cylindre
 #
 ##gn      b_z_rayon = BLOC( condition = " (TYPE == 'DISQUE') or (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') " ,
-##gn                        fr="Le rayon d'un disque, d'une sphere ou d'un cylindre.",
-##gn                        ang="The radius of a disk or of a sphere or of a cylinder.",
-      RAYON = SIMP(statut='f',typ='R',
-                   fr="Rayon",
-                   ang="Radius"),
+##gn                        fr=tr("Le rayon d'un disque, d'une sphere ou d'un cylindre."),
+##gn
+      RAYON = SIMP(statut='f',typ='R',val_min=0.0,
+                   fr=tr("Rayon"),
+                   ),
 ##gn      ) ,
 #
 # 6.5. Pour un disque plein ou perce, une sphere
 # 6.5.1. Incontournables
 #
 ##gn      b_z_di_sp_XY = BLOC( condition = " (TYPE == 'DISQUE') or (TYPE == 'SPHERE') or (TYPE == 'DISQUE_PERCE') " ,
-##gn                           fr="X et Y du centre d'un disque plein ou perce, d'une sphere.",
-##gn                           ang="X and Y of the centre of a disk or of a sphere.",
+##gn                           fr=tr("X et Y du centre d'un disque plein ou perce, d'une sphere."),
+##gn
       X_CENTRE = SIMP(statut='f',typ='R',
-                      fr="Abscisse du centre du disque ou de la sphère",
-                      ang="X for the center of the disk or of the sphere"),
+                      fr=tr("Abscisse du centre du disque ou de la sphère"),
+                      ),
       Y_CENTRE = SIMP(statut='f',typ='R',
-                      fr="Ordonnée du centre du disque ou de la sphère",
-                      ang="Y for the center of the disk or of the sphere"),
+                      fr=tr("Ordonnée du centre du disque ou de la sphère"),
+                      ),
 ##gn      ) ,
 #
 # 6.5.2. Complement pour une sphere
 #
 ##gn      b_z_sp_Z = BLOC( condition = " (TYPE == 'SPHERE') " ,
-##gn                       fr="Cote du centre de la sphere.",
-##gn                       ang="Z for the center of the sphere.",
+##gn                       fr=tr("Cote du centre de la sphere."),
+##gn
        Z_CENTRE = SIMP(statut='f',typ='R',
-                       fr="Cote du centre de la sphère",
-                       ang="Z for the center of the sphere"),
+                       fr=tr("Cote du centre de la sphère"),
+                       ),
 ##gn      ) ,
 #
 # 6.6. Rayons interieur et exterieur pour un disque perce ou un tuyau
 #
 ##gn      b_z_rayon_int_ext = BLOC( condition = " (TYPE == 'DISQUE_PERCE') or (TYPE == 'TUYAU') " ,
-##gn                                fr="Le rayon d'un disque perce ou d'un tuyau.",
-##gn                                ang="The radius of a holed disk or of a pipe.",
-      RAYON_INT = SIMP(statut='f',typ='R',
-                       fr="Rayon intérieur",
-                       ang="Internal radius"),
-      RAYON_EXT = SIMP(statut='f',typ='R',
-                       fr="Rayon extérieur",
-                       ang="External radius"),
+##gn                                fr=tr("Le rayon d'un disque perce ou d'un tuyau."),
+##gn
+      RAYON_INT = SIMP(statut='f',typ='R',val_min=0.0,
+                       fr=tr("Rayon intérieur"),
+                       ),
+      RAYON_EXT = SIMP(statut='f',typ='R',val_min=0.0,
+                       fr=tr("Rayon extérieur"),
+                       ),
 ##gn      ) ,
 #
 # 6.7. Un cylindre ou un tuyau
 #
 ##gn      b_z_cylindre_tuyau = BLOC( condition = " (TYPE == 'CYLINDRE') or (TYPE == 'TUYAU') " ,
-##gn                                 fr="Pour un cylindre ou un tuyau.",
-##gn                                 ang="For a cylinder or a pipe.",
+##gn                                 fr=tr("Pour un cylindre ou un tuyau."),
+##gn
       X_AXE = SIMP(statut='f',typ='R',
-                   fr="Abscisse du vecteur directeur de l'axe",
-                   ang="X for the axial vector"),
+                   fr=tr("Abscisse du vecteur directeur de l'axe"),
+                   ),
       Y_AXE = SIMP(statut='f',typ='R',
-                   fr="Ordonnée du vecteur directeur de l'axe",
-                   ang="Y for the axial vector"),
+                   fr=tr("Ordonnée du vecteur directeur de l'axe"),
+                   ),
       Z_AXE = SIMP(statut='f',typ='R',
-                   fr="Cote du vecteur directeur de l'axe",
-                   ang="Z for the axial vector"),
+                   fr=tr("Cote du vecteur directeur de l'axe"),
+                   ),
       X_BASE = SIMP(statut='f',typ='R',
-                    fr="Abscisse d'un point de la base, sur l'axe",
-                    ang="X for the basis, on the axis"),
+                    fr=tr("Abscisse d'un point de la base, sur l'axe"),
+                    ),
       Y_BASE = SIMP(statut='f',typ='R',
-                    fr="Ordonnée d'un point de la base, sur l'axe",
-                    ang="Y for the basis, on the axis"),
+                    fr=tr("Ordonnée d'un point de la base, sur l'axe"),
+                    ),
       Z_BASE = SIMP(statut='f',typ='R',
-                    fr="Cote d'un point de la base, sur l'axe",
-                    ang="Z for the basis, on the axis"),
-      HAUTEUR = SIMP(statut='f',typ='R',
-                     fr="Hauteur",
-                     ang="Height"),
+                    fr=tr("Cote d'un point de la base, sur l'axe"),
+                    ),
+      HAUTEUR = SIMP(statut='f',typ='R',val_min=0.0,
+                     fr=tr("Hauteur"),
+                     ),
 ##gn     ) ,
 #
     ) ,
@@ -25459,32 +27177,32 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 # 7.1. Pour le raffinement :
 #
   b_niveau_maximum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+                                         (ADAPTATION == 'RAFF_DERA_ZONE') or \
                                          (ADAPTATION == 'RAFFINEMENT') or \
-                                         (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \
-                                         (ADAPTATION == 'RAFF_DERA_ZONE') " ,
-                           fr="Profondeur maximale de raffinement",
-                           ang="Maximum depth for the refinement",
+                                         (ADAPTATION == 'RAFFINEMENT_UNIFORME') " ,
+                           fr=tr("Profondeur maximale de raffinement"),
 #
-    NIVE_MAX = SIMP(statut='f',typ='I',
-                    fr="Niveau maximum de profondeur de raffinement",
-                    ang="Maximum level for the refinement"),
+    NIVE_MAX = SIMP(statut='f',typ='I',val_min=1,
+                    fr=tr("Niveau maximum de profondeur de raffinement"),
+                    ),
 #
-    DIAM_MIN = SIMP(statut='f',typ='R',
-                    fr="Diamètre minimal des mailles",
-                    ang="Minimal diameter for the meshes" ),
+    DIAM_MIN = SIMP(statut='f',typ='R',val_min=0.0,
+                    fr=tr("Diamètre minimal des mailles"),
+                    ),
 #
   ) ,
 #
 # 7.2. Pour le deraffinement :
 #
   b_niveau_minimum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+                                         (ADAPTATION == 'RAFF_DERA_ZONE') or \
                                          (ADAPTATION == 'DERAFFINEMENT') or \
                                          (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " ,
-                           fr="Niveau minimum de profondeur de déraffinement",
-                           ang="Minimum level for the unrefinement",
-    NIVE_MIN = SIMP(statut='f',typ='I',
-                    fr="Niveau minimum de profondeur de déraffinement",
-                    ang="Minimum level for the unrefinement"),
+                           fr=tr("Niveau minimum de profondeur de déraffinement"),
+
+    NIVE_MIN = SIMP(statut='f',typ='I',val_min=0,
+                    fr=tr("Niveau minimum de profondeur de déraffinement"),
+                    ),
   ) ,
 #
 # 8. Filtrage de l'adaptation par des groupes
@@ -25495,16 +27213,15 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
                                                    (ADAPTATION == 'RAFF_DERA_ZONE') or \
                                                    (ADAPTATION == 'DERAFFINEMENT') or \
                                                    (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " ,
-                                fr="Filtrage de l'adaptation par des groupes.",
-                                ang="Filtering of adaptation by the groups.",
+                                fr=tr("Filtrage de l'adaptation par des groupes."),
 #
     GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                    fr="Liste des groupes de mailles pour le filtrage de l'adaptation.",
-                    ang="List of the groups of meshes for filtering of the adaptation." ),
+                    fr=tr("Liste des groupes de mailles pour le filtrage de l'adaptation."),
+                    ),
 #
     GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**',
-                    fr="Liste des groupes de noeuds pour le filtrage de l'adaptation.",
-                    ang="List of the groups of nodes for filtering of the adaptation." ),
+                    fr=tr("Liste des groupes de noeuds pour le filtrage de l'adaptation."),
+                    ),
   ) ,
 #
 # 9. Suivi d'une frontière
@@ -25512,97 +27229,141 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 # 9.1. Definition d'une frontière par un maillage (valable seulement pour des frontières 1D)
 #
   MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
-                           fr="Maillage de la frontière discrète à suivre",
-                           ang="Discrete boundary mesh" ),
+                           fr=tr("Maillage de la frontière discrète à suivre"),
+                           ),
 #
   b_FRONTIERE = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
-                      fr="Information complémentaire sur la frontière discrète",
-                      ang="Further information about discrete boundary",
+                      fr=tr("Information complémentaire sur la frontière discrète"),
+
 #
     GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                          fr="Liste des groupes de mailles définissant la frontière discrète",
-                          ang="Mesh groups which define the discrete boundary" ),
+                          fr=tr("Liste des groupes de mailles définissant la frontière discrète"),
+                          ),
 #
   ) ,
 #
 # 9.2. Definition analytique d'une frontière
 #
   FRONTIERE_ANALYTIQUE = FACT(statut='f',max='**',
-                              fr="Definition analytique de frontières a suivre.",
-                              ang="Analytical definition of a boundary.",
+                              fr=tr("Definition analytique de frontières à suivre."),
 #
 # 9.2.1. Nom de la frontière
 #
     NOM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
-               fr="Nom de la frontière analytique",
-               ang="Name of the analytic boundary" ),
+               fr=tr("Nom de la frontière analytique"),
+               ),
 #
 # 9.2.2. Type de la frontière
 #
-    TYPE = SIMP(statut='o',typ='TXM',into=("SPHERE", "CYLINDRE"),
-                fr="Type de la frontière analytique",
-                ang="Type of the analytic boundary" ),
+    TYPE = SIMP(statut='o',typ='TXM',into=("SPHERE", "CYLINDRE", "CONE_A", "CONE_R", "TORE"),
+                fr=tr("Type de la frontière analytique"),
+                ),
 #
-# 9.2.3. Pour une sphere, un cylindre par ses rayons : rayon et centre
+# 9.2.3. Pour une sphere, un cylindre, un cone defini par ses rayons ou un tore : rayon et centre
+#        Pour un tore, c'est le rayon de revolution
 #
-    b_fr_rayon = BLOC( condition = " (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') " ,
-                       fr="Le rayon et le centre d'une sphère ou d'un cylindre.",
-                       ang="The radius and the centre of a sphere or of a cylinder.",
-      RAYON = SIMP(statut='o',typ='R',
-                   fr="Rayon",
-                   ang="Radius"),
+    b_fr_rayon = BLOC( condition = " (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') or (TYPE == 'CONE_R') or (TYPE == 'TORE') " ,
+                       fr=tr("Le rayon et le centre d'une sphère, d'un cylindre, d'un cone ou d'un tore."),
+
+      RAYON = SIMP(statut='o',typ='R',val_min=0.0,
+                   fr=tr("Rayon"),
+                   ),
       X_CENTRE = SIMP(statut='o',typ='R',
-                      fr="Abscisse du centre",
-                      ang="X for the center"),
+                      fr=tr("Abscisse du centre"),
+                      ),
       Y_CENTRE = SIMP(statut='o',typ='R',
-                      fr="Ordonnée du centre",
-                      ang="Y for the center"),
+                      fr=tr("Ordonnée du centre"),
+                      ),
       Z_CENTRE = SIMP(statut='o',typ='R',
-                      fr="Cote du centre",
-                      ang="Z for the center"),
+                      fr=tr("Cote du centre"),
+                      ),
     ) ,
 #
-# 9.2.4. Pour un cylindre defini par axe et angle : axe
+# 9.2.4. Pour un cylindre, un cone defini par axe et angle ou un tore : axe
 #
-    b_fr_cylindre = BLOC( condition = " (TYPE == 'CYLINDRE') " ,
-                          fr="Pour un cylindre.",
-                          ang="For a cylinder.",
+    b_fr_cylindre = BLOC( condition = " (TYPE == 'CYLINDRE') or (TYPE == 'CONE_A') or (TYPE == 'TORE') " ,
+                          fr=tr("Pour un cylindre, un cone ou un tore."),
+
       X_AXE = SIMP(statut='o',typ='R',
-                   fr="Abscisse du vecteur directeur de l'axe",
-                   ang="X for the axial vector"),
+                   fr=tr("Abscisse du vecteur directeur de l'axe"),
+                   ),
       Y_AXE = SIMP(statut='o',typ='R',
-                   fr="Ordonnée du vecteur directeur de l'axe",
-                   ang="Y for the axial vector"),
+                   fr=tr("Ordonnée du vecteur directeur de l'axe"),
+                   ),
       Z_AXE = SIMP(statut='o',typ='R',
-                   fr="Cote du vecteur directeur de l'axe",
-                   ang="Z for the axial vector"),
+                   fr=tr("Cote du vecteur directeur de l'axe"),
+                   ),
+    ) ,
+#
+# 9.2.5. Pour un cone defini par ses rayons : second couple (rayon et centre)
+#
+    b_fr_rayon2 = BLOC( condition = " (TYPE == 'CONE_R') " ,
+                       fr=tr("Le second rayon et centre d'un cone."),
+      RAYON2 = SIMP(statut='o',typ='R',val_min=0.,
+                   fr=tr("Rayon numéro 2"),
+                   ),
+      X_CENTRE2 = SIMP(statut='o',typ='R',
+                      fr=tr("Abscisse du centre numéro 2"),
+                      ),
+      Y_CENTRE2 = SIMP(statut='o',typ='R',
+                      fr=tr("Ordonnée du centre numéro 2"),
+                      ),
+      Z_CENTRE2 = SIMP(statut='o',typ='R',
+                      fr=tr("Cote du centre numéro 2"),
+                      ),
+    ) ,
+#
+# 9.2.6. Pour un cone defini par axe et angle : centre et angle
+#
+    b_fr_angle = BLOC( condition = " (TYPE == 'CONE_A') " ,
+                       fr=tr("L'angle et le centre d'un cone."),
+      ANGLE = SIMP(statut='o',typ='R',val_min=0.0,
+                   fr=tr("Angle en degré"),
+                  ),
+      X_CENTRE = SIMP(statut='o',typ='R',
+                      fr=tr("Abscisse du centre"),
+                     ),
+      Y_CENTRE = SIMP(statut='o',typ='R',
+                      fr=tr("Ordonnée du centre"),
+                     ),
+      Z_CENTRE = SIMP(statut='o',typ='R',
+                      fr=tr("Cote du centre"),
+                     ),
     ) ,
 #
-# 9.2.7. Groupe(s) lie(s) a la frontière
+# 9.2.7. Pour un tore : rayon primaire
+#
+    b_fr_rayon3 = BLOC( condition = " (TYPE == 'TORE') " ,
+                       fr=tr("Le rayon primaire du tore."),
+      RAYON2 = SIMP(statut='o',typ='R',val_min=0.0,
+                   fr=tr("Rayon primaire"),
+                   ),
+    ) ,
+
+# 9.2.8. Groupe(s) lie(s) a la frontière
 #
     GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**',
-                    fr="Liste des groupes de mailles placées sur la frontière",
-                    ang="Groups of meshes which are located on the boundary" ),
+                    fr=tr("Liste des groupes de mailles placées sur la frontière"),
+                    ),
 #
   ) ,
 #
 # 10. mise à jour de champs sur le nouveau maillage
 #
   MAJ_CHAM = FACT(statut='f',max='**',
-                  fr="Mise à jour de champs sur le nouveau maillage.",
-                  ang="Updating of the fields over the new mesh.",
+                  fr=tr("Mise à jour de champs sur le nouveau maillage."),
 #
 # 10.1. Le nom du champ de grandeur qui contiendra le resultat de la mise a jour
 #
     CHAM_MAJ = SIMP(statut='o',typ=CO,
-                    fr="Nom du champ de grandeur qui contiendra le champ mis à jour",
-                    ang="Name of the field for the updated field"),
+                    fr=tr("Nom du champ de grandeur qui contiendra le champ mis à jour"),
+                    ),
 #
 # 10.2. Le type du champ qui contiendra le resultat de la mise a jour
 #
     TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO( ('NOEU', 'ELEM', 'ELNO', 'ELGA') ),
-                     fr="Type du champ qui contiendra le champ mis à jour",
-                     ang="Type of the field for the updated field" ),
+                     fr=tr("Type du champ qui contiendra le champ mis à jour"),
+                     ),
 #
 # 10.3. Le champ a interpoler
 #
@@ -25611,69 +27372,66 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 # 10.3.1. Sous forme de champ de grandeur
 #
     CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster,
-                   fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour",
-                   ang="Champ de grandeur with the field to be updated" ),
+                   fr=tr("Champ de grandeur Code_Aster contenant le champ à mettre à jour"),
+                   ),
 #
 # 10.3.2. Sous forme de champ dans un resultat
 #
     RESULTAT = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
-                    fr="Résultat contenant le champ à mettre à jour",
-                    ang="Result with the field to be updated" ),
+                    fr=tr("Résultat contenant le champ à mettre à jour"),
+                    ),
 #
     b_nom_du_champ = BLOC(condition="(RESULTAT != None)",
-                          fr="Choix éventuel du nom du champ à interpoler",
-                          ang="Selection for the name of the field (option)",
+                          fr=tr("Choix éventuel du nom du champ à interpoler"),
 #
       NOM_CHAM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),
-                      fr="Nom du champ à mettre à jour",
-                      ang="Name of the field to be updated" ),
+                      fr=tr("Nom du champ à mettre à jour"),
+                      ),
 #
     ),
 #
 # 10.4. Les composantes
 #
     NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                   fr="Liste des composante(s) retenue(s) pour le champ.",
-                   ang="List of the selected component(s) for the field." ),
+                   fr=tr("Liste des composante(s) retenue(s) pour le champ."),
+                   ),
 #
 # 10.5. Le paramètre temporel pour le champ a interpoler
 #
     b_parametre_temporel = BLOC(condition="(RESULTAT != None)",
-                                fr="Choix éventuel du paramètre temporel pour le champ à interpoler",
-                                ang="Time selection for the field (option)",
+                                fr=tr("Choix éventuel du paramètre temporel pour le champ à interpoler"),
 #
       regles=(EXCLUS('NUME_ORDRE','INST'),),
 #
 # 10.5.1. Soit le numero d'ordre
 #
-      NUME_ORDRE = SIMP(statut='f',typ='I',
-                        fr="Numéro d ordre du champ à mettre à jour",
-                        ang="Rank of the field to be updated" ),
+      NUME_ORDRE = SIMP(statut='f',typ='I',val_min=0,
+                        fr=tr("Numéro d ordre du champ à mettre à jour"),
+                        ),
 #
 # 10.5.2. Soit l'instant
 # 10.5.2.1. Sa valeur
 #
       INST = SIMP(statut='f',typ='R',
-                  fr="Instant associé",
-                  ang="Instant" ),
+                  fr=tr("Instant associé"),
+                  ),
 #
 # 10.5.2.2. La précision du choix de l'instant
 #
       b_precision = BLOC(condition="(INST != None)",
-                         fr="Choix de la précision du choix de l'instant",
-                         ang="Selection for the choice of the instant",
+                         fr=tr("Choix de la précision du choix de l'instant"),
 #
         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF", "ABSOLU",),
-                         fr="Critère de précision sur le choix de l'instant associé",
-                         ang="Accuracy criterium over the choice of the instant"),
+                         fr=tr("Critère de précision sur le choix de l'instant associé"),
+                         ),
         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
-                             fr="Précision relative sur le choix de l'instant associé",
-                             ang="Relative accuracy over the choice of the instant"),),
+                             fr=tr("Précision relative sur le choix de l'instant associé"),
+                             ),),
         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
             PRECISION       =SIMP(statut='o',typ='R',
-                             fr="Précision absolue sur le choix de l'instant associé",
-                             ang="Absolute accuracy over the choice of the instant"),),
+                             fr=tr("Précision absolue sur le choix de l'instant associé"),
+                             ),),
 #
       ),
 #
@@ -25683,153 +27441,169 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",
 #
     TYPE_MAJ = SIMP(statut='f',typ='TXM',defaut="AUTO",
                     into=("AUTO", "ISOP2"),
-                    fr="Type de mise à jour : automatique ou iso-P2",
-                    ang="Type of the updating" ),
+                    fr=tr("Type de mise à jour : automatique ou iso-P2"),
+                    ),
   ),
 #
 # 11. Les modifications
 #
   b_modifications = BLOC( condition = " (ADAPTATION == 'MODIFICATION') " ,
-                          fr="Modification de maillage.",
-                          ang="Modification of the mesh.",
+                          fr=tr("Modification de maillage."),
 #
       #regles=(AU_MOINS_UN('DEGRE','JOINT'),),
 #
 # 11.1. Changement de degre
 #
       DEGRE         = SIMP(statut='o',typ='TXM',into=("OUI",),
-                          fr="Changement de degré du maillage",
-                          ang="Modification of the degree of the mesh" ),
+                          fr=tr("Changement de degré du maillage"),
+                          ),
+#
+# 11.2. Création des joints
+#
+      #JOINT         = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          #fr=tr("Creations des joints"),
+                          #),
 #
   ) ,
 #
 # 12. Le modele pour les lectures de champs aux points de Gauss ou aux noeuds par element
 #
   b_lectures = BLOC( condition = " (ADAPTATION == 'LECTURE') " ,
-                          fr="Lectures de champs aux points de Gauss.",
-                          ang="Readings of the fields over the Gauss points.",
+                          fr=tr("Lectures de champs aux points de Gauss."),
 #
       MODELE        = SIMP(statut='o',typ=modele_sdaster,
-                          fr="Modèle",
-                          ang="Model" ),
+                          fr=tr("Modèle"),
+                          ),
 #
   ) ,
 #
 # 13. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
 #
   b_analyses = BLOC( condition = " (ADAPTATION != 'LECTURE') " ,
-                     fr="Analyse du maillage.",
-                     ang="Analysis of the mesh.",
+                     fr=tr("Analyse du maillage."),
 #
 # 13.1. Nombre de noeuds et mailles
 #
-    NOMBRE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                          fr="Nombre de noeuds et de mailles du maillage",
-                          ang="Number of nodes and meshes in the mesh" ),
+    NOMBRE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON"),
+                          fr=tr("Nombre de noeuds et de mailles du maillage"),
+                          ),
 #
 # 13.2. Determination de la qualité des mailles du maillage
 #
-    QUALITE        = SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Qualité du maillage",
-                          ang="Quality of the mesh" ),
+    QUALITE        = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Qualité des mailles du maillage."),
+                          ),
 #
 # 13.3. Connexite du maillage
 #
-    CONNEXITE      = SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Connexité du maillage.",
-                          ang="Connexity of the mesh." ),
+    CONNEXITE      = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Connexité du maillage."),
+                          ),
 #
 # 13.4. Taille des sous-domaines du maillage
 #
-    TAILLE         = SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Tailles des sous-domaines du maillage.",
-                          ang="Sizes of mesh sub-domains." ),
+    TAILLE         = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Tailles des sous-domaines du maillage."),
+                          ),
 #
 # 13.5. Controle de la non-interpenetration des mailles
 #
-    INTERPENETRATION=SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Controle de la non interpénétration des mailles.",
-                          ang="Overlapping checking." ),
+    INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Controle de la non interpénétration des mailles."),
+                          ),
 #
 # 13.6. Propriétés du maillage de calcul
 #
-    PROP_CALCUL    = SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Propriétés du maillage de calcul.",
-                          ang="Properties of the calculation mesh." ),
+    PROP_CALCUL    = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Propriétés du maillage de calcul."),
+                          ),
 #
 # 13.7. Determination des diametres des mailles du maillage
 #
-    DIAMETRE       = SIMP(statut='f',typ='TXM',into=("OUI",),
-                          fr="Diamètre du maillage",
-                          ang="Diameters of the mesh" ),
+    DIAMETRE       = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON"),
+                          fr=tr("Diamètre des mailles du maillage."),
+                          ),
 #
   ) ,
 #
-# 14. champs supplementaires sur le nouveau maillage
+# 14. Champs supplémentaires sur le nouveau maillage
 #
   ADD_CHAM = FACT(statut='f',max='**',
-                  fr="Champs supplementaires sur le nouveau maillage.",
-                  ang="Additional fields over the new mesh.",
+                  fr=tr("Champs supplémentaires sur le nouveau maillage."),
 #
 # 14.1. Le nom du champ de grandeur qui contiendra le nouveau champ
 #
     CHAM_GD = SIMP(statut='o',typ=CO,
-                  fr="Nom du champ de grandeur qui contiendra le champ supplementaire",
-                  ang="Name of the field for the additional field"),
+                  fr=tr("Nom du champ de grandeur qui contiendra le champ supplémentaire"),
+                  ),
 #
 # 14.2. La categorie du champ supplementaire
 #
-    CHAM_CAT = SIMP(statut='o',typ='TXM',into=("NIVEAU", "DIAMETRE"),
-                    fr="Categorie du champ supplementaire : niveau ou diametre",
-                    ang="Category of the additional field: level or diameter" ),
+    CHAM_CAT = SIMP(statut='o',typ='TXM',into=("NIVEAU", "QUALITE", "DIAMETRE"),
+                    fr=tr("Catégorie du champ supplémentaire : niveau, qualité ou diamètre"),
+                    ),
+#
+  ) ,
+#
+# 15. Unites logiques pour les historiques
+#
+  b_unite_hist = BLOC( condition = " (ADAPTATION != 'LECTURE') " ,
+                                fr=tr("Gestions des historiques.",),
+#
+  UNITE_HIST_IN = SIMP(statut='f',typ='I',val_min=1,
+                       fr=tr("Unite logique d'un historique en entrée" ),
+                      ),
+#
+  UNITE_HIST_OUT = SIMP(statut='f',typ='I',val_min=1,
+                        fr=tr("Unite logique d'un historique en sortie"),
+                       ),
 #
   ) ,
 #
-# 15. Les options avancées
-# 15.1. Langue des messages issus de HOMARD
+# 16. Les options avancées
+# 16.1. Langue des messages issus de HOMARD
 #
   LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
                 into=("FRANCAIS", "FRENCH", "ANGLAIS", "ENGLISH",),
-                fr="Langue des messages issus de HOMARD.",
-                ang="Language for HOMARD messages." ),
+                fr=tr("Langue des messages issus de HOMARD."),
+                ),
 #
-# 15.2. Gestion des mailles acceptees dans le maillage initial
+# 16.2. Gestion des mailles acceptees dans le maillage initial
 #       "HOMARD" : exclusivement les mailles pouvant etre decoupees (defaut)
 #       "IGNORE_PYRA" : elles sont ignorées
 #
   b_autres_mailles = BLOC( condition = " (ADAPTATION != 'LECTURE') " ,
-                           fr="Gestion des pyramides.",
-                           ang="Pyramids.",
+                           fr=tr("Gestion des pyramides."),
 #
     ELEMENTS_ACCEPTES = SIMP(statut='f',typ='TXM',defaut="HOMARD",into=("HOMARD", "IGNORE_PYRA"),
-                             fr="Acceptation des mailles dans le maillage initial",
-                             ang="Elements in the very first mesh" ),
+                             fr=tr("Acceptation des mailles dans le maillage initial"),
+                             ),
 #
   ) ,
 #
-# 15.3. Version de HOMARD
+# 16.3. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_6",
-                        into=("V10_6", "V10_N", "V10_N_PERSO"),
-                        fr="Version de HOMARD",
-                        ang="HOMARD release"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V11_2",
+                        into=("V11_2", "V11_N", "V11_N_PERSO"),
+                        fr=tr("Version de HOMARD"),
+                        ),
 #
-# 15.4. Exécutable pilotant HOMARD
+# 17. Les options de débogage
+# 17.1. Exécutable pilotant HOMARD
 #
   LOGICIEL = SIMP(statut='f',typ='TXM',
-                  fr="Logiciel pilotant HOMARD",
-                  ang="HOMARD software"),
+                  fr=tr("Logiciel pilotant HOMARD"),
+                  ),
 #
-# 15.5. Unite logique d'un fichier à ajouter a HOMARD.Configuration
+# 17.2. Unite logique d'un fichier à ajouter à HOMARD.Configuration
 #
-  b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \
-                                (VERSION_HOMARD == 'V10_N_PERSO') " ,
-                                fr="Fichier supplementaire.",
-                                ang="Additional file.",
+  b_unite = BLOC( condition = " (VERSION_HOMARD == 'V11_N') or \
+                                (VERSION_HOMARD == 'V11_N_PERSO') " ,
+                                fr=tr("Fichier supplémentaire."),
 #
-  UNITE = SIMP(statut='f',typ='I',
-               fr="Unite logique a ajouter a HOMARD.Configuration",
-               ang="Additional file to HOMARD.Configuration" ),
+  UNITE = SIMP(statut='f',typ='I',val_min=1,
+               fr=tr("Unite logique à ajouter à HOMARD.Configuration"),
+               ),
 #
   ) ,
 #
@@ -25864,8 +27638,8 @@ def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,RESU_THER,*
 MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",
                        op=OPS('Macro.macr_ascouf_calc_ops.macr_ascouf_calc_ops'),
                        sd_prod=macr_ascouf_calc_prod,
-                       fr="Réalise l'analyse thermomécanique du coude dont le maillage a " \
-                          "été concu par MACR_ASCOUF_MAIL",
+                       fr=tr("Réalise l'analyse thermomécanique du coude dont le maillage a "
+                            "été concu par MACR_ASCOUF_MAIL"),
                        reentrant='n',
                        UIinfo={"groupes":("Résolution","Outils-métier",)},
 
@@ -25876,11 +27650,6 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",
                                      "SOUS_EPAIS_COUDE"
                                      ) ),
 
-         CL_BOL_P2_GV    =FACT(statut='f',
-           ANGLE           =SIMP(statut='o',typ='R' ),
-           AZIMUT          =SIMP(statut='f',typ='R',defaut= 90. ),
-         ),
-
          MAILLAGE        =SIMP(statut='o',typ=maillage_sdaster ),
          MODELE          =SIMP(statut='o',typ=CO,),
          CHAM_MATER      =SIMP(statut='f',typ=CO,),
@@ -25969,11 +27738,11 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",
            FORMAT          =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
                                  into=("RESULTAT","ASTER","IDEAS","CASTEM") ),
 
-           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr=tr("version Ideas"),
              VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
            ),
 
-           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr=tr("version Castem"),
              NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
            ),
 
@@ -26005,7 +27774,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",
 MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",
                        op=OPS('Macro.macr_ascouf_mail_ops.macr_ascouf_mail_ops'),
                        sd_prod=maillage_sdaster,
-                       fr="Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)",
+                       fr=tr("Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)"),
                        UIinfo={"groupes":("Maillage","Outils-métier",)},
                        reentrant='n',
 
@@ -26032,7 +27801,7 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",
               DEXT            =SIMP(statut='o',typ='R' ),
               EPAIS           =SIMP(statut='o',typ='R' ),
               SUR_EPAIS       =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
-              BOL_P2          =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
+              BOL_P2          =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE") ),
            ),
            b_transf_tube   =BLOC(condition = "TRANSFORMEE == 'TUBE' ",
               TRAN_EPAIS      =SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON") ),
@@ -26052,7 +27821,7 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",
                       DEXT            =SIMP(statut='o',typ='R' ),
                       EPAIS           =SIMP(statut='o',typ='R' ),
                       SUR_EPAIS       =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
-                      BOL_P2          =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
+                      BOL_P2          =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE") ),
               ),
            ),
          ),
@@ -26121,10 +27890,10 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",
            regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
            FORMAT          =SIMP(statut='f',typ='TXM',defaut="ASTER",
                                  into=("ASTER","IDEAS","CASTEM") ),
-           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr=tr("version Ideas"),
              VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
            ),
-           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr=tr("version Castem"),
              NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
            ),
            FICHIER         =SIMP(statut='f',typ='TXM' ),
@@ -26164,8 +27933,8 @@ def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_
 MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",
                       op=OPS('Macro.macr_aspic_calc_ops.macr_aspic_calc_ops'),
                       sd_prod=macr_aspic_calc_prod,
-                      fr="Réalise un calcul prédéfini de piquages sains ou fissurés " \
-                         "ainsi que les post-traitements associés ",
+                      fr=tr("Réalise un calcul prédéfini de piquages sains ou fissurés "
+                           "ainsi que les post-traitements associés "),
                       UIinfo={"groupes":("Résolution","Outils-métier",)},
                       reentrant='n',
 
@@ -26271,16 +28040,16 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",
            FORMAT          =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
                                  into=("RESULTAT","ASTER","CASTEM","IDEAS")),
 
-           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr=tr("version Ideas"),
              VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
            ),
 
-           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr=tr("version Castem"),
              NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
            ),
 
            b_extrac        =BLOC(condition="((FORMAT=='IDEAS')or(FORMAT=='CASTEM'))",
-                                 fr="extraction d un champ de grandeur",
+                                 fr=tr("extraction d un champ de grandeur"),
              regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST'),),
              NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","SIEQ_ELNO","TEMP")),
 
@@ -26318,7 +28087,7 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",
                       op=OPS('Macro.macr_aspic_mail_ops.macr_aspic_mail_ops'),
                       sd_prod=maillage_sdaster,
                       reentrant='n',
-                      fr="Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)",
+                      fr=tr("Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)"),
                       UIinfo={"groupes":("Maillage","Outils-métier",)},
 
          EXEC_MAILLAGE   =FACT(statut='o',
@@ -26379,11 +28148,11 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",
            regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
            FORMAT          =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS","CASTEM")),
 
-           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr=tr("version Ideas"),
              VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
            ),
 
-           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr=tr("version Castem"),
              NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
            ),
            FICHIER         =SIMP(statut='f',typ='TXM'),
@@ -26417,68 +28186,68 @@ MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",
                        sd_prod=table_sdaster,
                        reentrant='n',
                        UIinfo={"groupes":("Modélisation",)},
-                       fr="Calculer les caractéristiques d'une section transversale de " \
-                          "poutre à partir d'un maillage 2D de la section",
+                       fr=tr("Calculer les caractéristiques d'une section transversale de "
+                            "poutre à partir d'un maillage 2D de la section"),
          regles=(
             EXCLUS('SYME_Y','GROUP_MA_BORD'),
             EXCLUS('SYME_Z','GROUP_MA_BORD'),
          ),
 
-         MAILLAGE    =SIMP(statut='f',typ=maillage_sdaster, fr="Nom du concept maillage"),
+         MAILLAGE    =SIMP(statut='f',typ=maillage_sdaster, fr=tr("Nom du concept maillage")),
          b_maillage  =BLOC(
             condition = "MAILLAGE == None",
             regles=( PRESENT_PRESENT('FORMAT','UNITE') ),
             FORMAT   =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
-                           fr="Format du fichier"),
+                           fr=tr("Format du fichier")),
             UNITE    =SIMP(statut='f',typ='I',defaut= 20,
-                           fr="Unite correspondant au format du fichier maillage"),
+                           fr=tr("Unite correspondant au format du fichier maillage")),
          ),
 
          ORIG_INER      =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0),
-                              fr="Point par rapport auquel sont calculées les inerties"),
+                              fr=tr("Point par rapport auquel sont calculées les inerties")),
          INFO           =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
 
          TABLE_CARA     =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",),
 
-         SYME_Y         =SIMP(statut='f',typ='TXM',into=("OUI",), fr="demi maillage par rapport a y=0"),
-         SYME_Z         =SIMP(statut='f',typ='TXM',into=("OUI",), fr="demi maillage par rapport a z=0"),
+         SYME_Y         =SIMP(statut='f',typ='TXM',into=("OUI",), fr=tr("demi maillage par rapport a y=0")),
+         SYME_Z         =SIMP(statut='f',typ='TXM',into=("OUI",), fr=tr("demi maillage par rapport a z=0")),
 
          GROUP_MA       =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                              fr="Calcul des caractéristiques équivalentes à plusieurs sections disjointes"),
+                              fr=tr("Calcul des caractéristiques équivalentes à plusieurs sections disjointes")),
 
          GROUP_MA_BORD  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                              fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"),
+                              fr=tr("Groupe(s) de mailles linéiques, bord(s) de(s) section(s)")),
 
          b_nom =BLOC(
             condition = """(TABLE_CARA == 'OUI') and (GROUP_MA == None)""",
             NOM   =SIMP(statut='f',typ='TXM',max=1,validators=LongStr(1,8),
-                        fr="Nom de la section, 8 caractères maximum.")
+                        fr=tr("Nom de la section, 8 caractères maximum."))
          ),
 
          b_gma_bord  =BLOC(
             condition = "GROUP_MA_BORD != None",
-            fr=" calcul des carac. mecaniques",
+            fr=tr(" calcul des carac. mecaniques"),
             regles=(UN_PARMI('NOEUD','GROUP_NO')),
             NOEUD          =SIMP(statut='f',typ=no,max='**',
-                                 fr="Simplement pour empecher des pivots nuls le cas echeant. "
-                                    "Fournir un noeud quelconque"),
+                                 fr=tr("Simplement pour empecher des pivots nuls le cas echeant. "
+                                      "Fournir un noeud quelconque")),
             GROUP_NO       =SIMP(statut='f',typ=grno,max='**',
-                                 fr="Simplement pour empecher des pivots nuls le cas echeant. "
-                                    "Fournir un noeud quelconque par GROUP_MA"),
+                                 fr=tr("Simplement pour empecher des pivots nuls le cas echeant. "
+                                      "Fournir un noeud quelconque par GROUP_MA")),
             GROUP_MA_INTE  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                                 fr="groupes de mailles linéiques bordant des trous dans la section"),
+                                 fr=tr("groupes de mailles linéiques bordant des trous dans la section")),
           ),
 
          b_reseau = BLOC(
             condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""",
-            fr=" calcul des coef de cisaillement équivalents a un reseau de poutres",
+            fr=tr(" calcul des coef de cisaillement équivalents a un reseau de poutres"),
             regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,),
             LONGUEUR =SIMP(statut='f',typ='R',
-                           fr="Longueur du réseau de poutres"),
+                           fr=tr("Longueur du réseau de poutres")),
             MATERIAU =SIMP(statut='f',typ=mater_sdaster,
-                           fr="Materiau elastique lineaire du reseau"),
+                           fr=tr("Materiau elastique lineaire du reseau")),
             LIAISON  =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"),
-                           fr="type de conditions aux limites sur le plancher supérieur" ),
+                           fr=tr("type de conditions aux limites sur le plancher supérieur") ),
          ),
 )
 
@@ -26512,21 +28281,21 @@ MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",
                    sd_prod=macr_ecla_pg_prod,
                    reentrant='n',
                    UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
-                   fr="Permettre la visualisation des champs aux points de Gauss d'une " \
-                      "SD_RESULTAT sans lissage ni interpolation",
+                   fr=tr("Permettre la visualisation des champs aux points de Gauss d'une "
+                        "SD_RESULTAT sans lissage ni interpolation"),
 
              # SD résultat ,modèle et champs à "éclater" :
-             RESU_INIT       =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à éclater",),
-             MODELE_INIT     =SIMP(statut='o',typ=modele_sdaster,fr="MODELE à éclater"),
+             RESU_INIT       =SIMP(statut='o',typ=resultat_sdaster,fr=tr("RESULTAT à éclater"),),
+             MODELE_INIT     =SIMP(statut='o',typ=modele_sdaster,fr=tr("MODELE à éclater")),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),),
 
              # paramètres numériques de la commande :
-             SHRINK          =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
-             TAILLE_MIN      =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
+             SHRINK          =SIMP(statut='f',typ='R',defaut= 0.9, fr=tr("Facteur de réduction") ),
+             TAILLE_MIN      =SIMP(statut='f',typ='R',defaut= 0.0, fr=tr("Taille minimale d'un coté") ),
 
              # concepts produits par la commande :
-             RESULTAT        =SIMP(statut='o',typ=CO,fr="SD_RESULTAT résultat de la commande"),
-             MAILLAGE        =SIMP(statut='o',typ=CO,fr="MAILLAGE associé aux cham_no de la SD_RESULTAT"),
+             RESULTAT        =SIMP(statut='o',typ=CO,fr=tr("SD_RESULTAT résultat de la commande")),
+             MAILLAGE        =SIMP(statut='o',typ=CO,fr=tr("MAILLAGE associé aux cham_no de la SD_RESULTAT")),
 
              # Sélection éventuelle d'un sous-ensemble des éléments à visualiser :
              TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -26577,7 +28346,7 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
                      sd_prod=macr_ecre_calc_prod,
                      reentrant='n',
                      UIinfo={"groupes":("Résolution","Outils-métier",)},
-                     fr="Procedure de couplage avec Ecrevisse",
+                     fr=tr("Procedure de couplage avec Ecrevisse"),
 
                      regles = (UN_PARMI('LOGICIEL','VERSION'),),
 
@@ -26590,34 +28359,34 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 #      *******************************************
 
          FISSURE            =FACT(statut='o',min=1,max=1,
-           LONGUEUR            =SIMP(statut='o',typ='R',val_min=0.E+0,fr="Longueur de la fissure [zl]"),
-           RUGOSITE            =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]"),
-           ANGLE               =SIMP(statut='o',typ='R',fr="Angle par rapport a l'ascendante verticale (degres)"),
-           ZETA                =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]"),
-           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]"),
-           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique",
+           LONGUEUR            =SIMP(statut='o',typ='R',val_min=0.E+0,fr=tr("Longueur de la fissure [zl]")),
+           RUGOSITE            =SIMP(statut='o',typ='R',fr=tr("Rugosite absolu (metres) [eps]")),
+           ANGLE               =SIMP(statut='o',typ='R',fr=tr("Angle par rapport a l'ascendante verticale (degres)")),
+           ZETA                =SIMP(statut='o',typ='R',fr=tr("Coefficient de la perte de charge singuliere a l'entree [zeta]")),
+           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr=tr("Type de section [is]")),
+           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr=tr("Fissure a section elliptique"),
              LISTE_COTES_AH      =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant le grand axe de la section",
+                                       fr=tr("Liste des cotes des points definissant le grand axe de la section"),
                                        validators=NoRepeat()),
              LISTE_VAL_AH        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant le grand axe de la section",),
+                                       fr=tr("Liste des valeurs des points definissant le grand axe de la section"),),
              LISTE_COTES_BL      =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant le petit axe de la section",
+                                       fr=tr("Liste des cotes des points definissant le petit axe de la section"),
                                        validators=NoRepeat()),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant le petit axe de la section",),
+                                       fr=tr("Liste des valeurs des points definissant le petit axe de la section"),),
            ),
-           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire",
+           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr=tr("Fissure a section rectangulaire"),
              LISTE_COTES_AH      =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant la hauteur de la section",
+                                       fr=tr("Liste des cotes des points definissant la hauteur de la section"),
                                        validators=NoRepeat()),
              LISTE_VAL_AH        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant la hauteur de la section",),
+                                       fr=tr("Liste des valeurs des points definissant la hauteur de la section"),),
              LISTE_COTES_BL      =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant la largeur de la section",
+                                       fr=tr("Liste des cotes des points definissant la largeur de la section"),
                                        validators=NoRepeat()),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant la largeur de la section",),
+                                       fr=tr("Liste des valeurs des points definissant la largeur de la section"),),
            ),
          ),
 
@@ -26626,28 +28395,28 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 #      ********************************
 
          ECOULEMENT         =FACT(statut='f',min=1,max=1,
-           PRES_ENTREE         =SIMP(statut='o',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ),
-           PRES_SORTIE         =SIMP(statut='o',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ),
-           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ),
-           b_condition_1       =BLOC(condition="FLUIDE_ENTREE==1",fr="Eau sous-refroidie ou saturee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           PRES_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Pression de stagnation a l'entree (Pa) [pe]") ),
+           PRES_SORTIE         =SIMP(statut='o',typ='R',fr=tr("Pression de stagnation a la sortie (Pa) [ps]") ),
+           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr=tr("Condition du fluide a l'entree [iflow]") ),
+           b_condition_1       =BLOC(condition="FLUIDE_ENTREE==1",fr=tr("Eau sous-refroidie ou saturee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
-           b_condition_2       =BLOC(condition="FLUIDE_ENTREE==2",fr="Fluide diphasique",
-             TITR_MASS           =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
+           b_condition_2       =BLOC(condition="FLUIDE_ENTREE==2",fr=tr("Fluide diphasique"),
+             TITR_MASS           =SIMP(statut='o',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
            ),
-           b_condition_3       =BLOC(condition="FLUIDE_ENTREE==3",fr="Vapeur saturee ou surchauffee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           b_condition_3       =BLOC(condition="FLUIDE_ENTREE==3",fr=tr("Vapeur saturee ou surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
-           b_condition_4       =BLOC(condition="FLUIDE_ENTREE==4",fr="Air + vapeur surchauffee",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
-             PRES_PART           =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+           b_condition_4       =BLOC(condition="FLUIDE_ENTREE==4",fr=tr("Air + vapeur surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
+             PRES_PART           =SIMP(statut='o',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
            ),
-           b_condition_5       =BLOC(condition="FLUIDE_ENTREE==5",fr="Air + vapeur saturee",
-             TITR_MASS           =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
-             PRES_PART           =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+           b_condition_5       =BLOC(condition="FLUIDE_ENTREE==5",fr=tr("Air + vapeur saturee"),
+             TITR_MASS           =SIMP(statut='o',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
+             PRES_PART           =SIMP(statut='o',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
            ),
-           b_condition_6       =BLOC(condition="FLUIDE_ENTREE==6",fr="Air seul",
-             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+           b_condition_6       =BLOC(condition="FLUIDE_ENTREE==6",fr=tr("Air seul"),
+             TEMP_ENTREE         =SIMP(statut='o',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
            ),
          ),
 
@@ -26657,25 +28426,25 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 
          TEMPERATURE        =FACT(statut='f',min=1,max=1,
            GRADIENT            =SIMP(statut='o',typ='TXM',into=("FOURNI","IMPOSE","CALCULE"),
-                                     fr="Modele de calcul du gradient de temperature [imograd]" ),
-           b_gradient_fourni   =BLOC(condition="GRADIENT=='FOURNI'",fr="Distribution de temperature fournie [imograd=-1]",
-             LISTE_COTES_TEMP    =SIMP(statut='o',typ='R',max='**',fr="Liste des cotes pour les temperatures",
+                                     fr=tr("Modele de calcul du gradient de temperature [imograd]") ),
+           b_gradient_fourni   =BLOC(condition="GRADIENT=='FOURNI'",fr=tr("Distribution de temperature fournie [imograd=-1]"),
+             LISTE_COTES_TEMP    =SIMP(statut='o',typ='R',max='**',fr=tr("Liste des cotes pour les temperatures"),
                                        validators=NoRepeat() ),
-             LISTE_VAL_TEMP      =SIMP(statut='o',typ='R',max='**',fr="Liste des valeurs de temperature", ),
+             LISTE_VAL_TEMP      =SIMP(statut='o',typ='R',max='**',fr=tr("Liste des valeurs de temperature"), ),
            ),
-           b_gradient_impose   =BLOC(condition="GRADIENT=='IMPOSE'",fr="Distribution imposee de temperature [imograd=0]",
+           b_gradient_impose   =BLOC(condition="GRADIENT=='IMPOSE'",fr=tr("Distribution imposee de temperature [imograd=0]"),
              TEMP1               =SIMP(statut='o',typ='R',
-                                       fr="Gradient de temperature de la paroi le long de l'ecoulement (degC/m) [tm1]", ),
-             TEMP2               =SIMP(statut='o',typ='R',fr="Temperature de la paroi a l'entree (degC) [tm2]", ),
+                                       fr=tr("Gradient de temperature de la paroi le long de l'ecoulement (degC/m) [tm1]"), ),
+             TEMP2               =SIMP(statut='o',typ='R',fr=tr("Temperature de la paroi a l'entree (degC) [tm2]"), ),
            ),
-           b_gradient_calcule  =BLOC(condition="GRADIENT=='CALCULE'",fr="Profil de temperature calcule [imograd=1]",
-             EPAISSEUR_PAROI     =SIMP(statut='o',typ='R',fr="Epaisseur de la paroi (m) [epp]", ),
+           b_gradient_calcule  =BLOC(condition="GRADIENT=='CALCULE'",fr=tr("Profil de temperature calcule [imograd=1]"),
+             EPAISSEUR_PAROI     =SIMP(statut='o',typ='R',fr=tr("Epaisseur de la paroi (m) [epp]"), ),
              CONVECTION_AMONT    =SIMP(statut='o',typ='R',
-                                       fr="Coefficient de convection a la surface de la paroi cote amont (W/degC/m2) [alphe]", ),
+                                       fr=tr("Coefficient de convection a la surface de la paroi cote amont (W/degC/m2) [alphe]"), ),
              CONVECTION_AVAL     =SIMP(statut='o',typ='R',
-                                       fr="Coefficient de convection a la surface de la paroi cote aval (W/degC/m2) [alphs]", ),
-             LAMBDA              =SIMP(statut='o',typ='R',fr="Conduction thermique de la paroi (W/degC/m) [lambd]", ),
-             TEMP_FLUIDE_AVAL    =SIMP(statut='o',typ='R',fr="Temperature du fluide cote aval (degC) [ts]", ),
+                                       fr=tr("Coefficient de convection a la surface de la paroi cote aval (W/degC/m2) [alphs]"), ),
+             LAMBDA              =SIMP(statut='o',typ='R',fr=tr("Conduction thermique de la paroi (W/degC/m) [lambd]"), ),
+             TEMP_FLUIDE_AVAL    =SIMP(statut='o',typ='R',fr=tr("Temperature du fluide cote aval (degC) [ts]"), ),
            ),
          ),
 
@@ -26685,22 +28454,22 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 
          MODELE_ECRE        =FACT(statut='f',min=1,max=1,
            IVENAC              =SIMP(statut='f', typ='I', into=(0,1), defaut=0,
-                                     fr="Calcul ECREVISSE avec prise en compte de la vena contracta"),
+                                     fr=tr("Calcul ECREVISSE avec prise en compte de la vena contracta")),
            ECOULEMENT          =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"),
-                                     fr="Type de modele d'ecoulement diphasique [imod]" ),
-           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele",
-             PRESS_EBULLITION    =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]"),
+                                     fr=tr("Type de modele d'ecoulement diphasique [imod]") ),
+           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr=tr("Modele d'ecoulement gele"),
+             PRESS_EBULLITION    =SIMP(statut='o',typ='R',fr=tr("Pression d'ebullition [corrp*psat(t)]")),
            ),
-           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr="Correlation de frottement [ifrot]"),
-           b_frottement        =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele",
-             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]"),
-             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]"),
+           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr=tr("Correlation de frottement [ifrot]")),
+           b_frottement        =BLOC(condition="FROTTEMENT<0",fr=tr("Modele d'ecoulement gele"),
+             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr=tr("Coefficient de Reynolds limite [relim]")),
+             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr=tr("Coefficient de frottement impose [frtlim]")),
            ),
 
-           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr="Transfert de chaleur [ichal]"),
-           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique",
-             XMINCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"),
-             XMAXCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"),
+           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr=tr("Transfert de chaleur [ichal]")),
+           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr=tr("Cas diphasique"),
+             XMINCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux min [xminch]")),
+             XMAXCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux max [xmaxch]")),
            ),
          ),
 
@@ -26710,11 +28479,11 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 
          CONVERGENCE        =FACT(statut='f',min=1,max=1,
            KGTEST              =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0,
-                                     fr="Parametre de l'algorithme iteratif [kgtest]" ),
+                                     fr=tr("Parametre de l'algorithme iteratif [kgtest]") ),
            ITER_GLOB_MAXI      =SIMP(statut='f',typ='I',defaut= 400,
-                                     fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ),
+                                     fr=tr("Nombre maximum d'iterations de la methode de Newton [itnmax]") ),
            CRIT_CONV_DEBI      =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5,
-                                     fr="Critere de convergence en debit [precdb]" ),
+                                     fr=tr("Critere de convergence en debit [precdb]") ),
          ),
 
 
@@ -26722,7 +28491,7 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",
 #      *******
 
          COURBES            =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE",
-                                  fr="Generation eventuelle des courbes" ),
+                                  fr=tr("Generation eventuelle des courbes") ),
          LOGICIEL           =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),),
          VERSION            =SIMP(statut='f',typ='TXM',into = ("3.2.1",) ),
          ENTETE             =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ),
@@ -26764,7 +28533,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
                      sd_prod=macr_ecrevisse_prod,
                      reentrant='f',
                      UIinfo={"groupes":("Résolution","Outils-métier",)},
-                     fr="Procedure de couplage avec Ecrevisse",
+                     fr=tr("Procedure de couplage avec Ecrevisse"),
 
        reuse  = SIMP(statut='f',typ='evol_noli'),
        regles = (EXCLUS('TEMPER','ETAT_INIT'),
@@ -26794,29 +28563,29 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
 #      DONNEES GEOMETRIQUES RELATIVES A LA FISSURE
 #      *******************************************
          FISSURE            =FACT(statut='o',min=1,max='**',
-           PREFIXE_FICHIER     =SIMP(statut='f',typ='TXM',validators=LongStr(1,8)),
+           PREFIXE_FICHIER     =SIMP(statut='o',typ='TXM',validators=LongStr(1,8)),
            GROUP_MA            =SIMP(statut='o',typ=grma,validators=NoRepeat(),min=2,max=2,
-                                     fr="Groupe(s) des noeuds definissant les levres de la fissure"),
+                                     fr=tr("Groupe(s) des noeuds definissant les levres de la fissure")),
            GROUP_NO_ORIG       =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2),
            GROUP_NO_EXTR       =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2),
-           ZETA                =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]" ),
-           RUGOSITE            =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]" ),
+           ZETA                =SIMP(statut='o',typ='R',fr=tr("Coefficient de la perte de charge singuliere a l'entree [zeta]") ),
+           RUGOSITE            =SIMP(statut='o',typ='R',fr=tr("Rugosite absolu (metres) [eps]") ),
            TORTUOSITE          =SIMP(statut='f',typ='R',defaut=1.0, val_min=0., val_max=1.0,
-                                       fr="Coefficient de tortuosite de la fissure" ),
-           OUVERT_REMANENTE    =SIMP(statut='o',typ='R',val_min=0.,fr="Ouverture remanente"),
-           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]" ),
-           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique",
+                                       fr=tr("Coefficient de tortuosite de la fissure") ),
+           OUVERT_REMANENTE    =SIMP(statut='o',typ='R',val_min=0.,fr=tr("Ouverture remanente")),
+           SECTION             =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr=tr("Type de section [is]") ),
+           b_section_ellipse   =BLOC(condition="SECTION=='ELLIPSE'",fr=tr("Fissure a section elliptique"),
              LISTE_COTES_BL      =SIMP(statut='f',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant le petit axe de la section",
+                                       fr=tr("Liste des cotes des points definissant le petit axe de la section"),
                                        validators=NoRepeat() ),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant le petit axe de la section", ),
+                                       fr=tr("Liste des valeurs des points definissant le petit axe de la section"), ),
            ),
-           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire",
+           b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr=tr("Fissure a section rectangulaire"),
              LISTE_COTES_BL      =SIMP(statut='f',typ='R',max='**',
-                                       fr="Liste des cotes des points definissant la largeur de la section",validators=NoRepeat()),
+                                       fr=tr("Liste des cotes des points definissant la largeur de la section"),validators=NoRepeat()),
              LISTE_VAL_BL        =SIMP(statut='o',typ='R',max='**',
-                                       fr="Liste des valeurs des points definissant la largeur de la section", ),
+                                       fr=tr("Liste des valeurs des points definissant la largeur de la section"), ),
            ),
          ),
 
@@ -26827,88 +28596,88 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
                                   regles=(UN_PARMI('PRES_ENTREE','PRES_ENTREE_FO'),
                                           UN_PARMI('PRES_SORTIE','PRES_SORTIE_FO'),
                                           ),
-           PRES_ENTREE         =SIMP(statut='f',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ),
+           PRES_ENTREE         =SIMP(statut='f',typ='R',fr=tr("Pression de stagnation a l'entree (Pa) [pe]") ),
            PRES_ENTREE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                     fr="Evolution de la pression de stagnation a l'entree (Pa) [pe]" ),
-           PRES_SORTIE         =SIMP(statut='f',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ),
+                                     fr=tr("Evolution de la pression de stagnation a l'entree (Pa) [pe]") ),
+           PRES_SORTIE         =SIMP(statut='f',typ='R',fr=tr("Pression de stagnation a la sortie (Pa) [ps]") ),
            PRES_SORTIE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                     fr="Evolution de la pression de stagnation a la sortie (Pa) [ps]" ),
-           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ),
+                                     fr=tr("Evolution de la pression de stagnation a la sortie (Pa) [ps]") ),
+           FLUIDE_ENTREE       =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr=tr("Condition du fluide a l'entree [iflow]") ),
            b_condition_1       =BLOC(condition="FLUIDE_ENTREE==1",
                                      regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')),
-                                     fr="Eau sous-refroidie ou saturee",
-             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+                                     fr=tr("Eau sous-refroidie ou saturee"),
+             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
              TEMP_ENTREE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la temperature a l'entree (degres C) [te]" ),
+                                       fr=tr("Evolution de la temperature a l'entree (degres C) [te]") ),
            ),
            b_condition_2       =BLOC(condition="FLUIDE_ENTREE==2",
                                      regles=(UN_PARMI('TITR_MASS', 'TITR_MASS_FO')),
-                                     fr="Fluide diphasique",
-             TITR_MASS           =SIMP(statut='f',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
+                                     fr=tr("Fluide diphasique"),
+             TITR_MASS           =SIMP(statut='f',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
              TITR_MASS_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution du titre massique eau vap/eau tot a l'entree [xe]" ),
+                                       fr=tr("Evolution du titre massique eau vap/eau tot a l'entree [xe]") ),
            ),
            b_condition_3       =BLOC(condition="FLUIDE_ENTREE==3",
                                      regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')),
-                                     fr="Vapeur saturee ou surchauffee",
-             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+                                     fr=tr("Vapeur saturee ou surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
              TEMP_ENTREE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la temperature a l'entree (degres C) [te]" ),
+                                       fr=tr("Evolution de la temperature a l'entree (degres C) [te]") ),
            ),
            b_condition_4       =BLOC(condition="FLUIDE_ENTREE==4",
                                      regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO'),
                                              UN_PARMI('PRES_PART', 'PRES_PART_FO')),
-                                     fr="Air + vapeur surchauffee",
-             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+                                     fr=tr("Air + vapeur surchauffee"),
+             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
              TEMP_ENTREE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la temperature a l'entree (degres C) [te]" ),
-             PRES_PART           =SIMP(statut='f',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+                                       fr=tr("Evolution de la temperature a l'entree (degres C) [te]") ),
+             PRES_PART           =SIMP(statut='f',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
              PRES_PART_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la pression partielle air en entree (Pa) [pae]" ),
+                                       fr=tr("Evolution de la pression partielle air en entree (Pa) [pae]") ),
            ),
            b_condition_5       =BLOC(condition="FLUIDE_ENTREE==5",
                                      regles=(UN_PARMI('TITR_MASS', 'TITR_MASS_FO'),
                                              UN_PARMI('PRES_PART', 'PRES_PART_FO')),
-                                     fr="Air + vapeur saturee",
-             TITR_MASS           =SIMP(statut='f',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ),
+                                     fr=tr("Air + vapeur saturee"),
+             TITR_MASS           =SIMP(statut='f',typ='R',fr=tr("Titre massique eau vap/eau tot a l'entree [xe]") ),
              TITR_MASS_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution du titre massique eau vap/eau tot a l'entree [xe]" ),
-             PRES_PART           =SIMP(statut='f',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ),
+                                       fr=tr("Evolution du titre massique eau vap/eau tot a l'entree [xe]") ),
+             PRES_PART           =SIMP(statut='f',typ='R',fr=tr("Pression partielle air en entree (Pa) [pae]") ),
              PRES_PART_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la pression partielle air en entree (Pa) [pae]" ),
+                                       fr=tr("Evolution de la pression partielle air en entree (Pa) [pae]") ),
            ),
            b_condition_6       =BLOC(condition="FLUIDE_ENTREE==6",
                                      regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')),
-                                     fr="Air seul",
-             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ),
+                                     fr=tr("Air seul"),
+             TEMP_ENTREE         =SIMP(statut='f',typ='R',fr=tr("Temperature a l'entree (degres C) [te]") ),
              TEMP_ENTREE_FO      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),
-                                       fr="Evolution de la temperature a l'entree (degres C) [te]" ),
+                                       fr=tr("Evolution de la temperature a l'entree (degres C) [te]") ),
            ),
          ),
 
-         LIST_INST =SIMP(statut='f',typ=(listr8_sdaster), fr="Liste des instants de calcul imposes" ),
+         LIST_INST =SIMP(statut='f',typ=(listr8_sdaster), fr=tr("Liste des instants de calcul imposes") ),
 
 #      CHOIX DES MODELES
 #      *****************
 
          MODELE_ECRE        =FACT(statut='o',min=1,max=1,
            IVENAC              =SIMP(statut='f', typ='I', into=(0,1), defaut=0,
-                                     fr="Calcul ECREVISSE avec prise en compte de la vena contracta"),
+                                     fr=tr("Calcul ECREVISSE avec prise en compte de la vena contracta")),
            ECOULEMENT          =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"),
-                                     fr="Type de modele d'ecoulement diphasique [imod]" ),
-           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele",
-             PRESS_EBULLITION  =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]" ),
+                                     fr=tr("Type de modele d'ecoulement diphasique [imod]") ),
+           b_ecou_gele         =BLOC(condition="ECOULEMENT=='GELE'",fr=tr("Modele d'ecoulement gele"),
+             PRESS_EBULLITION  =SIMP(statut='o',typ='R',fr=tr("Pression d'ebullition [corrp*psat(t)]") ),
            ),
-           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr="Correlation de frottement [ifrot]" ),
-           b_frottement        =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele",
-             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]" ),
-             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]" ),
+           FROTTEMENT          =SIMP(statut='o',typ='I',into=(-4,-3,-2,-1,0,1,2,3,4,11,12,13,14),fr=tr("Correlation de frottement [ifrot]") ),
+           b_frottement        =BLOC(condition="FROTTEMENT<0",fr=tr("Modele d'ecoulement gele"),
+             REYNOLDS_LIM        =SIMP(statut='o',typ='R',fr=tr("Coefficient de Reynolds limite [relim]") ),
+             FROTTEMENT_LIM      =SIMP(statut='o',typ='R',fr=tr("Coefficient de frottement impose [frtlim]") ),
            ),
 
-           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr="Transfert de chaleur [ichal]" ),
-           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique",
-             XMINCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"),
-             XMAXCH              =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"),
+           TRANSFERT_CHAL      =SIMP(statut='o',typ='I',into=(-12,-11,-2,-1,0,1,2,11,12),fr=tr("Transfert de chaleur [ichal]") ),
+           b_transchal         =BLOC(condition="TRANSFERT_CHAL<0", fr=tr("Cas diphasique"),
+             XMINCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux min [xminch]")),
+             XMAXCH              =SIMP(statut='o',typ='R',fr=tr("Titre massique gazeux max [xmaxch]")),
            ),
          ),
 
@@ -26917,19 +28686,19 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
 #      **********************
 
          CONV_CRITERE       =FACT(statut='o',min=1,max=1,
-           TEMP_REF            =SIMP(statut='o',typ='R',val_min=1.0E-5,fr="Temperature de reference pour le calcul du critere"),
-           PRES_REF            =SIMP(statut='o',typ='R',val_min=1.0E-5,fr="Pression de reference pour le calcul du critere"),
+           TEMP_REF            =SIMP(statut='o',typ='R',val_min=1.0E-5,fr=tr("Temperature de reference pour le calcul du critere")),
+           PRES_REF            =SIMP(statut='o',typ='R',val_min=1.0E-5,fr=tr("Pression de reference pour le calcul du critere")),
            CRITERE             =SIMP(statut='o',typ='TXM',defaut="TEMP_PRESS",into=("TEMP_PRESS","EXPLICITE","TEMP","PRESS"),
-                                     fr="La nature du critere pour la convergence"),
+                                     fr=tr("La nature du critere pour la convergence")),
            b_critere_autre     =BLOC(condition="CRITERE=='TEMP_PRESS' or CRITERE=='TEMP' or CRITERE=='PRESS'",
-                                     fr="Critere de convergence temp_press, temp, ou press",
+                                     fr=tr("Critere de convergence temp_press, temp, ou press"),
              SUBD_NIVEAU         =SIMP(statut='f',typ='I',val_min=2,defaut=3,
-                                       fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
-             SUBD_PAS_MINI       =SIMP(statut='f',typ='R',val_min=0.0, fr="Pas de temps en dessous duquel on ne subdivise plus"),
+                                       fr=tr("Nombre maximum de niveau de subdivision d'un pas de temps")),
+             SUBD_PAS_MINI       =SIMP(statut='f',typ='R',val_min=0.0, fr=tr("Pas de temps en dessous duquel on ne subdivise plus")),
              NUME_ORDRE_MIN      =SIMP(statut='f',typ='I',val_min=-1,defaut=-1,
-                                       fr="Numero d'ordre a partir duquel le critere est pris en compte"),
+                                       fr=tr("Numero d'ordre a partir duquel le critere est pris en compte")),
              PREC_CRIT           =SIMP(statut='f',typ='R',val_min=1.0E-2,defaut=1.0,
-                                       fr="Valeur du critere pour l'erreur de convergence"),
+                                       fr=tr("Valeur du critere pour l'erreur de convergence")),
            ),
          ),
 
@@ -26939,11 +28708,11 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
 
          CONVERGENCE_ECREVISSE =FACT(statut='f',min=1,max=1,
            KGTEST                 =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0,
-                                        fr="Parametre de l'algorithme iteratif [kgtest]" ),
+                                        fr=tr("Parametre de l'algorithme iteratif [kgtest]") ),
            ITER_GLOB_MAXI         =SIMP(statut='f',typ='I',defaut= 400,
-                                        fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ),
+                                        fr=tr("Nombre maximum d'iterations de la methode de Newton [itnmax]") ),
            CRIT_CONV_DEBI         =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5,
-                                        fr="Critere de convergence en debit [precdb]" ),
+                                        fr=tr("Critere de convergence en debit [precdb]") ),
          ),
 
 
@@ -26951,12 +28720,12 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
 #      *******
 
          COURBES            = SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE",
-                                  fr="Generation eventuelle des courbes" ),
+                                  fr=tr("Generation eventuelle des courbes") ),
          LOGICIEL           = SIMP(statut='f',typ='TXM',validators=LongStr(1,255),),
          VERSION            = SIMP(statut='f',typ='TXM',into = ("3.2.1",) ),
          ENTETE             = SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ),
          IMPRESSION         = SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ),
-         INFO               = SIMP(statut='f',typ='I',defaut="1",into=(1,2) ),
+         INFO               = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 
 #      DONNEES POUR STAT_NON_LINE ET THER_NON_LINE
 #      *******************************************
@@ -27042,7 +28811,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",
 # person_in_charge: mathieu.corus at edf.fr
 
 MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op=  81,sd_prod=macr_elem_dyna,
-                    fr="Definition d'un macro element pour analyse modale ou harmonique par sous structuration dynamique",
+                    fr=tr("Definition d'un macro element pour analyse modale ou harmonique par sous structuration dynamique"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)},
          regles=(
@@ -27111,7 +28880,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op=  81,sd_prod=macr_elem_dyna,
 # person_in_charge: jacques.pellet at edf.fr
 MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f',
             UIinfo={"groupes":("Matrices et vecteurs",)},
-                    fr="Définition d'un macro-élément pour l'analyse statique par sous-structuration",
+                    fr=tr("Définition d'un macro-élément pour l'analyse statique par sous-structuration"),
         regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'),
                 ENSEMBLE('DEFINITION','EXTERIEUR'),),
          DEFINITION      =FACT(statut='f',
@@ -27147,6 +28916,7 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant=
 
 )  ;
 
+# -*- coding: utf-8 -*-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -27168,8 +28938,8 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant=
 MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",
                      op=OPS('Macro.macr_adap_mail_ops.macr_adap_mail_ops'),
                      docu="U7.03.02",UIinfo={"groupes":("Maillage",)},
-                     fr="Donner des informations sur un maillage.",
-                     ang="To give information about a mesh.",
+                     fr=tr("Donner des informations sur un maillage."),
+
 #
 # 1. Le niveau d'information
 #
@@ -27178,107 +28948,107 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",
 # 2. Le nom du maillage a analyser
 #
   MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
-                  fr="Maillage à analyser.",
-                  ang="Mesh to be checked." ),
+                  fr=tr("Maillage à analyser."),
+                  ),
 #
 # 3. Suivi d'une frontiere
 #
   MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
-                           fr="Maillage de la frontiere à suivre",
-                           ang="Boundary mesh" ),
+                           fr=tr("Maillage de la frontiere à suivre"),
+                           ),
 #
   b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
-                      fr="Information complémentaire sur la frontière",
-                      ang="Further information about boundary",
+                      fr=tr("Information complémentaire sur la frontière"),
+
 #
     GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                          fr="Groupes de mailles définissant la frontière",
-                          ang="Mesh groups which define the boundary" ),
+                          fr=tr("Groupes de mailles définissant la frontière"),
+                          ),
 #
                     ) ,
 #
 # 4. Les options ; par defaut, on controle tout, sauf l'interpénétration
 # 4.1. Nombre de noeuds et mailles
 #
-  NOMBRE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Nombre de noeuds et de mailles du maillage",
-                        ang="Number of nodes and meshes in the mesh" ),
+  NOMBRE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Nombre de noeuds et de mailles du maillage"),
+                        ),
 #
 # 4.2. Determination de la qualite des mailles du maillage
 #
-  QUALITE        = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Qualité du maillage",
-                        ang="Quality of the mesh" ),
+  QUALITE        = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Qualité des mailles du maillage."),
+                        ),
 #
 # 4.3. Connexite du maillage
 #
-  CONNEXITE      = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Connexité du maillage.",
-                        ang="Connexity of the mesh." ),
+  CONNEXITE      = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Connexité du maillage."),
+                        ),
 #
 # 4.4. Taille des sous-domaines du maillage
 #
-  TAILLE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Tailles des sous-domaines du maillage.",
-                        ang="Sizes of mesh sub-domains." ),
+  TAILLE         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Tailles des sous-domaines du maillage."),
+                        ),
 #
 # 4.5. Controle de la non-interpénétration des mailles
 #
-  INTERPENETRATION=SIMP(statut='f',typ='TXM',into=("OUI",),
-                        fr="Controle de la non interpénétration des mailles.",
-                        ang="Overlapping checking." ),
+  INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI", "NON",),
+                        fr=tr("Controle de la non interpénétration des mailles."),
+                        ),
 #
 # 4.6. Propriétés du maillage de calcul
 #
-  PROP_CALCUL    = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Propriétés du maillage de calcul.",
-                        ang="Properties of the calculation mesh." ),
+  PROP_CALCUL    = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Propriétés du maillage de calcul."),
+                        ),
 #
 # 4.7. Determination des diametres des mailles du maillage
 #
-  DIAMETRE       = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",),
-                        fr="Diamètre du maillage",
-                        ang="Diameters of the mesh" ),
+  DIAMETRE       = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI", "NON",),
+                        fr=tr("Diamètre des mailles du maillage."),
+                        ),
 #
 # 5. Les options avancées
 # 5.1. Langue des messages issus de HOMARD
 #
   LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
-                into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
-                fr="Langue des messages issus de HOMARD.",
-                ang="Language for HOMARD messages." ),
+                into=("FRANCAIS", "FRENCH", "ANGLAIS", "ENGLISH",),
+                fr=tr("Langue des messages issus de HOMARD."),
+                ),
 #
 # 5.2. Gestion des mailles acceptees dans le maillage initial
 #       "HOMARD" : exclusivement les mailles pouvant etre decoupees (defaut)
 #       "IGNORE_PYRA" : elles sont ignorées
 #
   ELEMENTS_ACCEPTES = SIMP(statut='f',typ='TXM',defaut="HOMARD",into=("HOMARD", "IGNORE_PYRA"),
-                            fr="Acceptation des mailles dans le maillage initial",
-                            ang="Elements in the very first mesh" ),
+                            fr=tr("Acceptation des mailles dans le maillage initial"),
+                            ),
 #
 # 5.3. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_6",
-                        into=("V10_6", "V10_N", "V10_N_PERSO"),
-                        fr="Version de HOMARD",
-                        ang="HOMARD release"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V11_2",
+                        into=("V11_2", "V11_N", "V11_N_PERSO"),
+                        fr=tr("Version de HOMARD"),
+                        ),
 #
 # 5.4. Exécutable pilotant HOMARD
 #
   LOGICIEL = SIMP(statut='f',typ='TXM',
-                  fr="Logiciel pilotant HOMARD",
-                  ang="HOMARD software"),
+                  fr=tr("Logiciel pilotant HOMARD"),
+                  ),
 #
 # 5.5. Unite logique d'un fichier à ajouter a HOMARD.Configuration
 #
-  b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \
-                                (VERSION_HOMARD == 'V10_N_PERSO') " ,
-                                fr="Fichier supplementaire.",
-                                ang="Additional file.",
+  b_unite = BLOC( condition = " (VERSION_HOMARD == 'V11_N') or \
+                                (VERSION_HOMARD == 'V11_N_PERSO') " ,
+                                fr=tr("Fichier supplementaire."),
+
 #
-  UNITE = SIMP(statut='f',typ='I',
-               fr="Unite logique a ajouter a HOMARD.Configuration",
-               ang="Additional file to HOMARD.Configuration" ),
+  UNITE = SIMP(statut='f',typ='I',val_min=1,
+               fr=tr("Unite logique a ajouter a HOMARD.Configuration"),
+               ),
 #
   ) ,
 #
@@ -27308,14 +29078,14 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",
                       sd_prod=table_sdaster,
                       reentrant='n',
                       UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
-                      fr="Extraction des valeurs d'un résultat dans une ou plusieurs tables sur " \
-                         "des lignes de coupe définies par deux points et un intervalle",
+                      fr=tr("Extraction des valeurs d'un résultat dans une ou plusieurs tables sur "
+                           "des lignes de coupe définies par deux points et un intervalle"),
             regles=(UN_PARMI("RESULTAT","CHAM_GD"),),
 
          RESULTAT        =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca) ),
          CHAM_GD         =SIMP(statut='f',typ=(cham_gd_sdaster)),
 
-         b_extrac        =BLOC(condition = "RESULTAT != None",fr="extraction des résultats",
+         b_extrac        =BLOC(condition = "RESULTAT != None",fr=tr("extraction des résultats"),
                                  regles=(EXCLUS('NUME_ORDRE','NUME_MODE','LIST_ORDRE','INST','LIST_INST',), ),
              NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
              NUME_MODE       =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
@@ -27330,10 +29100,10 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",
            ),
 
 # extraction des résultats
-         b_meca        =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli,mode_meca)",fr="résultat mécanique",
+         b_meca        =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli,mode_meca)",fr=tr("résultat mécanique"),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),defaut='SIGM_NOEU',into=C_NOM_CHAM_INTO(),),
          ),
-         b_ther        =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr="résultat thermique",
+         b_ther        =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr=tr("résultat thermique"),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),defaut='TEMP',into=("TEMP",
                                  "FLUX_ELGA","FLUX_ELNO","FLUX_NOEU",
                                  "META_ELNO","META_NOEU",
@@ -27417,11 +29187,11 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",
              AXE_Z           =SIMP(statut='f',typ='R',min=3,max=3),),
 
            DISTANCE_MAX    =SIMP(statut='f',typ='R',defaut=0.,
-                fr="Si la distance entre un noeud de la ligne de coupe et le maillage coupé "
-                +"est > DISTANCE_MAX, ce noeud sera ignoré."),
+                fr=tr("Si la distance entre un noeud de la ligne de coupe et le maillage coupé "
+                "est > DISTANCE_MAX, ce noeud sera ignoré.")),
 
          ),
-)  ;
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -27449,8 +29219,8 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",
                    op=OPS('Macro.macr_recal_ops.macr_recal_ops'),
                    sd_prod=macr_recal_prod,
                    UIinfo={"groupes":("Résolution","Résultats et champs",)},
-                   fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux" \
-                      " ou sur d'autres résultats de calculs",
+                   fr=tr("Réalise le recalage des calculs Aster sur des résultats expérimentaux "
+                        "ou sur d'autres résultats de calculs"),
             regles=(UN_PARMI('PARA_OPTI','LIST_PARA'),
                     PRESENT_PRESENT('PARA_OPTI','COURBE'),
                     PRESENT_PRESENT('LIST_PARA','RESU_EXP'),
@@ -27484,11 +29254,11 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",
              AFFICHAGE       =SIMP(statut='f',typ='TXM',defaut='TOUTE_ITERATION',into=("TOUTE_ITERATION","ITERATION_FINALE"),),
 
              UNITE           =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                            fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
-             b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", fr="Mots-clés propres à XMGRACE",
+                            fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
+             b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", fr=tr("Mots-clés propres à XMGRACE"),
                  PILOTE          =SIMP(statut='f',typ='TXM',defaut='',
                                        into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
-                            fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+                            fr=tr("Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace")),
              ),
          ),
 
@@ -27510,11 +29280,11 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",
 
          # Criteres d'arret globaux
          # -------------------------
-         ITER_MAXI       =SIMP(statut='f',typ='I',defaut=10,    fr="Nombre maximum d'iterations d'optimisation"),
-         ITER_FONC_MAXI  =SIMP(statut='f',typ='I',defaut=1000,  fr="Nombre maximum d'evaluations de la focntionnelle"),
-         RESI_GLOB_RELA  =SIMP(statut='f',typ='R',defaut=1.E-3, fr="Critere d'arret sur la valeur du residu"),
-         TOLE_PARA       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur des parametres"),
-         TOLE_FONC       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur de la fonctionnelle"),
+         ITER_MAXI       =SIMP(statut='f',typ='I',defaut=10,    fr=tr("Nombre maximum d'iterations d'optimisation")),
+         ITER_FONC_MAXI  =SIMP(statut='f',typ='I',defaut=1000,  fr=tr("Nombre maximum d'evaluations de la focntionnelle")),
+         RESI_GLOB_RELA  =SIMP(statut='f',typ='R',defaut=1.E-3, fr=tr("Critere d'arret sur la valeur du residu")),
+         TOLE_PARA       =SIMP(statut='f',typ='R',defaut=1.E-8, fr=tr("Critere d'arret sur la valeur des parametres")),
+         TOLE_FONC       =SIMP(statut='f',typ='R',defaut=1.E-8, fr=tr("Critere d'arret sur la valeur de la fonctionnelle")),
 
 
          # Calculs des gradients
@@ -27537,15 +29307,15 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",
 
             b_eval_distrib =BLOC(condition = "LANCEMENT == 'DISTRIBUTION'",
                 UNITE_SUIVI   =SIMP(statut='f', typ='I',val_min=10,val_max=99,defaut=29,
-                                  fr="Affichage de l'output et/ou error des jobs esclaves dans ce fichier"),
+                                  fr=tr("Affichage de l'output et/ou error des jobs esclaves dans ce fichier")),
                 MODE          =SIMP(statut='f', typ='TXM',      into=("INTERACTIF","BATCH"),),
-                MEMOIRE       =SIMP(statut='f', typ='I',            fr="Memoire demandee pour les calculs esclaves (Mo)"),
-                TEMPS         =SIMP(statut='f', typ='I',            fr="Temps demandee pour les calculs esclaves (secondes)"),
-                MPI_NBCPU     =SIMP(statut='f', typ='I', val_min=1, fr="Nombre de cpu pour les calculs MPI"),
-                MPI_NBNOEUD   =SIMP(statut='f', typ='I',            fr="Nombre de noeuds pour les calculs MPI"),
-                CLASSE        =SIMP(statut='f', typ='TXM',          fr="Classe demandee pour les calculs en batch"),
+                MEMOIRE       =SIMP(statut='f', typ='I',            fr=tr("Memoire demandee pour les calculs esclaves (Mo)")),
+                TEMPS         =SIMP(statut='f', typ='I',            fr=tr("Temps demandee pour les calculs esclaves (secondes)")),
+                MPI_NBCPU     =SIMP(statut='f', typ='I', val_min=1, fr=tr("Nombre de cpu pour les calculs MPI")),
+                MPI_NBNOEUD   =SIMP(statut='f', typ='I',            fr=tr("Nombre de noeuds pour les calculs MPI")),
+                CLASSE        =SIMP(statut='f', typ='TXM',          fr=tr("Classe demandee pour les calculs en batch")),
                 NMAX_SIMULT   =SIMP(statut='f', typ='I',
-                               fr="Nombre de calculs esclaves lances en parallele en mode distribution (non precise = automatique)"),
+                               fr=tr("Nombre de calculs esclaves lances en parallele en mode distribution (non precise = automatique)")),
             ),
          ),
 
@@ -27582,13 +29352,19 @@ MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",
                    sd_prod=table_sdaster,
                    reentrant='n',
                    UIinfo={"groupes":("Post-traitements","Outils-métier",)},
-                   fr="Calcul de spectre, post-traitement de séisme",
-         MAILLAGE      =SIMP(statut='o',typ=maillage_sdaster,),
+                   fr=tr("Calcul de spectre, post-traitement de séisme"),
+         MAILLAGE      =SIMP(statut='f',typ=maillage_sdaster,position='global',),
          PLANCHER      =FACT(statut='o',max='**',
-            regles=(AU_MOINS_UN('NOEUD','GROUP_NO' ),),
             NOM           =SIMP(statut='o',typ='TXM',),
-            GROUP_NO      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-            NOEUD         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'), ),
+            b_maillage=BLOC( condition = "MAILLAGE != None",
+                regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),),
+                GROUP_NO      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                NOEUD         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+            ),
+            b_no_maillage=BLOC( condition = "MAILLAGE == None",
+                NOEUD         =SIMP(statut='o',typ=no  ,validators=NoRepeat(),max='**'),
+            ),
+         ),
          NOM_CHAM      =SIMP(statut='o',typ='TXM' ,into=('ACCE','DEPL')),
          CALCUL        =SIMP(statut='o',typ='TXM' ,into=('ABSOLU','RELATIF'),position='global'),
          b_acce  =BLOC( condition = "NOM_CHAM=='ACCE'",
@@ -27607,11 +29383,13 @@ MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",
                    ACCE_X        =SIMP(statut='o',typ=fonction_sdaster),
                    ACCE_Y        =SIMP(statut='o',typ=fonction_sdaster),
                    ACCE_Z        =SIMP(statut='o',typ=fonction_sdaster),), ),
+                b_calc  =BLOC( condition = "CALCUL=='ABSOLU'" ,
+                   MULT_APPUI        =SIMP(statut='f',typ='TXM', into=("OUI",),),),
            IMPRESSION    =FACT(statut='f',
                 TRI           =SIMP(statut='f',typ='TXM',defaut='AMOR_SPEC',into=("AMOR_SPEC","DIRECTION",),),
                 FORMAT        =SIMP(statut='f',typ='TXM',defaut='TABLEAU',into=("TABLEAU","XMGRACE",),),
                 UNITE         =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                                    fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                                    fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit")),
                 b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
                    PILOTE        =SIMP(statut='f',typ='TXM',defaut='',
                                  into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),),),
@@ -27663,8 +29441,8 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",
                       sd_prod=macro_elas_mult_prod,
                       reentrant='f',
                       UIinfo={"groupes":("Résolution",)},
-                      fr="Calculer les réponses statiques linéaires pour différents cas " \
-                         "de charges ou modes de Fourier",
+                      fr=tr("Calculer les réponses statiques linéaires pour différents cas "
+                           "de charges ou modes de Fourier"),
          regles=(UN_PARMI('CHAR_MECA_GLOBAL','LIAISON_DISCRET', ),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
@@ -27680,21 +29458,21 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",
            TYPE_MODE       =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
            CHAR_MECA       =SIMP(statut='f',typ=(char_meca),validators=NoRepeat(),max='**'),
            OPTION          =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","SANS"),defaut="SIEF_ELGA",max=1,
-                                 fr="Contraintes aux points de Gauss.",),
+                                 fr=tr("Contraintes aux points de Gauss."),),
            SOUS_TITRE      =SIMP(statut='f',typ='TXM',max='**'),
            VECT_ASSE       =SIMP(statut='f',typ=cham_no_sdaster),
          ),
          SOLVEUR         =FACT(statut='d',
            METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ),
            b_mult_front    = BLOC ( condition = "METHODE == 'MULT_FRONT' ",
-                                    fr="Paramètres de la méthode multi frontale",
+                                    fr=tr("Paramètres de la méthode multi frontale"),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
-           b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+           b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr=tr("Paramètres de la méthode LDLT"),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
             ),
            b_ldlt_mult     =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
-                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+                                   fr=tr("Paramètres relatifs à la non inversibilité de la matrice à factorise"),
              NPREC           =SIMP(statut='f',typ='I',defaut= 8 ),
              STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            ),
@@ -27738,7 +29516,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS",
                    sd_prod=macro_expans_prod,
                    reentrant='n',
                    UIinfo={"groupes":("Outils-métier","Dynamique",)},
-                   fr="Outil d'expansion de resultats exprimentaux sur une base definie sur un modele numerique",
+                   fr=tr("Outil d'expansion de resultats exprimentaux sur une base definie sur un modele numerique"),
                         MODELE_CALCUL   = FACT(statut='o',
                            MODELE          = SIMP(statut='o',typ=(modele_sdaster) ),
                            BASE            = SIMP(statut='o',typ=(mode_meca,) ), 
@@ -27807,8 +29585,8 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",
                       op=OPS('Macro.macro_matr_ajou_ops.macro_matr_ajou_ops'),
                       sd_prod=macro_matr_ajou_prod,
                       UIinfo={"groupes":("Résolution","Matrices et vecteurs",)},
-                      fr="Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des " \
-                         "matrices de masse, d'amortissement ou de rigidité ajoutés",
+                      fr=tr("Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des "
+                           "matrices de masse, d'amortissement ou de rigidité ajoutés"),
       regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
               AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'),
               EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
@@ -27864,111 +29642,6 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",
          AVEC_MODE_STAT  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
 )
 
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# person_in_charge: nicolas.brie at edf.fr
-
-def macro_mode_meca_prod( self, MATR_RIGI,MATR_MASS, **args) :
-   if ( AsType(MATR_RIGI) == matr_asse_gene_r ):
-      if ( AsType(MATR_MASS) == matr_asse_gene_r ):
-         return mode_gene
-      else:
-         raise AsException("Matrices d'entrée de types différents : physique / généralisée.")
-
-   return mode_meca
-
-
-MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",
-                     op=OPS('Macro.macro_mode_meca_ops.macro_mode_meca_ops'),
-                     sd_prod=macro_mode_meca_prod,
-                     reentrant='n',fr="Lancer une succession de calculs de modes propres réels",
-            UIinfo={"groupes":("Résolution","Dynamique",)},
-         MATR_RIGI       =SIMP(statut='o',typ=(matr_asse_depl_r, matr_asse_gene_r) ),
-         MATR_MASS       =SIMP(statut='o',typ=(matr_asse_depl_r, matr_asse_gene_r) ),
-         INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-#  ce mot cle ne devrait il pas etre dans calc_freq
-         METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
-                               into=("TRI_DIAG","JACOBI","SORENSEN",) ),
-         b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
-           PREC_ORTHO      =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
-           NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
-           PREC_LANCZOS    =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
-           NMAX_ITER_QR    =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
-         ),
-         b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
-           PREC_BATHE      =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
-           NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
-           PREC_JACOBI     =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
-           NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
-         ),
-         b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
-           PREC_SOREN      =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
-           NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
-           PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717),
-         ),
-
-         OPTION          =SIMP(statut='f',typ='TXM',defaut="SANS",into=("MODE_RIGIDE","SANS") ),
-
-         CALC_FREQ       =FACT(statut='o',
-           FREQ            =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max='**', ),
-           DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
-           COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
-           NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 3 ),
-           PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-2 ),
-           SEUIL_FREQ      =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),
-           STOP_BANDE_VIDE  =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ),
-         ),
-
-#-------------------------------------------------------------------
-#        Catalogue commun SOLVEUR
-         SOLVEUR              =C_SOLVEUR('INFO_MODE'),
-         NIVEAU_PARALLELISME  =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("PARTIEL","COMPLET") ),
-#-------------------------------------------------------------------
-
-         VERI_MODE       =FACT(statut='d',min=0,
-           STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-           SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
-           PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
-           STURM           =SIMP(statut='f',typ='TXM',defaut="GLOBAL",into=("GLOBAL","LOCAL","NON") ),
-         ),
-
-         b_matr_phys =BLOC( condition = "AsType(MATR_RIGI) == matr_asse_depl_r",
-         NORM_MODE       =FACT(statut='d',max='**',
-           NORME           =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA",
-                                 into=("MASS_GENE","RIGI_GENE","EUCL",
-                                       "EUCL_TRAN","TRAN","TRAN_ROTA") ),
-           INFO            =SIMP(statut='f',typ='I',defaut= 1 ,into=(1,2) ),
-         ),
-
-         FILTRE_MODE     =FACT(statut='f',
-           CRIT_EXTR       =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
-                                 into=("MASS_EFFE_UN","MASS_GENE") ),
-           SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-         ),
-
-         IMPRESSION      =FACT(statut='d',
-           TOUT_PARA       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-           CUMUL           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-           CRIT_EXTR       =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
-                                 into=("MASS_EFFE_UN","MASS_GENE",) ),
-         ),
-                          ),
-)  ;
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -27989,7 +29662,7 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",
 #
 MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
               UIinfo={"groupes":("Gestion du travail",)},
-              fr="Compilation des catalogues d'éléments et couverture des calculs élémentaires",
+              fr=tr("Compilation des catalogues d'éléments et couverture des calculs élémentaires"),
               regles=(UN_PARMI('ELEMENT','TYPE_ELEM', ),),
 
               ELEMENT     =FACT(statut='f',),
@@ -28016,17 +29689,17 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
-                   fr="Résoudre un problème de mécanique statique linéaire",reentrant='f',
+                   fr=tr("Résoudre un problème de mécanique statique linéaire"),reentrant='f',
             UIinfo={"groupes":("Résolution","Mécanique",)},
          regles=(EXCLUS("INST","LIST_INST"),
                  AU_MOINS_UN('CHAM_MATER','CARA_ELEM',),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater,
-         fr="le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)",
-         ang="CHAM_MATER is compulsory, except if the model contains only discret elements (modelizations DIS_XXX)"),
+         fr=tr("le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)"),
+         ),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem,
-         fr="le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ...",
-         ang="CARA_ELEM is compulsory as soon as the model contains structural elements : plates, beams, ..."),
+         fr=tr("le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ..."),
+         ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          EXCIT           =FACT(statut='o',max='**',
            CHARGE          =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
@@ -28037,7 +29710,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
          LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
          INST_FIN        =SIMP(statut='f',typ='R'),
          OPTION          =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","SANS"),defaut="SIEF_ELGA",max=1,
-             fr="Seule option : contraintes aux points de Gauss. Utilisez CALC_CHAMP pour les autres options.",
+             fr=tr("Seule option : contraintes aux points de Gauss. Utilisez CALC_CHAMP pour les autres options."),
                           ),
 
 #-------------------------------------------------------------------
@@ -28065,8 +29738,8 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
 # ======================================================================
 # person_in_charge: mathieu.corus at edf.fr
 MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op=  80,sd_prod=mode_cycl,
-                    fr="Calcul des modes propres d'une structure à répétitivité cyclique à partir"
-                        +" d'une base de modes propres réels",
+                    fr=tr("Calcul des modes propres d'une structure à répétitivité cyclique à partir"
+                        " d'une base de modes propres réels"),
                     reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          BASE_MODALE     =SIMP(statut='o',typ=mode_meca ),
@@ -28141,22 +29814,22 @@ def mode_iter_inv_prod(TYPE_RESU,**args ):
   raise AsException("type de concept resultat non prevu")
 
 MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
-                    ,fr="Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes",
+                    ,fr=tr("Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes"),
                      reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
 
          TYPE_RESU       =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",
                                into=("MODE_FLAMB","DYNAMIQUE","GENERAL"),
-                               fr="Type d analyse" ),
+                               fr=tr("Type d analyse") ),
 
          b_dynam         =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
            MATR_RIGI       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
            MATR_MASS       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
            MATR_AMOR       =SIMP(statut='f',typ=matr_asse_depl_r ),
-           CALC_FREQ       =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
+           CALC_FREQ       =FACT(statut='o',fr=tr("Choix des paramètres pour le calcul des valeurs propres"),
 
              OPTION          =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
-                                   fr="Choix de l option pour estimer les valeurs propres"  ),
+                                   fr=tr("Choix de l option pour estimer les valeurs propres")  ),
              FREQ            =SIMP(statut='o',typ='R',max='**',
                                    validators=AndVal((OrdList('croissant'), NoRepeat())),),
              AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
@@ -28182,10 +29855,10 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
            ),
 
          b_flamb_general =BLOC(condition = "(TYPE_RESU == 'MODE_FLAMB') or (TYPE_RESU == 'GENERAL')",
-           CALC_CHAR_CRIT  =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
+           CALC_CHAR_CRIT  =FACT(statut='o',fr=tr("Choix des paramètres pour le calcul des valeurs propres"),
 
              OPTION          =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
-                                 fr="Choix de l option pour estimer les valeurs propres"  ),
+                                 fr=tr("Choix de l option pour estimer les valeurs propres")  ),
              CHAR_CRIT       =SIMP(statut='o',typ='R',max='**',
                                    validators=AndVal((OrdList('croissant'), NoRepeat())),),
              NMAX_CHAR_CRIT  =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
@@ -28205,15 +29878,15 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
          SOLVEUR         =C_SOLVEUR('MODE_ITER_INV'),
 #-------------------------------------------------------------------
 
-         CALC_MODE       =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres",
+         CALC_MODE       =FACT(statut='d',min=0,fr=tr("Choix des paramètres pour le calcul des vecteurs propres"),
            OPTION          =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ),
-           PREC            =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=1.E-70,fr="Précision de convergence" ),
+           PREC            =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=1.E-70,fr=tr("Précision de convergence") ),
            NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 30,val_min=1 ),
          ),
          VERI_MODE       =FACT(statut='d',min=0,
            STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0,
-                                 fr="Valeur limite admise pour l ereur a posteriori des modes"  ),
+                                 fr=tr("Valeur limite admise pour l ereur a posteriori des modes")  ),
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          TITRE           =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
@@ -28262,8 +29935,8 @@ def mode_iter_simult_prod(TYPE_RESU,**args ):
 
 
 MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_prod,
-                      fr="Calcul des modes propres par itérations simultanées ; valeurs propres et"
-                         +" modes propres réels ou complexes",
+                      fr=tr("Calcul des modes propres par itérations simultanées ; valeurs propres et"
+                         " modes propres réels ou complexes"),
                       reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
@@ -28290,9 +29963,9 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_
          ),
          TYPE_RESU       =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",
                                into=("DYNAMIQUE","MODE_FLAMB","GENERAL"),
-                               fr="Type d analyse" ),
+                               fr=tr("Type d analyse") ),
          OPTION          =SIMP(statut='f',typ='TXM',defaut="SANS",into=("MODE_RIGIDE","SANS"),
-                               fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ),
+                               fr=tr("Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG") ),
 
 
          b_dynam        =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
@@ -28302,29 +29975,29 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_
            MATR_AMOR          =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
            CALC_FREQ       =FACT(statut='d',min=0,
              OPTION      =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","PLUS_GRANDE","BANDE","CENTRE","TOUT"),
-                                   fr="Choix de l option et par conséquent du shift du problème modal" ),
-             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites fréquences propres",
+                                   fr=tr("Choix de l option et par conséquent du shift du problème modal") ),
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr=tr("Recherche des plus petites fréquences propres"),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut=10,val_min=0 ),
              ),
-             b_plus_grande =BLOC(condition = "OPTION == 'PLUS_GRANDE'",fr="Recherche des plus grandes fréquences propres",
+             b_plus_grande =BLOC(condition = "OPTION == 'PLUS_GRANDE'",fr=tr("Recherche des plus grandes fréquences propres"),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut=1,val_min=0 ),
              ),
              b_centre       =BLOC(condition = "OPTION == 'CENTRE'",
-                                  fr="Recherche des fréquences propres les plus proches d'une valeur donnée",
+                                  fr=tr("Recherche des fréquences propres les plus proches d'une valeur donnée"),
                FREQ            =SIMP(statut='o',typ='R',
-                                     fr="Fréquence autour de laquelle on cherche les fréquences propres"),
+                                     fr=tr("Fréquence autour de laquelle on cherche les fréquences propres")),
                AMOR_REDUIT     =SIMP(statut='f',typ='R',),
                NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
              ),
              b_bande         =BLOC(condition = "(OPTION == 'BANDE')",
-                                   fr="Recherche des fréquences propres dans une bande donnée",
+                                   fr=tr("Recherche des fréquences propres dans une bande donnée"),
                FREQ            =SIMP(statut='o',typ='R',min=2,max=2,
                                      validators=AndVal((OrdList('croissant'), NoRepeat())),
-                                     fr="Valeur des deux fréquences délimitant la bande de recherche"),
+                                     fr=tr("Valeur des deux fréquences délimitant la bande de recherche")),
                TABLE_FREQ      =SIMP(statut= 'f',typ=table_sdaster),
              ),
              APPROCHE        =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
-                                   fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
+                                   fr=tr("Choix du pseudo-produit scalaire pour la résolution du problème quadratique") ),
              regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
              DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
              COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
@@ -28350,26 +30023,26 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_
          b_flamb_general  =BLOC(condition = "(TYPE_RESU == 'MODE_FLAMB') or (TYPE_RESU == 'GENERAL')",
            CALC_CHAR_CRIT  =FACT(statut='d',min=0,
              OPTION       =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"),
-                                   fr="Choix de l option et par conséquent du shift du problème modal" ),
-             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+                                   fr=tr("Choix de l option et par conséquent du shift du problème modal") ),
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr=tr("Recherche des plus petites valeurs propres"),
                NMAX_CHAR_CRIT  =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
              ),
              b_centre      =BLOC(condition = "OPTION == 'CENTRE'",
-                                 fr="Recherche des valeurs propres les plus proches d une valeur donnée",
+                                 fr=tr("Recherche des valeurs propres les plus proches d une valeur donnée"),
                CHAR_CRIT       =SIMP(statut='o',typ='R',
-                                     fr="Charge critique autour de laquelle on cherche les charges critiques propres"),
+                                     fr=tr("Charge critique autour de laquelle on cherche les charges critiques propres")),
                NMAX_CHAR_CRIT  =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
              ),
              b_bande       =BLOC(condition = "(OPTION == 'BANDE')",
-                                 fr="Recherche des valeurs propres dans une bande donnée",
+                                 fr=tr("Recherche des valeurs propres dans une bande donnée"),
                CHAR_CRIT       =SIMP(statut='o',typ='R',min=2,max=2,
                                      validators=AndVal((OrdList('croissant'), NoRepeat())),
-                                     fr="Valeur des deux charges critiques délimitant la bande de recherche"),
+                                     fr=tr("Valeur des deux charges critiques délimitant la bande de recherche")),
                TABLE_CHAR_CRIT =SIMP(statut= 'f',typ=table_sdaster),
 
              ),
              APPROCHE        =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG"),
-                                   fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
+                                   fr=tr("Choix du pseudo-produit scalaire pour la résolution du problème quadratique") ),
              regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
              DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
              COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
@@ -28387,16 +30060,16 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_
 #-------------------------------------------------------------------
 #  Mot-cles caches pour activer le parallelisme au sein d'une macro-commande
          PARALLELISME_MACRO=FACT(statut='d',min=0,
-           TYPE_COM   =SIMP(statut='c',typ='I',defaut=-999,into=(-999,1),fr="Type de communication"),
-           IPARA1_COM  =SIMP(statut='c',typ='I',defaut=-999,fr="Parametre entier n 1 de la communication"),
-           IPARA2_COM  =SIMP(statut='c',typ='I',defaut=-999,fr="Parametre entier n 2 de la communication"),
+           TYPE_COM   =SIMP(statut='c',typ='I',defaut=-999,into=(-999,1),fr=tr("Type de communication")),
+           IPARA1_COM  =SIMP(statut='c',typ='I',defaut=-999,fr=tr("Parametre entier n 1 de la communication")),
+           IPARA2_COM  =SIMP(statut='c',typ='I',defaut=-999,fr=tr("Parametre entier n 2 de la communication")),
          ),
 #-------------------------------------------------------------------
          VERI_MODE       =FACT(statut='d',min=0,
            STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
            SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0,
-                                 fr="Valeur limite admise pour l ereur a posteriori des modes" ),
+                                 fr=tr("Valeur limite admise pour l ereur a posteriori des modes") ),
            STURM           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          ),
          STOP_BANDE_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
@@ -28421,7 +30094,7 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45, sd_prod= mode_iter_simult_
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
 MODE_NON_LINE=OPER(nom="MODE_NON_LINE",op=  61,sd_prod=table_container,
-                     fr="Calcul des modes non-linéaires",
+                     fr=tr("Calcul des modes non-linéaires"),
                      reentrant='f',
            UIinfo={"groupes":("Résolution","Dynamique",)},
 
@@ -28501,7 +30174,7 @@ MODE_NON_LINE=OPER(nom="MODE_NON_LINE",op=  61,sd_prod=table_container,
 # person_in_charge: georges-cc.devesa at edf.fr
 
 MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca,
-                   fr="Calcul de déformées statiques pour un déplacement, une force ou une accélération unitaire imposé",
+                   fr=tr("Calcul de déformées statiques pour un déplacement, une force ou une accélération unitaire imposé"),
                    reentrant='n',
             UIinfo={"groupes":("Résolution","Dynamique",)},
 
@@ -28594,7 +30267,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca,
 # person_in_charge: andre.adobes at edf.fr
 MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
                       reentrant='f',
-            fr="Définir la base modale d'une structure sous écoulement",
+            fr=tr("Définir la base modale d'une structure sous écoulement"),
             UIinfo={"groupes":("Matrices et vecteurs",)},
 #  la commande modi_base _modale : reentrant = f ou o                      
          regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),),
@@ -28633,7 +30306,7 @@ MODI_CHAR_YACS=OPER(nom            = "MODI_CHAR_YACS",
                    sd_prod         = char_meca,
                    reentrant       = 'o',
                    UIinfo          = {"groupes":("Résultats et champs",)},
-                   fr              = "Reception des forces nodales via YACS lors du couplage de  Code_Aster et Saturne",
+                   fr              = tr("Reception des forces nodales via YACS lors du couplage de  Code_Aster et Saturne"),
                    CHAR_MECA       = SIMP(statut ='o', typ = char_meca),
                    MATR_PROJECTION = SIMP(statut ='o', typ = corresp_2_mailla,),
                    NOM_CMP_IFS     = SIMP(statut ='o', typ = 'TXM',validators = NoRepeat(), max = '**'),
@@ -28664,14 +30337,14 @@ MODI_CHAR_YACS=OPER(nom            = "MODI_CHAR_YACS",
 # ======================================================================
 # person_in_charge: jacques.pellet at edf.fr
 MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
-                   fr="Effectuer des modifications sur un maillage existant: réorienter des mailles servant,"
-                      +" à l'application d'une pression, à la modélisation du contact,...",
+                   fr=tr("Effectuer des modifications sur un maillage existant: réorienter des mailles servant,"
+                      " à l'application d'une pression, à la modélisation du contact,..."),
                    reentrant='o',
             UIinfo={"groupes":("Maillage",)},
       regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
                        'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
                        'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB','SYMETRIE',
-                       'ORIE_LIGNE',),
+                       'ORIE_LIGNE','ABSC_CURV'),
               PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
                        'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
                        'ORIE_LIGNE'),
@@ -28707,11 +30380,8 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
          ),
 
          DEFORME         =FACT(statut='f',
-           OPTION          =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ),
+           OPTION          =SIMP(statut='o',typ='TXM',into=("TRAN",) ),
            DEPL            =SIMP(statut='o',typ=cham_no_sdaster ),
-        b_deform        =BLOC(condition = "OPTION=='TRAN_APPUI'",
-           GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),
-           GROUP_NO_STRU  = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),),
          ),
 
          EQUE_PIQUA      =FACT(statut='f',
@@ -28793,13 +30463,24 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
            DIR              =SIMP(statut='f',typ='R',min=2,max=3),
          ),
          SYMETRIE        =FACT(statut='f',max='**',
-                          fr = "Symétrie du maillage par rapport à un plan en 3D ou à une droite en 2D.",
+                          fr = tr("Symétrie du maillage par rapport à un plan en 3D ou à une droite en 2D."),
            POINT           =SIMP(statut='o',typ='R',min=2,max=3,
-                            fr="Point appartenant à la droite ou au plan."),
+                            fr=tr("Point appartenant à la droite ou au plan.")),
            AXE_1           =SIMP(statut='o',typ='R',min=2,max=3,
-                            fr="Vecteur directeur de la droite ou 1er vecteur appartenant au plan."),
+                            fr=tr("Vecteur directeur de la droite ou 1er vecteur appartenant au plan.")),
            AXE_2           =SIMP(statut='f',typ='R',min=3,max=3,
-                            fr="2nd vecteur appartenant du plan."),
+                            fr=tr("2nd vecteur appartenant du plan.")),
+         ),
+         ABSC_CURV       =FACT(statut='f',max=1,
+           regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE',),
+                   UN_PARMI('GROUP_NO_ORIG','NOEUD_ORIG',),
+                   EXCLUS('TOUT','GROUP_MA'),
+                   EXCLUS('TOUT','MAILLE'),),
+           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           GROUP_NO_ORIG   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+           NOEUD_ORIG      =SIMP(statut='f',typ=no,validators=NoRepeat(),max=1),
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
@@ -28824,7 +30505,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
 
 MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o',
          UIinfo={"groupes":("Modélisation",)},
-         fr="Modifier la partition d'un modèle (parallélisme) ",
+         fr=tr("Modifier la partition d'un modèle (parallélisme) "),
 
          MODELE          =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,),
 
@@ -28861,14 +30542,18 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o',
 
 MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu="U4.44.12-e",reentrant='f',
             UIinfo={"groupes":("Modélisation","Rupture",)},
-                           fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes",
-                           
+                           fr=tr("Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes"),
+
+    regles = (UN_PARMI('FISSURE','MODELE_THER')),
+
     MODELE_IN       =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,),
-    FISSURE         =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',),
+    FISSURE         =SIMP(statut='f',typ=fiss_xfem,min=1,max=99,),
+    MODELE_THER     =SIMP(statut='f',typ=modele_sdaster,min=1,max=1,),
     CRITERE         =SIMP(statut='f',typ='R',defaut=1.1E-9),
     INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)),
     CONTACT        
-     =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON"),min=1,max=1,),
+     =SIMP(statut='f',typ='TXM',defaut='SANS',into=("SANS","STANDARD","MORTAR"),min=1,max=1,),
+    PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('AUTO','SANS','FORCE')),
 )  ;
 
 # ======================================================================
@@ -28888,85 +30573,104 @@ MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # person_in_charge: xavier.desroches at edf.fr
-def modi_repere_prod(RESULTAT,**args):
+def modi_repere_prod(RESULTAT,CHAM_GD,**args):
   if AsType(RESULTAT) != None : return AsType(RESULTAT)
+  if AsType(CHAM_GD)  != None : return AsType(CHAM_GD)
 
 MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='f',
-            UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
-                    fr="Calcule des résultats dans le repère cylindrique",
-         RESULTAT        =SIMP(statut='o',typ=resultat_sdaster),
-
-         regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
-                        'NOEUD_CMP','LIST_INST','LIST_FREQ','NOM_CAS'),),
-         TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-         NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
-         NUME_MODE       =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
-         NOEUD_CMP       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
-         NOM_CAS         =SIMP(statut='f',typ='TXM' ),
-
-         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
-         FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
-         LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-         LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
-
-         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
-         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-             PRECISION       =SIMP(statut='o',typ='R',),),
-
-         MODI_CHAM       =FACT(statut='o',max='**',
-           TYPE_CHAM       =SIMP(statut='o',typ='TXM',
-              into=("VECT_2D","VECT_3D","TENS_2D","TENS_3D","COQUE_GENE"),),
-           NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
-           b_vect_2d       =BLOC(condition = "TYPE_CHAM=='VECT_2D'",
-              NOM_CMP         =SIMP(statut='o',typ='TXM',min=2,max=2 ),),
-           b_vect_3d       =BLOC(condition = "TYPE_CHAM=='VECT_3D'",
-              NOM_CMP         =SIMP(statut='o',typ='TXM',min=3,max=3 ),),
-           b_tens_2d       =BLOC(condition = "TYPE_CHAM=='TENS_2D'",
-              NOM_CMP         =SIMP(statut='o',typ='TXM',min=4,max=4 ),),
-           b_tens_3d       =BLOC(condition = "TYPE_CHAM=='TENS_3D'",
-              NOM_CMP         =SIMP(statut='o',typ='TXM',min=6,max=6 ),),
-           b_coque_gene    =BLOC(condition = "TYPE_CHAM=='COQUE_GENE'",
-              NOM_CMP         =SIMP(statut='o',typ='TXM',min=8,max=8 ),),
-         ),
-         b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : COQUE_INTR_UTIL ou COQUE_UTIL_INTR autorise",
-           REPERE          =SIMP(statut='o',typ='TXM',position='global',
-                                 into=("COQUE_INTR_UTIL","COQUE_UTIL_INTR"),),
-           AFFE     =FACT(statut='o',max='**',
-            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-           ),
-          ),
-
-         b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant ",
-           REPERE          =SIMP(statut='f',typ='TXM',defaut="UTILISATEUR",position='global',
-                                 into=("UTILISATEUR","CYLINDRIQUE","COQUE",
-                                       "COQUE_INTR_UTIL","COQUE_UTIL_INTR"),),
-
-           AFFE     =FACT(statut='o',max='**',
-            b_cyl      =BLOC(condition = "REPERE == 'CYLINDRIQUE'",            
-              ORIGINE         =SIMP(statut='f',typ='R',min=2,max=3),
-              AXE_Z           =SIMP(statut='f',typ='R',min=3,max=3),),
-            b_uti      =BLOC(condition = "REPERE == 'UTILISATEUR'",             
-                            regles=(UN_PARMI('ANGL_NAUT','VECT_X'),
-                            ENSEMBLE('VECT_X','VECT_Y')),
-              ANGL_NAUT       =SIMP(statut='f',typ='R',max=3),
-              VECT_X          =SIMP(statut='f',typ='R',min=3,max=3 ),
-              VECT_Y          =SIMP(statut='f',typ='R',min=3,max=3 ),),
-            b_coq      =BLOC(condition = "REPERE == 'COQUE'",             
-                            regles=(UN_PARMI('ANGL_REP','VECTEUR'),),
-              ANGL_REP        =SIMP(statut='f',typ='R',min=2,max=2),
-              VECTEUR         =SIMP(statut='f',typ='R',min=3,max=3),),
-            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-            NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-          ),
-         ),
-          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
-         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-)  ;
+                 UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
+                 fr="Calcule les champs dans un nouveau repère.",
+#
+    regles=(UN_PARMI('CHAM_GD','RESULTAT',),),
+    CHAM_GD     =SIMP(statut='f',typ=cham_gd_sdaster),
+    RESULTAT    =SIMP(statut='f',typ=resultat_sdaster),
+#
+#   Traitement de RESULTAT
+    b_resultat=BLOC(condition="RESULTAT != None",
+                    fr="Changement de repère d'un champ extrait d'un résultat",
+        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+                       'NOEUD_CMP','LIST_INST','LIST_FREQ','NOM_CAS'),),
+        TOUT_ORDRE  =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+        NUME_ORDRE  =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+        NUME_MODE   =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+        NOEUD_CMP   =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+        NOM_CAS     =SIMP(statut='f',typ='TXM' ),
+
+        INST        =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+        FREQ        =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+        LIST_INST   =SIMP(statut='f',typ=listr8_sdaster),
+        LIST_FREQ   =SIMP(statut='f',typ=listr8_sdaster),
+
+        CRITERE     =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+        b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+            PRECISION   =SIMP(statut='f',typ='R',defaut= 1.E-6,),
+        ),
+        b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+            PRECISION   =SIMP(statut='o',typ='R',),
+        ),
+        MODI_CHAM   =FACT(statut='o',max='**',
+            TYPE_CHAM       =SIMP(statut='o',typ='TXM',
+                                  into=("VECT_2D","VECT_3D","TENS_2D","TENS_3D","COQUE_GENE"),),
+            NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),),
+            b_vect_2d   =BLOC(condition = "TYPE_CHAM=='VECT_2D'",
+                NOM_CMP     =SIMP(statut='o',typ='TXM',min=2,max=2,), ),
+            b_vect_3d   =BLOC(condition = "TYPE_CHAM=='VECT_3D'",
+                NOM_CMP     =SIMP(statut='o',typ='TXM',min=3,max=3,), ),
+            b_tens_2d   =BLOC(condition = "TYPE_CHAM=='TENS_2D'",
+                NOM_CMP     =SIMP(statut='o',typ='TXM',min=4,max=4,), ),
+            b_tens_3d   =BLOC(condition = "TYPE_CHAM=='TENS_3D'",
+                NOM_CMP     =SIMP(statut='o',typ='TXM',min=6,max=6,), ),
+            b_coque_gene=BLOC(condition = "TYPE_CHAM=='COQUE_GENE'",
+                NOM_CMP     =SIMP(statut='o',typ='TXM',min=8,max=8,), ),
+        ),
+    ),
+    b_resu_reuse=BLOC(condition = "RESULTAT != None and reuse",
+                fr="Résultat réentrant : COQUE_INTR_UTIL ou COQUE_UTIL_INTR autorise",
+        REPERE          =SIMP(statut='o',typ='TXM',position='global',
+                                into=("COQUE_INTR_UTIL","COQUE_UTIL_INTR","COQUE_UTIL_CYL"),),
+        AFFE     =FACT(statut='o',max='**',
+            GROUP_MA    =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',),
+            MAILLE      =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**',),
+        ),
+    ),
+    b__resu_not_reuse=BLOC(condition = "RESULTAT != None and not reuse",fr="Résultat non réentrant ",
+        REPERE  =SIMP(statut='f',typ='TXM',defaut="UTILISATEUR",position='global',
+                        into=("UTILISATEUR","CYLINDRIQUE","COQUE",
+                            "COQUE_INTR_UTIL","COQUE_UTIL_INTR","COQUE_UTIL_CYL"),),
+        AFFE     =FACT(statut='o',max='**',
+            b_cyl       =BLOC(condition = "REPERE in ('CYLINDRIQUE', 'COQUE_UTIL_CYL')",
+                ORIGINE         =SIMP(statut='f',typ='R',min=2,max=3,),
+                AXE_Z           =SIMP(statut='f',typ='R',min=3,max=3,),
+            ),
+            b_uti       =BLOC(condition = "REPERE == 'UTILISATEUR'",
+                            regles=(UN_PARMI('ANGL_NAUT','VECT_X'),
+                                    ENSEMBLE('VECT_X','VECT_Y')),
+                ANGL_NAUT       =SIMP(statut='f',typ='R',max=3,),
+                VECT_X          =SIMP(statut='f',typ='R',min=3,max=3,),
+                VECT_Y          =SIMP(statut='f',typ='R',min=3,max=3,),
+            ),
+            b_coq      =BLOC(condition = "REPERE == 'COQUE'",
+                            regles=(UN_PARMI('ANGL_REP','VECTEUR'),),
+                ANGL_REP        =SIMP(statut='f',typ='R',min=2,max=2,),
+                VECTEUR         =SIMP(statut='f',typ='R',min=3,max=3,),
+            ),
+        GROUP_MA    =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',),
+        GROUP_NO    =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**',),
+        MAILLE      =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**',),
+        NOEUD       =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**',),
+        ),
+    ),
+#
+#   Traitement de CHAM_GD
+    b_cham_gd=BLOC(condition="CHAM_GD != None and not reuse",
+            fr="Changement de repère du champ",
+        REPERE      =SIMP(statut='o',typ='TXM',defaut="GLOBAL_UTIL",position='global',
+                          into=("GLOBAL_UTIL",),),
+        CARA_ELEM   =SIMP(statut='o',typ=cara_elem,),
+    ),
+    TITRE   =SIMP(statut='f',typ='TXM',max='**',),
+    INFO    =SIMP(statut='f',typ='I',defaut=1,into=(1,2),),
+);
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -28993,27 +30697,27 @@ def norm_mode_prod(MODE,**args ):
   raise AsException("type de concept resultat non prevu")
 
 NORM_MODE=OPER(nom="NORM_MODE",op=  37,sd_prod=norm_mode_prod,
-               fr="Normer des modes propres en fonction d'un critère choisi par l'utilisateur",
+               fr=tr("Normer des modes propres en fonction d'un critère choisi par l'utilisateur"),
                reentrant='f',
             UIinfo={"groupes":("Résolution","Dynamique",)},
          regles=(UN_PARMI('NORME','GROUP_NO','NOEUD','AVEC_CMP','SANS_CMP'),),
          MODE       =SIMP(statut='o',typ=(mode_meca,mode_flamb) ),
-         NORME      =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...",
+         NORME      =SIMP(statut='f',typ='TXM',fr=tr("Norme prédéfinie : masse généralisée, euclidienne,..."),
                           into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ),
-         NOEUD      =SIMP(statut='f',typ=no, fr="Composante donnée d'un noeud spécifié égale à 1"),
-         GROUP_NO   =SIMP(statut='f',typ=grno,fr="Composante donnée d'un groupe contenant un seul noeud spécifié égale à 1"),
+         NOEUD      =SIMP(statut='f',typ=no, fr=tr("Composante donnée d'un noeud spécifié égale à 1")),
+         GROUP_NO   =SIMP(statut='f',typ=grno,fr=tr("Composante donnée d'un groupe contenant un seul noeud spécifié égale à 1")),
          b_noeud    =BLOC(condition = "NOEUD != None or GROUP_NO != None",
            NOM_CMP    =SIMP(statut='o',typ='TXM' ),
          ),
          AVEC_CMP   =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
          SANS_CMP   =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
-         MODE_SIGNE =FACT(statut='f',fr="Imposer un signe sur une des composantes des modes",
+         MODE_SIGNE =FACT(statut='f',fr=tr("Imposer un signe sur une des composantes des modes"),
                   regles=(UN_PARMI('GROUP_NO','NOEUD'),),
-           NOEUD      =SIMP(statut='f',typ=no,fr="Noeud où sera imposé le signe"),
-           GROUP_NO   =SIMP(statut='f',typ=grno,fr="Groupe d'un seul noeud où sera imposé le signe"),
-           NOM_CMP    =SIMP(statut='o',typ='TXM',fr="Composante du noeud où sera imposé le signe" ),
+           NOEUD      =SIMP(statut='f',typ=no,fr=tr("Noeud où sera imposé le signe")),
+           GROUP_NO   =SIMP(statut='f',typ=grno,fr=tr("Groupe d'un seul noeud où sera imposé le signe")),
+           NOM_CMP    =SIMP(statut='o',typ='TXM',fr=tr("Composante du noeud où sera imposé le signe") ),
            SIGNE      =SIMP(statut='f',typ='TXM',defaut="POSITIF",into=("NEGATIF","POSITIF"),
-                            fr="Choix du signe" ),
+                            fr=tr("Choix du signe") ),
          ),
 
          MASSE = SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ), ),
@@ -29042,7 +30746,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op=  37,sd_prod=norm_mode_prod,
 # person_in_charge: jacques.pellet at edf.fr
 NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
-              fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice",
+              fr=tr("Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice"),
                   regles=(UN_PARMI('MATR_RIGI','MODELE'),),
          MATR_RIGI       =SIMP(statut='f',validators=NoRepeat(),max=100,
                                typ=(matr_elem_depl_r ,matr_elem_depl_c,matr_elem_temp_r ,matr_elem_pres_c) ),
@@ -29051,16 +30755,16 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
            CHARGE     =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),),
          ),
          METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","PETSC","MUMPS") ),
-         b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale",
+         b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr=tr("paramètres associés à la méthode multifrontale"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
          ),
-         b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT",
+         b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr=tr("paramètres associés à la méthode LDLT"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
-         b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+         b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr=tr("Paramètres de la méthode MUMPS"),
            RENUM        =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")),
          ),
-         b_gcpc          =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr="paramètres associés à la GCPC ou PETSc",
+         b_gcpc          =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr=tr("paramètres associés à la GCPC ou PETSc"),
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
          INFO            =SIMP(statut='f',typ='I',into=(1,2)),
@@ -29084,7 +30788,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
 # ======================================================================
 # person_in_charge: mathieu.corus at edf.fr
 NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene,
-                   fr="Etablissement de la numérotation des ddl d'un modèle etabli en coordonnées généralisees",
+                   fr=tr("Etablissement de la numérotation des ddl d'un modèle etabli en coordonnées généralisees"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=UN_PARMI('MODELE_GENE','BASE'),
@@ -29134,7 +30838,7 @@ OBSERVATION=MACRO(nom="OBSERVATION",
                   op=OPS('Macro.observation_ops.observation_ops'),
                   UIinfo={"groupes":("Matrices et vecteurs",)},
                   sd_prod=observation_prod,
-                  fr="Calcul de l'observabilite d'un champ aux noeuds ",
+                  fr=tr("Calcul de l'observabilite d'un champ aux noeuds "),
 #
          MODELE_1        =SIMP(statut='o',typ=modele_sdaster),
          MODELE_2        =SIMP(statut='o',typ=modele_sdaster),
@@ -29160,14 +30864,14 @@ OBSERVATION=MACRO(nom="OBSERVATION",
          PROJECTION     =SIMP(statut='f',max=1,typ='TXM',into=("OUI","NON"),defaut="OUI"),
          CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
          DISTANCE_MAX    =SIMP(statut='f',typ='R',
-                fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
+                fr=tr("Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément.")),
          ALARME          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
 
          TYPE_CHAM       =SIMP(statut='f',typ='TXM',into=("NOEU",),
-                fr="Pour forcer le type des champs projetés. NOEU -> cham_no"),
+                fr=tr("Pour forcer le type des champs projetés. NOEU -> cham_no")),
 
 #           PROL_ZERO       =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
-#                fr="Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger"
+#                fr=tr("Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger")
 #                   +" les champs par zéro la ou la projection ne donne pas de valeurs."),
 
          MATR_RIGI       =SIMP(statut='f',typ=(matr_asse_depl_r) ),
@@ -29317,19 +31021,19 @@ POST_BORDET =MACRO(nom="POST_BORDET",
                    sd_prod=table_sdaster,
                    UIinfo={"groupes":("Outils-métier","Rupture",)},
                    reentrant='n',
-                   fr="calcul de la probabilite de clivage via le modele de Bordet",
+                   fr=tr("calcul de la probabilite de clivage via le modele de Bordet"),
          regles=(UN_PARMI('TOUT','GROUP_MA'),
                  UN_PARMI('INST','NUME_ORDRE'),
                  ),
          TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",)),
          GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                           fr="le calcul ne sera effectué que sur ces mailles"),
+                           fr=tr("le calcul ne sera effectué que sur ces mailles")),
          INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),),
          PRECISION =SIMP(statut='f',typ='R',validators=NoRepeat(),val_min=0.,val_max=1E-3,defaut=1E-6),
          CRITERE   =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU") ),
          NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),),
          PROBA_NUCL      =SIMP(statut='f',typ='TXM',into=("NON","OUI"), defaut="NON",
-                      fr="prise en compte du facteur exponentiel"),
+                      fr=tr("prise en compte du facteur exponentiel")),
          b_nucl          =BLOC( condition = "PROBA_NUCL=='OUI'",
                           PARAM =FACT(statut='o',
                                  M                =SIMP(statut='o',typ='R',val_min=0.E+0),
@@ -29352,7 +31056,7 @@ POST_BORDET =MACRO(nom="POST_BORDET",
                                  ),
 
          RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,
-                                      fr="Resultat d'une commande globale STAT_NON_LINE"),
+                                      fr=tr("Resultat d'une commande globale STAT_NON_LINE")),
          TEMP            =SIMP(statut='o',typ=(fonction_sdaster,'R')),
          COEF_MULT       =SIMP(statut='f',typ='R', defaut=1.),
            )
@@ -29385,11 +31089,11 @@ def post_cham_xfem_prod(RESULTAT,**args ):
 
 POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=post_cham_xfem_prod,
                     reentrant='n',UIinfo={"groupes":("Post-traitements","Rupture",)},
-            fr="Calcul des champs DEPL, SIEF_ELGA et VARI_ELGA sur le maillage de visualisation (fissuré)",
+            fr=tr("Calcul des champs DEPL, SIEF_ELGA et VARI_ELGA sur le maillage de visualisation (fissuré)"),
     RESULTAT      = SIMP(statut='o',typ=resultat_sdaster),
     MODELE_VISU   = SIMP(statut='o',typ=modele_sdaster,),
     INFO          = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
-);                     
+);
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -29423,7 +31127,7 @@ liste_option_extr=("EPEQ_ELGA","EPEQ_ELNO","EPSI_ELGA","EPSI_ELNO",
 
 POST_CHAMP=OPER(nom="POST_CHAMP",op=155,sd_prod=post_champ_prod, reentrant='n',
             UIinfo={"groupes":("Post-traitements","Eléments de structure",)},
-                 fr="extraction de champs sur un sous-point. ",
+                 fr=tr("extraction de champs sur un sous-point. "),
 
          regles=(UN_PARMI('EXTR_COQUE','EXTR_TUYAU','EXTR_PMF','MIN_MAX_SP','COQU_EXCENT'),
                  EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP',
@@ -29431,7 +31135,7 @@ POST_CHAMP=OPER(nom="POST_CHAMP",op=155,sd_prod=post_champ_prod, reentrant='n',
                  ),
 
          RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,
-                               fr="Resultat d'une commande globale"),
+                               fr=tr("Resultat d'une commande globale")),
 
 
 #====
@@ -29469,59 +31173,59 @@ POST_CHAMP=OPER(nom="POST_CHAMP",op=155,sd_prod=post_champ_prod, reentrant='n',
 #====
 # Extraction sur un sous-point d'une coque :
 #====
-         EXTR_COQUE  =FACT(statut='f', max=1, fr="extraction sur un sous-point d'une coque",
+         EXTR_COQUE  =FACT(statut='f', max=1, fr=tr("extraction sur un sous-point d'une coque"),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
                               into=liste_option_extr,),
            NUME_COUCHE  =SIMP(statut='o',typ='I',val_min=1,
-                             fr="numero de couche dans l'épaisseur de la coque" ),
+                             fr=tr("numero de couche dans l'épaisseur de la coque") ),
            NIVE_COUCHE  =SIMP(statut='o',typ='TXM',into=("SUP","INF","MOY"),
-                             fr="position dans l'épaisseur de la couche" ),
+                             fr=tr("position dans l'épaisseur de la couche") ),
            ),
 
 
 #====
 # Extraction sur un sous-point d'un tuyau :
 #====
-         EXTR_TUYAU  =FACT(statut='f', max=1, fr="extraction sur un sous-point d'un tuyau",
+         EXTR_TUYAU  =FACT(statut='f', max=1, fr=tr("extraction sur un sous-point d'un tuyau"),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
                               into=liste_option_extr ,),
            NUME_COUCHE  =SIMP(statut='o',typ='I',val_min=1,
-                             fr="numero de couche dans l'épaisseur du tuyau" ),
+                             fr=tr("numero de couche dans l'épaisseur du tuyau") ),
            NIVE_COUCHE  =SIMP(statut='o',typ='TXM',into=("SUP","INF","MOY"),
-                             fr="position dans l'épaisseur de la couche" ),
+                             fr=tr("position dans l'épaisseur de la couche") ),
            ANGLE        =SIMP(statut='o',typ='I',val_min=0,val_max=360,
-                             fr="angle de dépouillement pour les tuyaux, en degrés à partir de la génératrice" ),
+                             fr=tr("angle de dépouillement pour les tuyaux, en degrés à partir de la génératrice") ),
            ),
 
 
 #====
 # Extraction sur un sous-point d'une poutre multifibre :
 #====
-         EXTR_PMF  =FACT(statut='f', max=1, fr="extraction sur un sous-point d'une poutre multifibre",
+         EXTR_PMF  =FACT(statut='f', max=1, fr=tr("extraction sur un sous-point d'une poutre multifibre"),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
                               into=liste_option_extr,),
            NUME_FIBRE  =SIMP(statut='o',typ='I',val_min=1,
-                             fr="numéro de la fibre dans la poutre multifibre" ),
+                             fr=tr("numéro de la fibre dans la poutre multifibre") ),
            ),
 
 
 #====
 # Extraction des min / max sur les sous-points :
 #====
-         MIN_MAX_SP  =FACT(statut='f', max='**', fr="extraction du min/max d'une composante pour un champ",
+         MIN_MAX_SP  =FACT(statut='f', max='**', fr=tr("extraction du min/max d'une composante pour un champ"),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',
                               into=liste_option_extr,),
-           NOM_CMP        =SIMP(statut='o',typ='TXM',fr="nom de la composante",  ),
+           NOM_CMP        =SIMP(statut='o',typ='TXM',fr=tr("nom de la composante"),  ),
            TYPE_MAXI      =SIMP(statut='o',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS",) ),
            NUME_CHAM_RESU = SIMP(statut='o', typ='I', val_min=1, val_max=20,
-                          fr="Numéro du champ produit. Exemple: 6 produit le champ UT06",),
+                          fr=tr("Numéro du champ produit. Exemple: 6 produit le champ UT06"),),
            ),
 
 
 #====
 # Calcul des efforts des coques "excentrées" sur le feuillet moyen de la coque :
 #====
-         COQU_EXCENT  =FACT(statut='f', max=2, fr="Calcul des efforts d'une coque 'excentrée' sur le feuillet moyen de la coque",
+         COQU_EXCENT  =FACT(statut='f', max=2, fr=tr("Calcul des efforts d'une coque 'excentrée' sur le feuillet moyen de la coque"),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO","EFGE_ELGA",),),
            MODI_PLAN    =SIMP(statut='o',typ='TXM',into=("OUI",),),
            ),
@@ -29550,23 +31254,79 @@ POST_COQUE=MACRO(nom="POST_COQUE",
                  sd_prod=table_sdaster,
                  reentrant='n',
                  UIinfo={"groupes":("Post-traitements",)},
-                 fr="Calcul des efforts et déformations en un point et une cote " \
-                    "quelconque de la coque",
+                 fr=tr("Calcul des efforts et déformations en un point et une cote "
+                      "quelconque de la coque"),
 
              regles=(EXCLUS('INST','NUME_ORDRE'),),
 
              # SD résultat et champ à posttraiter :
-             RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à posttraiter",),
+             RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,fr=tr("RESULTAT à posttraiter"),),
              CHAM            =SIMP(statut='o',typ='TXM',into=("EFFORT","DEFORMATION",)),
              NUME_ORDRE      =SIMP(statut='f',typ='I'),
              INST            =SIMP(statut='f',typ='R'),
 
              # points de post-traitement :
-             COOR_POINT      =FACT(statut='o',max='**',fr="coordonnées et position dans l'épaisseur",
+             COOR_POINT      =FACT(statut='o',max='**',fr=tr("coordonnées et position dans l'épaisseur"),
                                    COOR=SIMP(statut='o',typ='R',min=3,max=4),),
 
             )
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# person_in_charge: jerome.laverne at edf.fr
+# ----------------------------------------------------------------------
+#  POST_CZM_FISS : 
+#  ---------------
+#  OPTION = 'LONGUEUR'
+#    - CALCUL DE LA LONGUEUR DES FISSURES COHESIVES 2D
+#    - PRODUIT UNE TABLE
+#  OPTION = 'TRIAXIALITE'
+#    - CALCUL DE LA TRIAXIALITE DANS LES ELEMENTS MASSIFS CONNECTES A 
+#      L'INTERFACE COHESIVE
+#    - PRODUIT UNE CARTE
+# ----------------------------------------------------------------------
+
+def post_czm_fiss_prod(self,OPTION,**args):
+  if OPTION == 'LONGUEUR'    : return table_sdaster
+  if OPTION == 'TRIAXIALITE' : return carte_sdaster
+  raise AsException("type de concept resultat non prevu")
+
+POST_CZM_FISS=MACRO(
+
+  nom="POST_CZM_FISS",
+  op=OPS('Macro.post_czm_fiss_ops.post_czm_fiss_ops'),
+  sd_prod=post_czm_fiss_prod,
+  reentrant='n',
+  UIinfo={"groupes":("Rupture",)},
+  fr=tr("Post-Traiement scpécifiques aux modèles CZM"),
+
+  OPTION = SIMP(statut='o',typ='TXM',max=1,into=("LONGUEUR","TRIAXIALITE"),),
+
+  RESULTAT = SIMP(statut='o',typ=evol_noli,max=1,),
+
+  b_longueur =BLOC(
+    condition  = "OPTION == 'LONGUEUR' ",
+    GROUP_MA   = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+    POINT_ORIG = SIMP(statut='o',typ='R',min=2,max=2),
+    VECT_TANG  = SIMP(statut='o',typ='R',min=2,max=2),
+                  ),
+
+                    )
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -29589,7 +31349,7 @@ POST_COQUE=MACRO(nom="POST_COQUE",
 POST_DECOLLEMENT=MACRO(nom="POST_DECOLLEMENT",
                        op=OPS('Macro.post_decollement_ops.post_decollement_ops'),
                        sd_prod=table_sdaster,
-                       fr="calcul du rapport de surfaces de contact radier/sol",
+                       fr=tr("calcul du rapport de surfaces de contact radier/sol"),
                        reentrant='n',
                        UIinfo={"groupes":("Post-traitements",)},
          RESULTAT   =SIMP(statut='o',typ=(evol_noli) ),
@@ -29619,44 +31379,52 @@ POST_DECOLLEMENT=MACRO(nom="POST_DECOLLEMENT",
 POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA",
                      op=OPS('Macro.post_dyna_alea_ops.post_dyna_alea_ops'),
                      sd_prod=table_sdaster,
-                     fr="Traitements statistiques de résultats de type interspectre " \
-                        "et impression sur fichiers",
+                     fr=tr("Traitements statistiques de résultats de type interspectre "
+                          "et impression sur fichiers"),
                      reentrant='n',
                      UIinfo={"groupes":("Post-traitements","Dynamique",)},
          regles=(UN_PARMI('FRAGILITE','INTERSPECTRE'),),
-         FRAGILITE  =FACT(statut='f',fr="donnees pour courbe de fragilite",max=1,
-                    TABL_RESU  =SIMP(statut='o',typ=table_sdaster),
-                    regles=(UN_PARMI('VALE','LIST_PARA'),),
-                    VALE       = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**' ),
-                    LIST_PARA  = SIMP(statut='f',typ=listr8_sdaster),
-                    AM_INI     = SIMP(statut='f',typ='R',defaut= 0.4 ),
-                    BETA_INI   = SIMP(statut='f',typ='R',defaut= 0.3 ),
-                    FRACTILE   = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**'),
-                    b_inte_spec_f  = BLOC(condition="""FRACTILE !=None""",
-                        NB_TIRAGE =SIMP(statut='f',typ='I' ),),
-                 ),
-         INTERSPECTRE  =FACT(statut='f',fr="donnees pour interspectre",max=1,
-                  regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),),
-                   INTE_SPEC       =SIMP(statut='o',typ=interspectre),
-                   NUME_ORDRE_I    =SIMP(statut='f',typ='I',max='**' ),
-                   NOEUD_I         =SIMP(statut='f',typ=no,max='**'),
-                   OPTION          =SIMP(statut='f',typ='TXM',into=("DIAG","TOUT",) ),
-                   b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
-                       NUME_ORDRE_J    =SIMP(statut='o',typ='I',max='**' ),
-                                ),
-                   b_noeud_i      =BLOC(condition = "NOEUD_I != None",
-                       NOEUD_J         =SIMP(statut='o',typ=no,max='**'),
-                       NOM_CMP_I       =SIMP(statut='o',typ='TXM',max='**' ),
-                       NOM_CMP_J       =SIMP(statut='o',typ='TXM',max='**' ),
-                                ),
-                   MOMENT          =SIMP(statut='f',typ='I',max='**',fr="Moments spectraux "\
-                                                         "en complément des cinq premiers" ),
-                   DUREE           =SIMP(statut='f',typ='R',fr="durée de la phase forte "\
-                                                              "pour facteur de peak" ),
-                ),       
+         FRAGILITE=FACT(statut='f',
+                        fr=tr("donnees pour courbe de fragilite"),
+                        max=1,
+                        regles=(UN_PARMI('VALE','LIST_PARA'),),
+                        TABL_RESU  =SIMP(statut='o',typ=table_sdaster),
+                        VALE       = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**' ),
+                        LIST_PARA  = SIMP(statut='f',typ=listr8_sdaster),
+                        METHODE    = SIMP(statut='o',typ='TXM',into=("EMV","REGRESSION") ),
+                        a_methode =BLOC(condition = "METHODE == 'REGRESSION'", 
+                            SEUIL     = SIMP(statut='o',typ='R' ),  ), 
+                        b_methode =BLOC(condition = "METHODE == 'EMV'",
+                           SEUIL     = SIMP(statut='f',typ='R' ),   
+                           AM_INI     = SIMP(statut='o',typ='R' ),
+                           BETA_INI   = SIMP(statut='f',typ='R',defaut= 0.3 ),
+                           FRACTILE   = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**'),
+                           b_inte_spec_f  = BLOC(condition="""FRACTILE !=None""",
+                               NB_TIRAGE =SIMP(statut='f',typ='I' ),),),),
+
+         INTERSPECTRE=FACT(statut='f',
+                           max=1,
+                           fr=tr("donnees pour interspectre"),
+                           regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),),
+                           INTE_SPEC       =SIMP(statut='o',typ=interspectre),
+                           NUME_ORDRE_I    =SIMP(statut='f',typ='I',max='**' ),
+                           NOEUD_I         =SIMP(statut='f',typ=no,max='**'),
+                           OPTION          =SIMP(statut='f',typ='TXM',into=("DIAG","TOUT",) ),
+                           b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
+                               NUME_ORDRE_J    =SIMP(statut='o',typ='I',max='**' ),
+                                        ),
+                           b_noeud_i      =BLOC(condition = "NOEUD_I != None",
+                               NOEUD_J         =SIMP(statut='o',typ=no,max='**'),
+                               NOM_CMP_I       =SIMP(statut='o',typ='TXM',max='**' ),
+                               NOM_CMP_J       =SIMP(statut='o',typ='TXM',max='**' ),
+                                        ),
+                           MOMENT          =SIMP(statut='f',typ='I',max='**',
+                                                 fr=tr("Moments spectraux en complément des cinq premiers")),
+                           DUREE           =SIMP(statut='f',typ='R',
+                                                 fr=tr("durée de la phase forte pour facteur de peak"))),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-)  ;
+)
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -29676,13 +31444,13 @@ POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA",
 # ======================================================================
 # person_in_charge: emmanuel.boyere at edf.fr
 POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster,
-                      fr="Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL",
+                      fr=tr("Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL"),
                       reentrant='n',
             UIinfo={"groupes":("Post-traitements","Dynamique",)},
         regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),),
          RESU_GENE       =SIMP(statut='o',typ=tran_gene ),
          CHOC            =FACT(statut='f',max='**',
-                               fr="Analyse des non linéarités de choc",
+                               fr=tr("Analyse des non linéarités de choc"),
            INST_INIT       =SIMP(statut='f',typ='R',defaut= -1. ),  
            INST_FIN        =SIMP(statut='f',typ='R',defaut= 999. ),  
            NB_BLOC         =SIMP(statut='f',typ='I',defaut= 1 ),  
@@ -29692,7 +31460,7 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster,
            NB_CLASSE       =SIMP(statut='f',typ='I',defaut= 10 ),  
          ),
          RELA_EFFO_DEPL  =FACT(statut='f',
-                               fr="Analyse des relationsnon linéaires effort-déplacement",
+                               fr=tr("Analyse des relationsnon linéaires effort-déplacement"),
            NOEUD           =SIMP(statut='o',typ=no),
            NOM_CMP         =SIMP(statut='o',typ='TXM' ),  
          ),
@@ -29720,7 +31488,7 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster,
 
 POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
             UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
-               fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle",
+               fr=tr("Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle"),
 
          regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT','MINMAX',
                           'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE','NORME',
@@ -29736,7 +31504,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                ORIG_INER    = SIMP(statut='f',typ='R',min=3,max=3 ),
                               ),
          b_mass_iner = BLOC(condition = "( MASS_INER != None )",
-                       fr="calcul de la masse, les inerties et le centre de gravité",
+                       fr=tr("calcul de la masse, les inerties et le centre de gravité"),
                        regles=(EXCLUS('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
                                       'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
@@ -29776,7 +31544,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_ener_pot = BLOC(condition = "( ENER_POT  != None )",
-                       fr="calcul de l'énergie potentielle de déformation",
+                       fr=tr("calcul de l'énergie potentielle de déformation"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
                                       'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
@@ -29818,7 +31586,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_ener_cin = BLOC(condition = "( ENER_CIN != None )",
-                       fr="calcul de l'énergie cinétique",
+                       fr=tr("calcul de l'énergie cinétique"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
                                       'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
@@ -29857,7 +31625,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_ener_diss = BLOC(condition = "( ENER_DISS != None )",
-                       fr="calcul de l'énergie dissipée",
+                       fr=tr("calcul de l'énergie dissipée"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CARA_ELEM      = SIMP(statut='f',typ=cara_elem),
@@ -29888,7 +31656,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_ener_elas = BLOC(condition = "( ENER_ELAS != None )",
-                       fr="calcul de l'énergie de déformation élastique",
+                       fr=tr("calcul de l'énergie de déformation élastique"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CARA_ELEM      = SIMP(statut='f',typ=cara_elem),
@@ -29918,7 +31686,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_ener_totale = BLOC(condition = "( ENER_TOTALE != None )",
-                       fr="calcul de l'énergie de déformation totale",
+                       fr=tr("calcul de l'énergie de déformation totale"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CARA_ELEM      = SIMP(statut='f',typ=cara_elem),
@@ -29949,9 +31717,10 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                NOM_CHAM     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
                                NOM_CMP      = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
                                DEJA_INTEGRE = SIMP(statut='f',typ='TXM',into=("OUI","NON",),),
+                               TYPE_MAILLE  = SIMP(statut='o',typ='TXM',into=('1D','2D','3D'))
                               ),
          b_integrale = BLOC(condition = "( INTEGRALE != None )",
-                       fr="calcul de la moyenne d'une composante",
+                       fr=tr("calcul de la moyenne d'une composante"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
@@ -29975,6 +31744,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                        UN_PARMI('NB_INTERV','SEUIL'),),
                                TOUT         = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                                GROUP_MA     = SIMP(statut='f',typ=grma,max=1),
+                               CARA_ELEM      = SIMP(statut='f',typ=cara_elem),
                                TYPE_MAILLE  = SIMP(statut='f',typ='TXM',into=('2D','3D',)),
                                NOM_CHAM     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
                                NOM_CMP      = SIMP(statut='o',typ='TXM'),
@@ -29984,7 +31754,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                NORME        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
                               ),
          b_volumogramme = BLOC(condition = "( VOLUMOGRAMME != None )",
-                       fr="calcul de la distribution du volume d'une structure vis-à-vis d'une composante",
+                       fr=tr("calcul de la distribution du volume d'une structure vis-à-vis d'une composante"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
@@ -30004,7 +31774,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
          ),
 
          NORME  = FACT(statut='f',max=1,
-                       fr="calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés",
+                       fr=tr("calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés"),
                        regles=(UN_PARMI('TOUT','GROUP_MA'),
                                UN_PARMI('CHAM_GD','RESULTAT'),
                                PRESENT_PRESENT('CHAM_GD','MODELE'),
@@ -30043,7 +31813,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
 
 
          MINMAX  = FACT(statut='f',max=1,
-                       fr="calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés",
+                       fr=tr("calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                PRESENT_PRESENT('CHAM_GD','MODELE'),
                                PRESENT_PRESENT('RESULTAT','NOM_CHAM'),
@@ -30082,7 +31852,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                COEF_MULT    = SIMP(statut='f',typ='R',defaut=1.),
                               ),
          b_weibull = BLOC(condition = "( WEIBULL != None )",
-                       fr="calcul du champ élémentaire de la puissance m-ième de la contrainte de Weibull",
+                       fr=tr("calcul du champ élémentaire de la puissance m-ième de la contrainte de Weibull"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
@@ -30118,7 +31888,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                LOCAL        = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
                               ),
          b_rice_tracey = BLOC(condition = "( RICE_TRACEY != None )",
-                       fr="calcul du taux de croissance d'une cavité sphérique par rapport à un domaine",
+                       fr=tr("calcul du taux de croissance d'une cavité sphérique par rapport à un domaine"),
                        regles=(UN_PARMI('CHAM_GD','RESULTAT'),
                                EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
@@ -30150,7 +31920,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_indic_ener = BLOC(condition = "( INDIC_ENER != None )",
-                       fr="calcul un indicateur global de perte de proportionnalité du chargement",
+                       fr=tr("calcul un indicateur global de perte de proportionnalité du chargement"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CHARGE         = SIMP(statut='f',typ=(char_meca,char_cine_meca,
@@ -30177,7 +31947,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                               ),
          b_indic_seuil = BLOC(condition = "( INDIC_SEUIL != None )",
-                       fr="calcul un indicateur global de perte de proportionnalité du chargement",
+                       fr=tr("calcul un indicateur global de perte de proportionnalité du chargement"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CHARGE         = SIMP(statut='f',typ=(char_meca,char_cine_meca,
@@ -30201,7 +31971,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                CHAR_CSTE = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON")
                               ),
          b_char_limite = BLOC(condition = "( CHAR_LIMITE != None )",
-                       fr="post-traitement du calcul de la charge limite",
+                       fr=tr("post-traitement du calcul de la charge limite"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CARA_ELEM      = SIMP(statut='f',typ=cara_elem),
@@ -30232,7 +32002,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                ORIG_INER    = SIMP(statut='f',typ='R',min=2,max=2),
                               ),
          b_cara_geom = BLOC(condition = "( CARA_GEOM != None )",
-                       fr="calcul des caractéristiques géométriques d'un section de poutre",
+                       fr=tr("calcul des caractéristiques géométriques d'un section de poutre"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CHARGE         = SIMP(statut='f',typ=(char_meca,char_cine_meca,
@@ -30258,7 +32028,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                                     into=("CARA_TORSION","CARA_CISAILLEMENT","CARA_GAUCHI") ),
                              ),
          b_cara_poutre = BLOC(condition = "( CARA_POUTRE != None )",
-                       fr="calcul des caractéristiques mécaniques d'un section de poutre",
+                       fr=tr("calcul des caractéristiques mécaniques d'un section de poutre"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
                        CHAM_MATER     = SIMP(statut='f',typ=cham_mater),
                        CHARGE         = SIMP(statut='f',typ=(char_meca,char_cine_meca,
@@ -30270,13 +32040,13 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                 GROUP_MA_BORD  = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
                                ),
          b_aire_interne = BLOC(condition = "( AIRE_INTERNE != None )",
-                       fr="calcul de l'aire d'un trou dans un maillage 2D",
+                       fr=tr("calcul de l'aire d'un trou dans un maillage 2D"),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
          ),
 
          TRAV_EXT       = FACT(statut='f',),
          b_trav_ext = BLOC(condition = "( TRAV_EXT != None )",
-                       fr="calcul du travail des efforts extérieurs",
+                       fr=tr("calcul du travail des efforts extérieurs"),
                        RESULTAT       = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ),
                        CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
                        b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
@@ -30324,7 +32094,7 @@ POST_ENDO_FISS=MACRO(nom="POST_ENDO_FISS",
                      sd_prod=post_endo_fiss_prod,
                      reentrant='n',
                      UIinfo={"groupes":("Post-traitements","Outils-métier",)},
-                     fr="Individuation du trace d'une fissure a partir d'un champ scalaire pertinant",
+                     fr=tr("Individuation du trace d'une fissure a partir d'un champ scalaire pertinant"),
 
             TABLE  = SIMP(statut = 'o', typ = CO,),
 
@@ -30343,7 +32113,7 @@ POST_ENDO_FISS=MACRO(nom="POST_ENDO_FISS",
             RESULTAT        = SIMP(statut = 'f',typ = (evol_noli)),
             NOM_CMP         = SIMP(statut = 'o',typ='TXM',),
             NOM_CHAM        = SIMP(statut = 'o', typ = 'TXM',
-                                   fr = "nom du champ a post-traiter",),
+                                   fr = tr("nom du champ a post-traiter"),),
 
             RECHERCHE = FACT(statut = 'o',min=1,max='**',
                              regles = (
@@ -30380,7 +32150,7 @@ POST_ENDO_FISS=MACRO(nom="POST_ENDO_FISS",
 # person_in_charge: irmela.zentner at edf.fr
 POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant='n',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
-                    fr="Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire",
+                    fr=tr("Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire"),
          regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'),
                  PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'),
                  UN_PARMI('TABL_POST_ALEA','MOMENT_SPEC_0'), ),
@@ -30415,7 +32185,7 @@ POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant=
 # person_in_charge: van-xuan.tran at edf.fr
 POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
-                  fr="Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement",
+                  fr=tr("Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement"),
 
          CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","MULTIAXIAL","QUELCONQUE")),
 
@@ -30473,7 +32243,7 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
                                ),
                                
              TYPE_CHARGE    = SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE")),                            
-             DOMMAGE         = SIMP(statut='f',typ='TXM',into=("WOHLER","MANSON_C","FORM_VIE") ), 
+             DOMMAGE         = SIMP(statut='f',typ='TXM',into=("WOHLER","MANSON_COFFIN","FORM_VIE") ), 
              
              b_fati_pfvie  = BLOC(condition = "(DOMMAGE == 'FORM_VIE')",
                                     FORMULE_VIE   =SIMP(statut='o',typ=(fonction_sdaster,formule) ),
@@ -30527,6 +32297,72 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2014  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# person_in_charge: hassan.berro at edf.fr
+
+POST_GENE_PHYS  = OPER( nom="POST_GENE_PHYS",op=  58,sd_prod=table_sdaster,
+                        fr="Post-traiter dans la base physique des résultats dyanmiques en coordonnées généralisées",
+                        reentrant='n',
+                        UIinfo={"groupes":("Matrices et vecteurs",)},
+   
+                  RESU_GENE   = SIMP(statut = 'o', typ = (tran_gene,harm_gene) ), 
+                  MODE_MECA   = SIMP(statut = 'f', typ = mode_meca ),
+   
+                  OBSERVATION = FACT(statut = 'o', min = 1, max = '**',
+                                     regles=(EXCLUS('INST','LIST_INST','TOUT_INST','NUME_ORDRE','TOUT_ORDRE','FREQ','LIST_FREQ'),
+                                             EXCLUS('NOEUD','GROUP_NO','MAILLE','GROUP_MA'),
+                                             AU_MOINS_UN('NOEUD','GROUP_NO','MAILLE','GROUP_MA'),),
+
+                      NOM_CHAM   = SIMP(statut = 'o', typ = 'TXM', validators = NoRepeat(), max = 1, defaut = 'DEPL',
+                                        into   = ('DEPL'      ,'VITE'      ,'ACCE'        , 
+                                                 'DEPL_ABSOLU','VITE_ABSOLU','ACCE_ABSOLU', 
+                                                 'FORC_NODA'  ,'EFGE_ELNO'  ,'SIPO_ELNO'  ,
+                                                 'SIGM_ELNO'  ,'EFGE_ELGA'  ,'SIGM_ELGA'  ,),),
+                      NOM_CMP    = SIMP(statut = 'f', typ = 'TXM', max = 20,),
+                      INST       = SIMP(statut = 'f' , typ='R'           , validators = NoRepeat(), max = '**' ), 
+                      TOUT_INST  = SIMP(statut = 'f' , typ='TXM'         , into = ("OUI",) ),
+                      LIST_INST  = SIMP(statut = 'f' , typ=listr8_sdaster,),
+                      NUME_ORDRE = SIMP(statut = 'f' , typ='I'           , validators = NoRepeat(), max = '**' ),  
+                      TOUT_ORDRE = SIMP(statut = 'f' , typ='TXM'         , into = ("OUI",) ),
+                      FREQ       = SIMP(statut = 'f' , typ='R'           , validators = NoRepeat(), max = '**' ),  
+                      LIST_FREQ  = SIMP(statut = 'f' , typ=listr8_sdaster,),
+                      b_prec     = BLOC(condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
+                          CRITERE = SIMP(statut = 'f', typ = 'TXM', defaut = 'RELATIF', into = ('ABSOLU','RELATIF') ),
+                              b_prec_rela = BLOC(condition = "(CRITERE=='RELATIF')",
+                              PRECISION   = SIMP(statut = 'f', typ='R', defaut= 1.E-6,),),
+                              b_prec_abso = BLOC(condition = "(CRITERE=='ABSOLU')",
+                              PRECISION   = SIMP(statut = 'o', typ='R',),),),
+
+                      NOEUD      = SIMP(statut = 'f', typ=no  , validators = NoRepeat(), max = '**'),
+                      GROUP_NO   = SIMP(statut = 'f', typ=grno, validators = NoRepeat(), max = '**'),
+                      MAILLE     = SIMP(statut = 'f', typ=ma  , validators = NoRepeat(), max = '**'),
+                      GROUP_MA   = SIMP(statut = 'f', typ=grma, validators = NoRepeat(), max = '**'),
+
+                      b_acce_abs      = BLOC(condition = "(NOM_CHAM == 'ACCE_ABSOLU')",
+                                             regles    = (PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
+                      ACCE_MONO_APPUI = SIMP(statut = 'f', typ=(fonction_sdaster,nappe_sdaster,formule)),
+                      DIRECTION       = SIMP(statut = 'f', typ='R', min=3, max = 3 ),),),
+
+                  TITRE       = SIMP(statut = 'f', typ='TXM', max = '**' ),  
+)  ;
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2013  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -30548,8 +32384,8 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
 POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
                     op=OPS('Macro.post_k1_k2_k3_ops.post_k1_k2_k3_ops'),
                     sd_prod=table_sdaster,
-                    fr="Calcul des facteurs d'intensité de contraintes en 2D et en 3D par "\
-                       "extrapolation des sauts de déplacements sur les lèvres de la fissure",
+                    fr=tr("Calcul des facteurs d'intensité de contraintes en 2D et en 3D par "
+                         "extrapolation des sauts de déplacements sur les lèvres de la fissure"),
                     reentrant='n',
                     UIinfo={"groupes":("Post-traitements","Rupture",)},
 
@@ -30557,11 +32393,11 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
 
          MODELISATION  =SIMP(statut='o',typ='TXM',
                              into=("3D","AXIS","D_PLAN","C_PLAN"),position='global',
-                             fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"),
+                             fr=tr("Modélisation cohérente avec celle utilisée pour le calcul des déplacements")),
          FOND_FISS     =SIMP(statut='f',typ=fond_fiss),
          FISSURE       =SIMP(statut='f',typ=fiss_xfem),
          RESULTAT      =SIMP(statut='o',typ=(evol_elas,evol_noli,mode_meca),position='global',
-                             fr="Déplacement des noeuds de la lèvre supérieure et inférieure"),
+                             fr=tr("Déplacement des noeuds de la lèvre supérieure et inférieure")),
          NB_NOEUD_COUPE=SIMP(statut='f',typ='I',defaut=5,val_min = 3),
 
 #        bloc correspondant a la donnee du fond de fissure pour les fissures maillees
@@ -30569,7 +32405,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
 
               b_no_mod =BLOC (condition="AsType(RESULTAT)!= mode_meca",
                         
-                        EVOL_THER   = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure"),
+                        EVOL_THER   = SIMP(statut='f',typ=(evol_ther),fr=tr("Température sur le fond de fissure")),
                         b_ref_3D    = BLOC (condition="MODELISATION=='3D' ",
                                   TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"),
                                   ),  
@@ -30584,7 +32420,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
                          SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
                          TOUT          = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                          ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
-                             fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"),
+                             fr=tr("Distance maximum à partir du fond de fissure à utiliser pour le calcul")),
                          ),
 
 #        bloc correspondant a la donnee de la fissure pour les fissures X-FEM
@@ -30592,11 +32428,11 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
                          NB_POINT_FOND = SIMP(statut='f',typ='I' ,),
                          NUME_FOND     = SIMP(statut='f',typ='I',defaut=1),
                          ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
-                             fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"),
+                             fr=tr("Distance maximum à partir du fond de fissure à utiliser pour le calcul")),
                          ),
 
          MATER         =SIMP(statut='o',typ=mater_sdaster,
-                             fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"),
+                             fr=tr("Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements")),
 
          
          PREC_VIS_A_VIS=SIMP(statut='f',typ='R',defaut=0.1),
@@ -30655,21 +32491,27 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",
 # person_in_charge: aurore.parrot at edf.fr
 #
 POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster,
-                   fr="Calcul des facteurs d'intensité de contraintes par la méthode K_BETA",
+                   fr=tr("Calcul des facteurs d'intensité de contraintes par la méthode K_BETA"),
                    reentrant='n',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
          MAILLAGE      = SIMP(statut='o',typ=maillage_sdaster),
          MATER_REV     = SIMP(statut='o',typ=mater_sdaster),
-         EPAIS_REV     = SIMP(statut='o',typ='R'),
+         EPAIS_REV     = SIMP(statut='f',typ='R'),
+         MATER_MDB     = SIMP(statut='f',typ=mater_sdaster),
+         EPAIS_MDB     = SIMP(statut='f',typ='R'),
          FISSURE       = FACT(statut='o',
-            DECALAGE       = SIMP(statut='f',typ='R',defaut=-2.e-04),
+            FORM_FISS      =SIMP(statut='o',typ='TXM',defaut="ELLIPSE",
+                                 into=("ELLIPSE","SEMI_ELLIPSE") ),
+            b_fissure=BLOC(condition="FORM_FISS == 'ELLIPSE'",
+              DECALAGE       = SIMP(statut='f',typ='R',defaut=-2.e-04),
+            ),
             PROFONDEUR     = SIMP(statut='o',typ='R'),
             LONGUEUR       = SIMP(statut='o',typ='R'),
             ORIENTATION    = SIMP(statut='o',typ='TXM',
                                  into=("CIRC","LONGI"),),
          ),
          K1D           = FACT(statut='o',max='**',
-            TABL_MECA_REV  = SIMP(statut='o',typ=(table_sdaster)),
+            TABL_MECA_REV  = SIMP(statut='f',typ=(table_sdaster)),
             TABL_MECA_MDB  = SIMP(statut='o',typ=(table_sdaster)),
             TABL_THER      = SIMP(statut='o',typ=(table_sdaster)),
             INTITULE       = SIMP(statut='o',typ='TXM' ), 
@@ -30699,7 +32541,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster,
 POST_K_TRANS=MACRO(nom="POST_K_TRANS",
                    op=OPS('Macro.post_k_trans_ops.post_k_trans_ops'),
                    sd_prod=table_sdaster,
-                   fr="Calcul des facteurs d intensite des contrainte par recombinaison modale",
+                   fr=tr("Calcul des facteurs d intensite des contrainte par recombinaison modale"),
                    reentrant='n',
                    UIinfo={"groupes":("Post-traitements","Rupture",)},
         RESU_TRANS      =SIMP(statut='o',typ=tran_gene),
@@ -30751,21 +32593,30 @@ POST_MAC3COEUR = MACRO(nom="POST_MAC3COEUR",
            INST         = SIMP(statut='o',typ='R', max=1),                            # INSTANT
            
            LAME    = FACT(statut='f',max='**',
-                          fr="Post-traitement des lames d'eau, par grille ou valeurs min/max",
-                          regles = UN_PARMI('NUME_GRILLE','TYPE_RESU',),
-                 NUME_GRILLE  = SIMP(statut='f',typ='I', max=1),                      # NUMERO DE LA GRILLE A POST-TRAITER
-                 TYPE_RESU    = SIMP(statut='f',typ='TXM',into=("MINI","MAXI")),      # EXTREMA POUR LE POST
+                          fr=tr("Post-traitement des lames d'eau, par grille ou valeurs min/max"),
+
                  FORMAT       = SIMP(statut='o',typ='TXM',into=("GRACE","TABLE")),
                  UNITE        = SIMP(statut='o',typ='I', max=1),                   # NUMERO DE L'UNITE LOGIQUE POUR LE POST
+
+                 b_lame_grace  = BLOC(condition = "FORMAT == 'GRACE' ",fr=tr("Paramètres pour le format GRACE"),
+                       regles = UN_PARMI('NUME_GRILLE','TYPE_RESU',),
+                       NUME_GRILLE  = SIMP(statut='f',typ='I', max=1),                      # NUMERO DE LA GRILLE A POST-TRAITER
+                       TYPE_RESU    = SIMP(statut='f',typ='TXM',into=("MINI","MAXI")),      # EXTREMA POUR LE POST
+                                   ),
+
+                 b_lame_table  = BLOC(condition = "FORMAT == 'TABLE' ",fr=tr("Paramètres pour le format TABLE"),
+                                   ),
+
+
            ),
 
            DEFORMATION = FACT(statut='f',max='**',
-                              fr="Post-traitement des deformations, par grille ou valeurs min/max",
+                              fr=tr("Post-traitement des deformations, par grille ou valeurs min/max"),
        
                  UNITE        = SIMP(statut='o',typ='I', max=1),   
                  FORMAT       = SIMP(statut='o',typ='TXM',into=("GRACE","TABLE")),
                  
-                 b_def_grace  = BLOC(condition = "FORMAT == 'GRACE' ",fr="Paramètres pour le format GRACE",
+                 b_def_grace  = BLOC(condition = "FORMAT == 'GRACE' ",fr=tr("Paramètres pour le format GRACE"),
                        regles=UN_PARMI('NUME_GRILLE','TYPE_RESU','POSITION'),
                        TYPE_VISU    = SIMP(statut='o',typ='TXM',into=("AMPLITUDE","MODULE","VECTEUR","DEFORME")),
                        TYPE_RESU    = SIMP(statut='f',typ='TXM',into=("MINI","MAXI")),
@@ -30774,8 +32625,8 @@ POST_MAC3COEUR = MACRO(nom="POST_MAC3COEUR",
                        CONCEPTION   = SIMP(statut='f',typ='TXM', max=1),
                                    ),
                  
-                 b_def_table  = BLOC(condition = "FORMAT == 'TABLE' ",fr="Paramètres pour le format TABLE",
-                       NOM_CMP      = SIMP(statut='o',typ='TXM',into=("DY","DZ","NORME")),
+                 b_def_table  = BLOC(condition = "FORMAT == 'TABLE' ",fr=tr("Paramètres pour le format TABLE"),
+                       NOM_SITE     = SIMP(statut='o',typ='TXM', max=1),
                                    ),
                  
 
@@ -30801,7 +32652,7 @@ POST_MAC3COEUR = MACRO(nom="POST_MAC3COEUR",
 # person_in_charge: samuel.geniaut at edf.fr
 POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
                     reentrant='n',UIinfo={"groupes":("Maillage","Rupture",)},
-            fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM",
+            fr=tr("Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM"),
     MODELE        = SIMP(statut='o',typ=modele_sdaster),
     PREF_NOEUD_X   =SIMP(statut='f',typ='TXM',defaut="NX",validators=LongStr(1,2),),
     PREF_NOEUD_M   =SIMP(statut='f',typ='TXM',defaut="NM",validators=LongStr(1,2),),
@@ -30831,7 +32682,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
 # person_in_charge: samuel.geniaut at edf.fr
 
 POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
-               fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)",
+               fr=tr("Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)"),
                reentrant='n',
             UIinfo={"groupes":("Post-traitements","Rupture",)},
          TYPE_RESU       =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","DETAILS") ),
@@ -30846,23 +32697,23 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                                into=("PM_PB","SN","FATIGUE_ZH210","AMORCAGE") ),
          MATER           =SIMP(statut='o',typ=mater_sdaster ),
          SY_MAX          =SIMP(statut='f',typ='R',
-                               fr="limite élastique utilisée pour le calcul du rochet thermique" ),
+                               fr=tr("limite élastique utilisée pour le calcul du rochet thermique") ),
          TYPE_KE         =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
-                               fr="Ke meca seul ou partition mecanique + thermique" ),
+                               fr=tr("Ke meca seul ou partition mecanique + thermique") ),
                                
-         TRANSITOIRE     =FACT(statut='o',max='**',fr="transitoire à dépouiller",
+         TRANSITOIRE     =FACT(statut='o',max='**',fr=tr("transitoire à dépouiller"),
            regles=(EXCLUS('TOUT_ORDRE','INST','LIST_INST'),
                    UN_PARMI('TABL_RESU_MECA','TABL_SIGM_THETA'),),
            NB_OCCUR        =SIMP(statut='f',typ='I',defaut= 1,
-                                 fr="nombre d occurences réelles de ce transitoire" ),
+                                 fr=tr("nombre d occurences réelles de ce transitoire") ),
            TABL_RESU_MECA  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="relevé des contraintes sur le chemin"),
+                                 fr=tr("relevé des contraintes sur le chemin")),
            TABL_SIGM_THER  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="résultat sous chargement thermique seul" ),
+                                 fr=tr("résultat sous chargement thermique seul") ),
            TABL_RESU_PRES  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes sous chargement de pression" ),
+                                 fr=tr("table relevé des contraintes sous chargement de pression") ),
            TABL_SIGM_THETA =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes a la distance d de la singularité pour chacun des angles THETA" ),
+                                 fr=tr("table relevé des contraintes a la distance d de la singularité pour chacun des angles THETA") ),
            TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
            LIST_INST       =SIMP(statut='f',typ=listr8_sdaster ),
@@ -30882,112 +32733,112 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                                into=("PM_PB","SN","FATIGUE") ),
          MATER           =SIMP(statut='o',typ=mater_sdaster ),
          SY_MAX          =SIMP(statut='f',typ='R',
-                               fr="limite élastique utilisée pourle calcul du rochet thermique" ),
+                               fr=tr("limite élastique utilisée pourle calcul du rochet thermique") ),
          TYPE_KE         =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
-                               fr="Ke meca seul ou partition mecanique + thermique" ),
-         CHAR_MECA   =FACT(statut='o',max='**',fr="Chargements mécaniques",
+                               fr=tr("Ke meca seul ou partition mecanique + thermique") ),
+         CHAR_MECA   =FACT(statut='o',max='**',fr=tr("Chargements mécaniques"),
                            regles=(UN_PARMI('MX','MX_TUBU'),),
-           NUME_CHAR     =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
-           NOM_CHAR      =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
-           MX            =SIMP(statut='f',typ='R',fr="moment suivant x", ),
-           MX_TUBU       =SIMP(statut='f',typ='R',fr="moment suivant x, tubulure", ),
+           NUME_CHAR     =SIMP(statut='o',typ='I',fr=tr("numéro du chargement") ),
+           NOM_CHAR      =SIMP(statut='f',typ='TXM',fr=tr("nom du chargement") ),
+           MX            =SIMP(statut='f',typ='R',fr=tr("moment suivant x"), ),
+           MX_TUBU       =SIMP(statut='f',typ='R',fr=tr("moment suivant x, tubulure"), ),
            b_1_tenseur     =BLOC( condition = "MX != None",
-             FX            =SIMP(statut='f',typ='R',fr="effort suivant x", ),
-             FY            =SIMP(statut='f',typ='R',fr="effort suivant y", ),
-             FZ            =SIMP(statut='f',typ='R',fr="effort suivant z", ),
-             MY            =SIMP(statut='o',typ='R',fr="moment suivant y", ),
-             MZ            =SIMP(statut='o',typ='R',fr="moment suivant z", ),
+             FX            =SIMP(statut='f',typ='R',fr=tr("effort suivant x"), ),
+             FY            =SIMP(statut='f',typ='R',fr=tr("effort suivant y"), ),
+             FZ            =SIMP(statut='f',typ='R',fr=tr("effort suivant z"), ),
+             MY            =SIMP(statut='o',typ='R',fr=tr("moment suivant y"), ),
+             MZ            =SIMP(statut='o',typ='R',fr=tr("moment suivant z"), ),
            ),
            b_2_tenseurs    =BLOC( condition = "MX_TUBU != None",
-             FX_TUBU       =SIMP(statut='f',typ='R',fr="effort suivant x, tubulure", ),
-             FY_TUBU       =SIMP(statut='f',typ='R',fr="effort suivant y, tubulure", ),
-             FZ_TUBU       =SIMP(statut='f',typ='R',fr="effort suivant z, tubulure", ),
-             MY_TUBU       =SIMP(statut='o',typ='R',fr="moment suivant y, tubulure", ),
-             MZ_TUBU       =SIMP(statut='o',typ='R',fr="moment suivant z, tubulure", ),
-             FX_CORP       =SIMP(statut='f',typ='R',fr="effort suivant x, corps du piquage", ),
-             FY_CORP       =SIMP(statut='f',typ='R',fr="effort suivant y, corps du piquage", ),
-             FZ_CORP       =SIMP(statut='f',typ='R',fr="effort suivant z, corps du piquage", ),
-             MX_CORP       =SIMP(statut='o',typ='R',fr="moment suivant x, corps du piquage", ),
-             MY_CORP       =SIMP(statut='o',typ='R',fr="moment suivant y, corps du piquage", ),
-             MZ_CORP       =SIMP(statut='o',typ='R',fr="moment suivant z, corps du piquage", ),
+             FX_TUBU       =SIMP(statut='f',typ='R',fr=tr("effort suivant x, tubulure"), ),
+             FY_TUBU       =SIMP(statut='f',typ='R',fr=tr("effort suivant y, tubulure"), ),
+             FZ_TUBU       =SIMP(statut='f',typ='R',fr=tr("effort suivant z, tubulure"), ),
+             MY_TUBU       =SIMP(statut='o',typ='R',fr=tr("moment suivant y, tubulure"), ),
+             MZ_TUBU       =SIMP(statut='o',typ='R',fr=tr("moment suivant z, tubulure"), ),
+             FX_CORP       =SIMP(statut='f',typ='R',fr=tr("effort suivant x, corps du piquage"), ),
+             FY_CORP       =SIMP(statut='f',typ='R',fr=tr("effort suivant y, corps du piquage"), ),
+             FZ_CORP       =SIMP(statut='f',typ='R',fr=tr("effort suivant z, corps du piquage"), ),
+             MX_CORP       =SIMP(statut='o',typ='R',fr=tr("moment suivant x, corps du piquage"), ),
+             MY_CORP       =SIMP(statut='o',typ='R',fr=tr("moment suivant y, corps du piquage"), ),
+             MZ_CORP       =SIMP(statut='o',typ='R',fr=tr("moment suivant z, corps du piquage"), ),
            ),
 
                          ),
-         RESU_MECA_UNIT =FACT(statut='o',fr="resultats mécaniques unitaires",
+         RESU_MECA_UNIT =FACT(statut='o',fr=tr("resultats mécaniques unitaires"),
                               regles=(UN_PARMI('TABL_MX','TABL_MX_TUBU'),),
            TABL_MX       =SIMP(statut='f',typ=table_sdaster,
-                               fr="table relevé des contraintes pour chargement unitaire MX"),
+                               fr=tr("table relevé des contraintes pour chargement unitaire MX")),
            TABL_MX_TUBU  =SIMP(statut='f',typ=table_sdaster,
-                               fr="table relevé des contraintes pour chargement unitaire MX_TUBU"),
+                               fr=tr("table relevé des contraintes pour chargement unitaire MX_TUBU")),
            b_1_tenseur     =BLOC( condition = "TABL_MX != None",
              TABL_FX       =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FX"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FX")),
              TABL_FY       =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FY"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FY")),
              TABL_FZ       =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FZ"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FZ")),
              TABL_MY       =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MY"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MY")),
              TABL_MZ       =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MZ"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MZ")),
            ),
            b_2_tenseurs    =BLOC( condition = "TABL_MX_TUBU != None",
              TABL_FX_TUBU  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FX_TUBU"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FX_TUBU")),
              TABL_FY_TUBU  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FY_TUBU"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FY_TUBU")),
              TABL_FZ_TUBU  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FZ_TUBU"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FZ_TUBU")),
              TABL_MY_TUBU  =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MY_TUBU"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MY_TUBU")),
              TABL_MZ_TUBU  =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MZ_TUBU"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MZ_TUBU")),
              TABL_FX_CORP  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FX_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FX_CORP")),
              TABL_FY_CORP  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FY_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FY_CORP")),
              TABL_FZ_CORP  =SIMP(statut='f',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire FZ_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire FZ_CORP")),
              TABL_MX_CORP  =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MX_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MX_CORP")),
              TABL_MY_CORP  =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MY_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MY_CORP")),
              TABL_MZ_CORP  =SIMP(statut='o',typ=table_sdaster,
-                                 fr="table relevé des contraintes pour chargement unitaire MZ_CORP"),
+                                 fr=tr("table relevé des contraintes pour chargement unitaire MZ_CORP")),
            ),
            TABL_PRES     =SIMP(statut='o',typ=table_sdaster,
-                               fr="table relevé des contraintes pour chargement unitaire de pression"),
+                               fr=tr("table relevé des contraintes pour chargement unitaire de pression")),
                          ),
 
-          RESU_THER   =FACT(statut='f',max='**',fr="resultats thermiques",
-           NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
+          RESU_THER   =FACT(statut='f',max='**',fr=tr("resultats thermiques"),
+           NUME_RESU_THER =SIMP(statut='o',typ='I',fr=tr("numéro de la table de résultat thermique") ),
            TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
-                              fr="table relevé des contraintes sous chargement thermique seul" ),
+                              fr=tr("table relevé des contraintes sous chargement thermique seul") ),
                            ),
-         SEISME         =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang",
-              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ),
-              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
-              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
-              NUME_GROUPE      =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ),
-              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
+         SEISME         =FACT(statut='f',max='**',fr=tr("Situation séisme"),
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr=tr("nombre d'occurences de la situation") ),
+              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr=tr("nombre de cycles associé au séisme") ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr=tr("numéro de la situation") ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr=tr("nom de la situation") ),
+              NUME_GROUPE      =SIMP(statut='o',typ='I',fr=tr("numéros du groupe de la situation") ),
+              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat A") ),
                                ),
-         SITUATION         =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
-              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
-              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
-              COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
+         SITUATION         =FACT(statut='o',max='**',fr=tr("Situation"),
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr=tr("nombre d'occurences de la situation") ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr=tr("numéro de la situation") ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr=tr("nom de la situation") ),
+              COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr=tr("non = sous-cycle") ),
               NUME_PASSAGE     =SIMP(statut='f',typ='I',min=2,max=2,
-                                     fr="numéro des situations de passage" ),
+                                     fr=tr("numéro des situations de passage") ),
               NUME_GROUPE      =SIMP(statut='o',typ='I',
-                                        fr="numéros des groupes de la situation" ),
-              NUME_RESU_THER   =SIMP(statut='f',typ='I',max=1,fr="numeros de transitoires thermiques" ),
-              CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
-              CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
-              PRES_A           =SIMP(statut='o',typ='R',fr="pression etat A"),
-              PRES_B           =SIMP(statut='o',typ='R',fr="pression etat B"),
-              TEMP_REF_A       =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
-              TEMP_REF_B       =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
+                                        fr=tr("numéros des groupes de la situation") ),
+              NUME_RESU_THER   =SIMP(statut='f',typ='I',max=1,fr=tr("numeros de transitoires thermiques") ),
+              CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat A") ),
+              CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat B") ),
+              PRES_A           =SIMP(statut='o',typ='R',fr=tr("pression etat A")),
+              PRES_B           =SIMP(statut='o',typ='R',fr=tr("pression etat B")),
+              TEMP_REF_A       =SIMP(statut='f',typ='R',fr=tr("temperature référence etat A")),
+              TEMP_REF_B       =SIMP(statut='f',typ='R',fr=tr("temperature référence etat B")),
                                ),
 
                       ),
@@ -30997,23 +32848,23 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
          OPTION          =SIMP(statut='o',typ='TXM',into=("FATIGUE",) ),
          CHAM_MATER      =SIMP(statut='o',typ=cham_mater ),
          TYPE_KE         =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
-                               fr="Ke meca seul ou partition mecanique + thermique" ),
+                               fr=tr("Ke meca seul ou partition mecanique + thermique") ),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CARA_ELEM       =SIMP(statut='o',typ=cara_elem),
-         ZONE_ANALYSE =FACT(statut='o',fr="liste des mailles ou des noeuds analysés",
+         ZONE_ANALYSE =FACT(statut='o',fr=tr("liste des mailles ou des noeuds analysés"),
             regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
             TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
             GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
             ),
-         RESU_MECA   =FACT(statut='o',max='**',fr="Chargements mécaniques",
+         RESU_MECA   =FACT(statut='o',max='**',fr=tr("Chargements mécaniques"),
            regles=(UN_PARMI('CHAM_GD','RESULTAT'),),
-           NUME_CHAR     =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
-           NOM_CHAR      =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
+           NUME_CHAR     =SIMP(statut='o',typ='I',fr=tr("numéro du chargement") ),
+           NOM_CHAR      =SIMP(statut='f',typ='TXM',fr=tr("nom du chargement") ),
            CHAM_GD         =SIMP(statut='f',typ=cham_gd_sdaster),
            RESULTAT        =SIMP(statut='f',typ=resultat_sdaster),
            b_extrac        =BLOC(condition="RESULTAT != None",
-                                 fr="extraction d un champ de grandeur",
+                                 fr=tr("extraction d un champ de grandeur"),
              regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO","SIEF_ELNO"),),
              TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -31029,33 +32880,33 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
              ),
            ),
                           ),
-         INDI_SIGM =FACT(statut='o',max='**',fr="indices de contraintes",
+         INDI_SIGM =FACT(statut='o',max='**',fr=tr("indices de contraintes"),
             regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
-            C1              =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C1 du RCCM"),
-            K1              =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K1 du RCCM"),
-            C2              =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C2 du RCCM"),
-            K2              =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K2 du RCCM"),
-            C3              =SIMP(statut='f',typ='R',defaut=0.5,fr="indice de contraintes C3 du RCCM"),
-            K3              =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K3 du RCCM"),
+            C1              =SIMP(statut='f',typ='R',defaut=1.0,fr=tr("indice de contraintes C1 du RCCM")),
+            K1              =SIMP(statut='f',typ='R',defaut=1.0,fr=tr("indice de contraintes K1 du RCCM")),
+            C2              =SIMP(statut='f',typ='R',defaut=1.0,fr=tr("indice de contraintes C2 du RCCM")),
+            K2              =SIMP(statut='f',typ='R',defaut=1.0,fr=tr("indice de contraintes K2 du RCCM")),
+            C3              =SIMP(statut='f',typ='R',defaut=0.5,fr=tr("indice de contraintes C3 du RCCM")),
+            K3              =SIMP(statut='f',typ='R',defaut=1.0,fr=tr("indice de contraintes K3 du RCCM")),
             TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",),),
             GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                             fr="groupe(s) de mailles ou sont affectés les indices de contraintes"),
+                             fr=tr("groupe(s) de mailles ou sont affectés les indices de contraintes")),
             MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',
-                             fr="liste des mailles ou sont affectés les indices de contraintes"),
+                             fr=tr("liste des mailles ou sont affectés les indices de contraintes")),
             b_grma     =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)",
                GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
                NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             ),
             TYPE_ELEM_STANDARD =SIMP(statut='f',typ='TXM',into=("DRO","COU","TRN","TEE"),
-                              fr="type d'élément de tuyauterie ou sont affectés les indices de contraintes"),
+                              fr=tr("type d'élément de tuyauterie ou sont affectés les indices de contraintes")),
                          ),
-          RESU_THER   =FACT(statut='f',max='**',fr="resultats thermiques",
+          RESU_THER   =FACT(statut='f',max='**',fr=tr("resultats thermiques"),
             regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
-            NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
+            NUME_RESU_THER =SIMP(statut='o',typ='I',fr=tr("numéro de la table de résultat thermique") ),
             TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
-                              fr="table relevé des températures sur la section"),
+                              fr=tr("table relevé des températures sur la section")),
             TABL_MOYE_THER =SIMP(statut='o',typ=table_sdaster,
-                              fr="table relevé des moyennes sur la section"),
+                              fr=tr("table relevé des moyennes sur la section")),
             TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
             GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
             MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
@@ -31064,31 +32915,31 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             ),
                            ),
-         SEISME         =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang",
-              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ),
-              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
-              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
-              NUME_GROUPE      =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ),
-              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
-              TEMP_REF         =SIMP(statut='f',typ='R',fr="temperature référence"),
+         SEISME         =FACT(statut='f',max='**',fr=tr("Situation séisme"),
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr=tr("nombre d'occurences de la situation") ),
+              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr=tr("nombre de cycles associé au séisme") ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr=tr("numéro de la situation") ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr=tr("nom de la situation") ),
+              NUME_GROUPE      =SIMP(statut='o',typ='I',fr=tr("numéros du groupe de la situation") ),
+              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat A") ),
+              TEMP_REF         =SIMP(statut='f',typ='R',fr=tr("temperature référence")),
                                ),
-         SITUATION         =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
-              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
-              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
-              COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
+         SITUATION         =FACT(statut='o',max='**',fr=tr("Situation"),
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr=tr("nombre d'occurences de la situation") ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr=tr("numéro de la situation") ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr=tr("nom de la situation") ),
+              COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr=tr("non = sous-cycle") ),
               NUME_GROUPE      =SIMP(statut='o',typ='I',
-                                     fr="numéros des groupes de la situation" ),
+                                     fr=tr("numéros des groupes de la situation") ),
               NUME_PASSAGE     =SIMP(statut='f',typ='I',min=2,max=2,
-                                     fr="numéro des situations de passage" ),
-              NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
-              CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
-              CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
-              PRES_A           =SIMP(statut='o',typ='R',fr="pression etat A"),
-              PRES_B           =SIMP(statut='o',typ='R',fr="pression etat B"),
-              TEMP_REF_A       =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
-              TEMP_REF_B       =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
+                                     fr=tr("numéro des situations de passage") ),
+              NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr=tr("numeros de transitoires thermiques") ),
+              CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat A") ),
+              CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr=tr("numeros de chargements etat B") ),
+              PRES_A           =SIMP(statut='o',typ='R',fr=tr("pression etat A")),
+              PRES_B           =SIMP(statut='o',typ='R',fr=tr("pression etat B")),
+              TEMP_REF_A       =SIMP(statut='f',typ='R',fr=tr("temperature référence etat A")),
+              TEMP_REF_B       =SIMP(statut='f',typ='R',fr=tr("temperature référence etat B")),
                                ),
                ),
 )  ;
@@ -31111,8 +32962,8 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
 # ======================================================================
 # person_in_charge: xavier.desroches at edf.fr
 POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f',
-            fr="Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)"
-               +" ou pour les exprimer dans d'autres repères",
+            fr=tr("Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)"
+               " ou pour les exprimer dans d'autres repères"),
             docu="U4.81.21",UIinfo={"groupes":("Post-traitements","Résultats et champs",)},
 
          ACTION          =FACT(statut='o',max='**',
@@ -31126,7 +32977,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
                                                  cham_elem,),),
            RESULTAT        =SIMP(statut='f',typ=resultat_sdaster),
 
-           b_extrac        =BLOC(condition = "RESULTAT != None",fr="extraction des résultats",
+           b_extrac        =BLOC(condition = "RESULTAT != None",fr=tr("extraction des résultats"),
                                  regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE',
                                                 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),),
@@ -31149,7 +33000,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
            ),
 
            b_extrema   =BLOC(condition="au_moins_un(OPERATION, 'EXTREMA')",
-                             fr="recherche de MIN MAX",
+                             fr=tr("recherche de MIN MAX"),
                              regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
               TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
               GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -31161,7 +33012,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
            ),
 
            b_MOYENNE_ARITH   =BLOC(condition="au_moins_un(OPERATION, 'MOYENNE_ARITH')",
-                             fr="moyenne sur des groupes",
+                             fr=tr("moyenne sur des groupes"),
                              regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
               TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
               GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -31173,7 +33024,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
            ),
 
            b_autre   =BLOC(condition="aucun(OPERATION, ('EXTREMA', 'MOYENNE_ARITH'))",
-                           fr="extraction et moyenne",
+                           fr=tr("extraction et moyenne"),
                            regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
                                    EXCLUS('CHEMIN','GROUP_NO'),
                                    EXCLUS('CHEMIN','NOEUD'),
@@ -31244,7 +33095,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
 POST_RUPTURE=MACRO(nom="POST_RUPTURE",
                    op=OPS("Macro.post_rupture_ops.post_rupture_ops"),
                    sd_prod=table_sdaster,
-                   fr="post-traitements en Rupture",
+                   fr=tr("post-traitements en Rupture"),
                    reentrant='f',
                    UIinfo={"groupes":("Résultats et champs","Rupture",)},
 
@@ -31269,9 +33120,9 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #-----------------------------------------------------------------------------------------------------------------------------------
 
 
-      b_absc = BLOC(condition="OPERATION == 'ABSC_CURV_NORM'",fr="normalise l'abscisse curviligne",
+      b_absc = BLOC(condition="OPERATION == 'ABSC_CURV_NORM'",fr=tr("normalise l'abscisse curviligne"),
 
-                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="ABSC_CURV_NORM",fr="Nom de la nouvelle colonne"),
+                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="ABSC_CURV_NORM",fr=tr("Nom de la nouvelle colonne")),
 
                    ),
 
@@ -31279,9 +33130,9 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'ANGLE_BIFURCATION'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_angle = BLOC(condition="OPERATION == 'ANGLE_BIFURCATION'  ",fr="Angle de bifurcation",
+      b_angle = BLOC(condition="OPERATION == 'ANGLE_BIFURCATION'  ",fr=tr("Angle de bifurcation"),
 
-                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="BETA",fr="Nom de la nouvelle colonne"),
+                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="BETA",fr=tr("Nom de la nouvelle colonne")),
                    CRITERE  = SIMP(statut='f',typ='TXM',max=1,defaut="SITT_MAX",into=('SITT_MAX','K1_MAX','K2_NUL','PLAN'),),
                    ),
 
@@ -31289,13 +33140,13 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'K_EQ'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_Keq = BLOC(condition="OPERATION == 'K_EQ'  ",fr="Cumul sur les modes : calcul du K equivalent",
+      b_Keq = BLOC(condition="OPERATION == 'K_EQ'  ",fr=tr("Cumul sur les modes : calcul du K equivalent"),
 
-                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="K_EQ",fr="Nom de la nouvelle colonne"),
-                   CUMUL    = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr="Formule de cumul des modes",
+                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="K_EQ",fr=tr("Nom de la nouvelle colonne")),
+                   CUMUL    = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr=tr("Formule de cumul des modes"),
                                    into=('LINEAIRE','QUADRATIQUE','CUMUL_G','MODE_I'),),
 
-                     b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr="materiau du fond de fissure",
+                     b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr=tr("materiau du fond de fissure"),
                                     MATER = SIMP(statut='o',typ=mater_sdaster,),
                                    ),
                    ),
@@ -31304,13 +33155,13 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'DELTA_K_EQ'
 #-----------------------------------------------------------------------------------------------------------------------------------
                   
-      b_DeltaKeq = BLOC(condition="OPERATION == 'DELTA_K_EQ'  ",fr="Cumul sur les modes : calcul du DeltaK equivalent",
+      b_DeltaKeq = BLOC(condition="OPERATION == 'DELTA_K_EQ'  ",fr=tr("Cumul sur les modes : calcul du DeltaK equivalent"),
 
-                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_K_EQ",fr="Nom de la nouvelle colonne"),
-                   CUMUL    = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr="Formule de cumul des modes",
+                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_K_EQ",fr=tr("Nom de la nouvelle colonne")),
+                   CUMUL    = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr=tr("Formule de cumul des modes"),
                                        into=('QUADRATIQUE','CUMUL_G','MODE_I'),),
 
-                     b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr="materiau du fond de fissure",
+                     b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr=tr("materiau du fond de fissure"),
                                       MATER = SIMP(statut='o',typ=mater_sdaster,),
                                     ),
                   
@@ -31320,15 +33171,15 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'COMPTAGE_CYCLES'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_Comptage = BLOC(condition="OPERATION == 'COMPTAGE_CYCLES'  ",fr="Comptage des cycles",
+      b_Comptage = BLOC(condition="OPERATION == 'COMPTAGE_CYCLES'  ",fr=tr("Comptage des cycles"),
 
                    NOM_PARA   = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                                     fr="Nom des quantités sur lesquelles s'effectuent le comptage"),
+                                     fr=tr("Nom des quantités sur lesquelles s'effectuent le comptage")),
                    COMPTAGE   = SIMP(statut='o',typ='TXM',into=("RAINFLOW","RCCM","NATUREL","UNITAIRE")),
                    DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0),
 
                      b_Comptage_Unitaire = BLOC(condition="COMPTAGE=='UNITAIRE'",
-                                                fr="comptage unitaire pour les amplitudes constantes",
+                                                fr=tr("comptage unitaire pour les amplitudes constantes"),
 
                                                 COEF_MULT_MINI = SIMP(statut='o',typ='R',),
                                                 COEF_MULT_MAXI = SIMP(statut='o',typ='R',),
@@ -31341,11 +33192,11 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'LOI_PROPA'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_Loi_Propa   = BLOC(condition="OPERATION == 'LOI_PROPA'  ",fr="calcul de l'incrément d'avancée de fissure par cycle",
+      b_Loi_Propa   = BLOC(condition="OPERATION == 'LOI_PROPA'  ",fr=tr("calcul de l'incrément d'avancée de fissure par cycle"),
 
-                   NOM_PARA       = SIMP(statut='f',typ='TXM',defaut="DELTA_A"   ,max=1,fr="Nom de la nouvelle colonne"),
+                   NOM_PARA       = SIMP(statut='f',typ='TXM',defaut="DELTA_A"   ,max=1,fr=tr("Nom de la nouvelle colonne")),
                    NOM_DELTA_K_EQ = SIMP(statut='f',typ='TXM',defaut="DELTA_K_EQ",max=1,
-                                                                              fr="Nom de la quantité correspondant au Delta_K_eq"),
+                                                                              fr=tr("Nom de la quantité correspondant au Delta_K_eq")),
                    LOI            = SIMP(statut='o',typ='TXM',into=("PARIS",)),
 
                      b_paris = BLOC(condition = "LOI=='PARIS'",
@@ -31359,9 +33210,9 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'CUMUL_CYCLES'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_cumul = BLOC(condition="OPERATION == 'CUMUL_CYCLES'  ",fr="Cumul sur les cycles",
+      b_cumul = BLOC(condition="OPERATION == 'CUMUL_CYCLES'  ",fr=tr("Cumul sur les cycles"),
 
-                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_A",fr="Nom de la colonne à traiter"),
+                   NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_A",fr=tr("Nom de la colonne à traiter")),
                    CUMUL    = SIMP(statut='f',typ='TXM',max=1,defaut="LINEAIRE",into=('LINEAIRE',)),
 
                    ),
@@ -31370,11 +33221,11 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'PILO_PROPA'
 #-----------------------------------------------------------------------------------------------------------------------------------
                   
-      b_pilo_propa = BLOC(condition="OPERATION == 'PILO_PROPA'  ",fr="Pilotage de la propagation",
+      b_pilo_propa = BLOC(condition="OPERATION == 'PILO_PROPA'  ",fr=tr("Pilotage de la propagation"),
 
                    regles      = UN_PARMI('DELTA_A_MAX','DELTA_N'),
-                   DELTA_A_MAX = SIMP(statut='f',typ='R',max=1,val_min=0.,fr="Pilotage en incrément d'avancée max"),
-                   DELTA_N     = SIMP(statut='f',typ='R',max=1,val_min=1 ,fr="Pilotage en incrément de nombre de blocs"),
+                   DELTA_A_MAX = SIMP(statut='f',typ='R',max=1,val_min=0.,fr=tr("Pilotage en incrément d'avancée max")),
+                   DELTA_N     = SIMP(statut='f',typ='R',max=1,val_min=1 ,fr=tr("Pilotage en incrément de nombre de blocs")),
                   
                    ),
 
@@ -31382,7 +33233,7 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 #                 'K1_NEGATIF'
 #-----------------------------------------------------------------------------------------------------------------------------------
 
-      b_k1_neg = BLOC(condition="OPERATION == 'K1_NEGATIF'  ",fr="Mise a zero des valeurs negatives de K1",
+      b_k1_neg = BLOC(condition="OPERATION == 'K1_NEGATIF'  ",fr=tr("Mise a zero des valeurs negatives de K1"),
 
                    MODELISATION = SIMP(statut='o',typ='TXM',into=("C_PLAN","D_PLAN","3D","AXIS")),
                    MATER        = SIMP(statut='o',typ=mater_sdaster,),
@@ -31412,7 +33263,7 @@ POST_RUPTURE=MACRO(nom="POST_RUPTURE",
 # person_in_charge: irmela.zentner at edf.fr
 POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f',
             UIinfo={"groupes":("Post-traitements",)},
-                fr="Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure",
+                fr=tr("Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure"),
          regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'),
                  PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'),
                  PRESENT_PRESENT('PUIS_USURE','LOI_USURE'),),
@@ -31532,27 +33383,27 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f',
 POURSUITE=MACRO(nom="POURSUITE",
                 op=OPS("Cata.ops.build_poursuite"),
                 repetable='n',
-                fr="Poursuite d'une étude à partir de la sauvegarde au format JEVEUX " \
-                   "ou HDF de sa base globale",
+                fr=tr("Poursuite d'une étude à partir de la sauvegarde au format JEVEUX "
+                     "ou HDF de sa base globale"),
                 sd_prod = ops.POURSUITE,
                 UIinfo={"groupes":("Gestion du travail",)},
                 op_init=ops.POURSUITE_context,
                 fichier_ini=1,
-         FORMAT_HDF      =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
+         FORMAT_HDF      =SIMP(fr=tr("sauvegarde de la base GLOBALE au format HDF"),statut='f',
                                typ='TXM',defaut="NON",into=("OUI","NON",) ),
-         PAR_LOT         =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
+         PAR_LOT         =SIMP(fr=tr("mode de traitement des commandes"),statut='f',typ='TXM',
                            into=("OUI","NON"),defaut="OUI"),
-         IMPR_MACRO      =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
+         IMPR_MACRO      =SIMP(fr=tr("affichage des sous-commandes produites par les macros dans le fichier mess"),
                            statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
 
-         BASE            =FACT(fr="définition des paramètres associés aux bases JEVEUX",
+         BASE            =FACT(fr=tr("définition des paramètres associés aux bases JEVEUX"),
                                statut='f',min=1,max=2,
-           FICHIER         =SIMP(fr="nom de la base",statut='o',typ='TXM'),
+           FICHIER         =SIMP(fr=tr("nom de la base"),statut='o',typ='TXM'),
            TITRE           =SIMP(statut='f',typ='TXM'),
            CAS             =SIMP(statut='f',typ='TXM'),
-           NMAX_ENRE       =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
-           LONG_ENRE       =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
-           LONG_REPE       =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
+           NMAX_ENRE       =SIMP(fr=tr("nombre maximum d enregistrements"),statut='f',typ='I'),
+           LONG_ENRE       =SIMP(fr=tr("longueur des enregistrements"),statut='f',typ='I'),
+           LONG_REPE       =SIMP(fr=tr("longueur du répertoire"),statut='f',typ='I'),
          ),
 
 # Le mot cle CATALOGUE n'est jamais utilise en POURSUITE mais sa presence est necessaire au bon fonctionnement
@@ -31563,42 +33414,42 @@ POURSUITE=MACRO(nom="POURSUITE",
            UNITE           =SIMP(statut='f',typ='I'),
          ),
 
-         ERREUR          =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
+         ERREUR          =FACT(fr=tr("comportement en cas d'erreur"),statut='f',min=1,max=1,
            ERREUR_F        =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
          ),
 
-         DEBUG           =FACT(fr="option de déboggage reservée aux développeurs",
+         DEBUG           =FACT(fr=tr("option de déboggage reservée aux développeurs"),
                                statut='f',min=1,max=1,
-           JXVERI          =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
+           JXVERI          =SIMP(fr=tr("vérifie l intégrité de la segmentation mémoire"),
                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
-           SDVERI          =SIMP(fr="vérifie la conformité des SD produites par les commandes",
+           SDVERI          =SIMP(fr=tr("vérifie la conformité des SD produites par les commandes"),
                                  statut='f',typ='TXM',into=('OUI','NON')),
-           JEVEUX          =SIMP(fr="force les déchargement sur disque",
+           JEVEUX          =SIMP(fr=tr("force les déchargement sur disque"),
                                  statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
-           ENVIMA          =SIMP(fr="imprime les valeurs définies dans ENVIMA",
+           ENVIMA          =SIMP(fr=tr("imprime les valeurs définies dans ENVIMA"),
                                  statut='f',typ='TXM',into=('TEST',)),
-           HIST_ETAPE = SIMP(fr="permet de conserver toutes les étapes du jeu de commandes",
+           HIST_ETAPE = SIMP(fr=tr("permet de conserver toutes les étapes du jeu de commandes"),
                              statut='f', typ='TXM', into=('OUI', 'NON'), defaut='NON'),
          ),
 
-         MESURE_TEMPS     =FACT(fr="Pour choisir les mesures de temps consommé dans les commandes",
+         MESURE_TEMPS     =FACT(fr=tr("Pour choisir les mesures de temps consommé dans les commandes"),
                                statut='d',min=1,max=1,
-           NIVE_DETAIL      =SIMP(fr="niveau de détail des impressions",
+           NIVE_DETAIL      =SIMP(fr=tr("niveau de détail des impressions"),
                                  statut='f',typ='I',into=(0,1,2,3),defaut=1),
                                  # 0 : rien
                                  # 1 : impression en fin de commande des mesures principales
                                  # 2 : impression en fin de commande des mesures principales et secondaires
                                  # 3 : impression des mesures principales et secondaires pour chaque pas de temps
-           MOYENNE     =SIMP(fr="affichage des moyennes et écart-types en parallèle",
+           MOYENNE     =SIMP(fr=tr("affichage des moyennes et écart-types en parallèle"),
                                   statut='f',typ='TXM',into=('OUI','NON',),defaut='NON'),
          ),
 
-         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1,
+         MEMOIRE         =FACT(fr=tr("mode de gestion mémoire utilisé"),statut='d',min=1,max=1,
            TAILLE_BLOC       =SIMP(statut='f',typ='R',defaut=800.),
            TAILLE_GROUP_ELEM =SIMP(statut='f',typ='I',defaut=1000),
          ),
 
-         RESERVE_CPU     =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1,
+         RESERVE_CPU     =FACT(fr=tr("reserve de temps pour terminer une execution"),statut='d',max=1,
            regles=(EXCLUS('VALE','POURCENTAGE'),),
            VALE            =SIMP(statut='f',typ='I',val_min=0),
 #                            valeur par défaut fixée à 10. dans le FORTRAN si CODE présent
@@ -31608,13 +33459,13 @@ POURSUITE=MACRO(nom="POURSUITE",
 #          valeur en pourcentage du temps maximum bornée à 900 secondes
 
          CODE            =SIMP(statut='f',typ='TXM',into=('OUI', 'NON'),defaut='NON',
-                               fr="paramètre réservé aux cas-tests"),
+                               fr=tr("paramètre réservé aux cas-tests")),
 
-         IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"),
+         IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr=tr("Alarmes que l'utilisateur souhaite délibérément ignorer")),
 
          LANG = SIMP(statut='f', typ='TXM',
-                     fr="Permet de choisir la langue utilisée pour les messages (si disponible)",
-                     ang="Allows to choose the language used for messages (if available)"),
+                     fr=tr("Permet de choisir la langue utilisée pour les messages (si disponible)"),
+                     ),
 
          INFO     = SIMP(statut='f', typ='I', defaut=1, into=(1,2),),
 )  ;
@@ -31639,7 +33490,7 @@ POURSUITE=MACRO(nom="POURSUITE",
 
 PRE_GIBI=PROC(nom="PRE_GIBI",op=49,
             UIinfo={"groupes":("Gestion du travail",)},
-              fr="Conversion d'un fichier de maillage GIBI au format Aster",
+              fr=tr("Conversion d'un fichier de maillage GIBI au format Aster"),
          UNITE_GIBI      =SIMP(statut='f',typ='I',defaut=19),  
          UNITE_MAILLAGE  =SIMP(statut='f',typ='I',defaut=20),  
 )  ;
@@ -31664,7 +33515,7 @@ PRE_GIBI=PROC(nom="PRE_GIBI",op=49,
 
 PRE_GMSH=PROC(nom="PRE_GMSH",op=47,
             UIinfo={"groupes":("Gestion du travail",)},
-               fr="Conversion d'un fichier de maillage GMSH au format Aster",
+               fr=tr("Conversion d'un fichier de maillage GMSH au format Aster"),
          UNITE_GMSH      =SIMP(statut='f',typ='I',defaut=19),  
          UNITE_MAILLAGE  =SIMP(statut='f',typ='I',defaut=20),  
 )  ;
@@ -31688,12 +33539,127 @@ PRE_GMSH=PROC(nom="PRE_GMSH",op=47,
 # person_in_charge: alexei.mikchevitch at edf.fr
 PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,
             UIinfo={"groupes":("Gestion du travail",)},
-               fr="Conversion d'un fichier universel IDEAS-SUPERTAB au format Aster",
+               fr=tr("Conversion d'un fichier universel IDEAS-SUPERTAB au format Aster"),
          UNITE_IDEAS     =SIMP(statut='f',typ='I',defaut=19),  
          UNITE_MAILLAGE  =SIMP(statut='f',typ='I',defaut=20),  
          CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
 )  ;
 
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+def pre_seisme_nonl_sdprod(self, RESULTAT, PARAMETRE, **args):
+   if RESULTAT[0]['MODELE'] :
+       self.type_sdprod(RESULTAT[0]['MODELE'], modele_sdaster)
+   if RESULTAT[0]['MAILLAGE'] :
+       self.type_sdprod(RESULTAT[0]['MAILLAGE'], maillage_sdaster)
+   if RESULTAT[0]['CHAM_MATER'] :
+       self.type_sdprod(RESULTAT[0]['CHAM_MATER'], cham_mater)
+   if RESULTAT[0]['CARA_ELEM'] :
+       self.type_sdprod(RESULTAT[0]['CARA_ELEM'], cara_elem)
+   if RESULTAT[0]['BASE_MODALE'] :
+       if PARAMETRE[0]['PRE_CALC_MISS']:
+           self.type_sdprod(RESULTAT[0]['BASE_MODALE'], mode_meca)
+       else:
+           raise AsException("Le mot-clé PRE_CALC_MISS est obligatoire pour créer un concept de type BASE_MODALE")
+   if RESULTAT[0]['MACR_ELEM_DYNA'] :
+       if PARAMETRE[0]['PRE_CALC_MISS']:
+           self.type_sdprod(RESULTAT[0]['MACR_ELEM_DYNA'], macr_elem_dyna)
+       else:
+           raise AsException("Le mot-clé PRE_CALC_MISS est obligatoire pour créer un concept de type MACR_ELEM_DYNA")
+   if RESULTAT[0]['CHARGE'] :
+       for mcfact in RESULTAT[0]['CHARGE']:
+           if mcfact['OPTION'] == 'LAPL_TEMPS' and PARAMETRE[0]['PRE_CALC_MISS']:
+               raise AsException("Le mot-clé POST_CALC_MISS est obligatoire pour créer une charge de type LAPL_TEMPS")
+           self.type_sdprod(mcfact['NOM'], char_meca)
+
+def affe_char_meca_regles(**args):
+       # ONLY if PRE_CALC_MISS is not None
+       AFFE_CHAR_MECA.entites['MODELE'].statut = 'f'   
+       return AFFE_CHAR_MECA.regles
+
+def affe_cara_elem_regles(**args):
+       # ONLY if PRE_CALC_MISS is not None
+       AFFE_CARA_ELEM.entites['MODELE'].statut = 'f'
+       return AFFE_CARA_ELEM.regles
+
+PRE_SEISME_NONL = MACRO(nom="PRE_SEISME_NONL",
+                 op=OPS('Macro.pre_seisme_nonl_ops.pre_seisme_nonl_ops'),
+                 sd_prod=pre_seisme_nonl_sdprod,
+                 fr=tr("description"),
+                 reentrant='n',
+                 UIinfo={"groupes":("Fonctions",)},
+                 AFFE_MODELE = FACT(statut='d',
+                     regles=AFFE_MODELE.regles,
+                     **AFFE_MODELE.entites
+                                    ),
+                 AFFE_MATERIAU = FACT(statut='d',
+                     regles=AFFE_MATERIAU.regles,
+                     **AFFE_MATERIAU.entites
+                                    ),
+
+                 AFFE_CARA_ELEM = FACT(statut='d',
+                     regles=affe_cara_elem_regles(),
+                     **AFFE_CARA_ELEM.entites
+                                    ),
+                 AFFE_CHAR_MECA = FACT(statut='d',
+                     regles=affe_char_meca_regles(),
+                     **AFFE_CHAR_MECA.entites
+                                    ),
+                 PARAMETRE = FACT( statut = 'o', min = 1, max = 1,
+                                   regles = UN_PARMI('PRE_CALC_MISS','POST_CALC_MISS'),
+                                   PRE_CALC_MISS = FACT(statut = 'f', max = 1,
+                                                         REDUC_DYNA_ISS = SIMP(statut='f', typ='TXM', into=('OUI','NON',), defaut='NON'),
+                                                         REDUC_DYNA_IFS = SIMP(statut='f', typ='TXM', into=('OUI','NON',), defaut='NON'),
+                                                         NMAX_MODE_ISS = SIMP(statut='o', typ='I'),
+                                                         b_ISFS = BLOC(condition = " CALC_MISS_OPTION == 'ISFS' ",
+                                                                       NMAX_MODE_IFS = SIMP(statut='o', typ='I'),),
+                                                         GROUP_NO_CENT = SIMP(statut='f', typ=grno, max='**'),
+                                                         CALC_MISS_OPTION = SIMP(statut='o',typ='TXM', into=('ISS','ISFS')),
+                                                         GROUP_NO_INTERF = SIMP(statut='o', typ=grno, max='**'),
+                                                         ),
+                                    POST_CALC_MISS = FACT(statut = 'f', max = 1,
+                                                          MACR_ELEM_DYNA  = SIMP(statut='o', typ=macr_elem_dyna,
+                                                                           fr=tr("Macro élément produit en amont")),
+                                                          UNITE_RESU_RIGI = SIMP(statut='f', typ='I'),
+                                                          UNITE_RESU_MASS = SIMP(statut='f', typ='I'),
+                                                          UNITE_RESU_AMOR = SIMP(statut='f', typ='I'),
+                                                         ),
+                                  ),
+                 RESULTAT = FACT(statut='o', min = 1, max = 1,
+                                     MODELE = SIMP(statut='f',typ=CO),
+                                     MAILLAGE = SIMP(statut='f',typ=CO),
+                                     CHAM_MATER = SIMP(statut='f',typ=CO),
+                                     CARA_ELEM = SIMP(statut='f',typ=CO),
+                                     # ONLY when PRE_CALC_MISS is not None
+                                     BASE_MODALE = SIMP(statut='f',typ=CO),
+                                     # ONLY when PRE_CALC_MISS is not None
+                                     MACR_ELEM_DYNA = SIMP(statut='f',typ=CO),
+                                     CHARGE = FACT( statut='f', max = '**',
+                                                   OPTION = SIMP(statut='o',typ='TXM',
+                                                            into=('COND_LIM', 'LAPL_TEMPS') ),
+                                                   NOM = SIMP(statut='o',typ=CO),
+                                                  ),
+                                    ),
+
+                   INFO = SIMP( statut='f', typ='I', defaut= 1 ,into=(1,2) ),
+
+)
+
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
@@ -31713,7 +33679,7 @@ PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,
 # person_in_charge: jacques.pellet at edf.fr
 
 PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster,
-                    fr="Effectuer le produit d'une matrice par un vecteur",
+                    fr=tr("Effectuer le produit d'une matrice par un vecteur"),
                     reentrant='n',
             UIinfo={"groupes":("Post-traitements","Matrices et vecteurs",)},
          MATR_ASSE       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ),
@@ -31762,7 +33728,7 @@ PROJ_BASE=MACRO(nom="PROJ_BASE",
                 regles=(AU_MOINS_UN('MATR_ASSE_GENE','VECT_ASSE_GENE','RESU_GENE')),
                 UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)},
                 sd_prod=proj_base_prod,
-         fr="Projection des matrices et/ou vecteurs assembles sur une base (modale ou de RITZ)",
+         fr=tr("Projection des matrices et/ou vecteurs assembles sur une base (modale ou de RITZ)"),
          BASE            =SIMP(statut='o',typ=(mode_meca,mode_gene) ),
          NB_VECT         =SIMP(statut='f',typ='I',defaut= 9999),
          STOCKAGE        =SIMP(statut='f',typ='TXM',defaut="PLEIN",into=("PLEIN","DIAG") ),
@@ -31819,7 +33785,7 @@ def proj_champ_prod(RESULTAT=None,CHAM_GD=None,METHODE=None,**args ):
 
 PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
         UIinfo={"groupes":("Résultats et champs",)},
-            fr="Projeter des champs d'un maillage sur un autre",
+            fr=tr("Projeter des champs d'un maillage sur un autre"),
 
      # faut-il projeter les champs ?
      PROJECTION      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",),),
@@ -31861,24 +33827,24 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
          #--------------------------------------------
          b_elem          =BLOC(condition="METHODE in ('COLLOCATION','ECLA_PG','AUTO')",
              CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",),
-                  fr="Pour indiquer au programme le type de projection souhaité"),
+                  fr=tr("Pour indiquer au programme le type de projection souhaité")),
              DISTANCE_MAX    =SIMP(statut='f',typ='R',
-                  fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
+                  fr=tr("Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément.")),
 
              TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_1 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_1 avant la projection.")),
              TRANSF_GEOM_2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_2 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_2 avant la projection.")),
 
              ALARME          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
 
              TYPE_CHAM       =SIMP(statut='f',typ='TXM',into=("NOEU",),
-                  fr="Pour forcer le type des champs projetés. NOEU -> cham_no"),
+                  fr=tr("Pour forcer le type des champs projetés. NOEU -> cham_no")),
 
              PROL_ZERO       =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
-                  fr="Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs."),
+                  fr=tr("Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs.")),
          ),
 
          # Cas de la projection SOUS_POINT :
@@ -31886,13 +33852,13 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
          b_sous_point         =BLOC(condition="METHODE == 'SOUS_POINT'" ,
              CARA_ELEM    =SIMP(statut='o',typ=cara_elem),
              PROL_ZERO       =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
-                  fr="Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs."),
+                  fr=tr("Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs.")),
              TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_1 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_1 avant la projection.")),
              TRANSF_GEOM_2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_2 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_2 avant la projection.")),
          ),
 
 
@@ -31906,7 +33872,7 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),),
 
            NUME_DDL        =SIMP(statut='f',typ=(nume_ddl_sdaster),
-                fr="Utile en dynamique pour pouvoir imoser la numérotation des cham_no."),
+                fr=tr("Utile en dynamique pour pouvoir imposer la numérotation des cham_no.")),
 
            TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
@@ -31945,11 +33911,11 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
            # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier:
                CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
                TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                    fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                       " aux noeuds du MODELE_1 avant la projection."),
+                    fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                       " aux noeuds du MODELE_1 avant la projection.")),
                TRANSF_GEOM_2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                    fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                       " aux noeuds du MODELE_2 avant la projection."),
+                    fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                       " aux noeuds du MODELE_2 avant la projection.")),
          ),
      ), # fin bloc b_1_et_2
 
@@ -31977,16 +33943,16 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
          #--------------------------------------------
          b_elem          =BLOC(condition="METHODE in ('COLLOCATION',)",
              CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",),
-                  fr="Pour indiquer au programme le type de projection souhaité"),
+                  fr=tr("Pour indiquer au programme le type de projection souhaité")),
              DISTANCE_MAX    =SIMP(statut='f',typ='R',
-                  fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
+                  fr=tr("Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément.")),
 
              TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_1 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_1 avant la projection.")),
              TRANSF_GEOM_2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                  fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                     " aux noeuds du MODELE_2 avant la projection."),
+                  fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                     " aux noeuds du MODELE_2 avant la projection.")),
 
              ALARME          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
 
@@ -32009,11 +33975,11 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
            # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier:
                CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
                TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                    fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                       " aux noeuds du MODELE_1 avant la projection."),
+                    fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                       " aux noeuds du MODELE_1 avant la projection.")),
                TRANSF_GEOM_2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
-                    fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
-                       " aux noeuds du MODELE_2 avant la projection."),
+                    fr=tr("2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"
+                       " aux noeuds du MODELE_2 avant la projection.")),
          ),
      ), # fin bloc b_1
 
@@ -32028,16 +33994,16 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
          CHAM_GD         =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem)),
 
          TYPE_CHAM       =SIMP(statut='f',typ='TXM',into=("NOEU",),
-              fr="Pour forcer le type des champs projetés. NOEU -> cham_no"),
+              fr=tr("Pour forcer le type des champs projetés. NOEU -> cham_no")),
 
          NUME_DDL        =SIMP(statut='f',typ=(nume_ddl_sdaster),
-              fr="Parfois utile en dynamique pour pouvoir imposer la numérotation des cham_no."),
+              fr=tr("Parfois utile en dynamique pour pouvoir imposer la numérotation des cham_no.")),
 
          # nécessaire si l'on projette des cham_elem :
          MODELE_2        =SIMP(statut='f',typ=modele_sdaster),
 
          PROL_ZERO       =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
-              fr="Pour prolonger les champs par zéro là où la projection ne donne pas de valeurs."),
+              fr=tr("Pour prolonger les champs par zéro là où la projection ne donne pas de valeurs.")),
 
 
 
@@ -32104,7 +34070,7 @@ def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args):
   raise AsException("type de concept resultat non prevu")
 
 PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op=  71,sd_prod=matr_asse_gene_prod,
-                    fr="Projection d'une matrice assemblée sur une base (modale ou de RITZ)",
+                    fr=tr("Projection d'une matrice assemblée sur une base (modale ou de RITZ)"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),),            
@@ -32144,7 +34110,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,
                      sd_prod=proj_mesu_modal_prod,
                      reentrant='n',
             UIinfo={"groupes":("Résultats et champs",)},
-                     fr="Calcul des coordonnees généralisees de mesure experimentale relatives a une base de projection",
+                     fr=tr("Calcul des coordonnees généralisees de mesure experimentale relatives a une base de projection"),
 
          MODELE_CALCUL   =FACT(statut='o',
            MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
@@ -32177,7 +34143,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,
                         ),
              ),
 
-          ); 
+          );
 
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2012  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -32198,7 +34164,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,
 # person_in_charge: albert.alarcon at edf.fr
 
 PROJ_RESU_BASE=OPER(nom="PROJ_RESU_BASE",op=  79,sd_prod=tran_gene,
-                    fr="Projection d'une sd resultat assemblee sur une base (modale ou de RITZ)",
+                    fr=tr("Projection d'une sd resultat assemblee sur une base (modale ou de RITZ)"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          BASE            =SIMP(statut='o',typ=(mode_meca,mode_gene) ),
@@ -32226,7 +34192,7 @@ PROJ_RESU_BASE=OPER(nom="PROJ_RESU_BASE",op=  79,sd_prod=tran_gene,
 # person_in_charge: andre.adobes at edf.fr
 PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=interspectre,reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
-            fr="Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) ",
+            fr=tr("Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) "),
       regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),
               UN_PARMI('TOUT','GROUP_MA','MAILLE'),
               PRESENT_PRESENT('CHAM_NO','MODELE_INTERFACE'),),
@@ -32273,7 +34239,7 @@ PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=interspectre,reentrant=
 # person_in_charge: emmanuel.boyere at edf.fr
 
 PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op=  72,sd_prod=vect_asse_gene,
-                    fr="Projection d'un vecteur assemblé sur une base (modale ou de RITZ)",
+                    fr=tr("Projection d'un vecteur assemblé sur une base (modale ou de RITZ)"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),),              
@@ -32322,13 +34288,15 @@ def propa_fiss_prod(self,**args):
 PROPA_FISS=MACRO(nom="PROPA_FISS",
                  op=OPS('Macro.propa_fiss_ops.propa_fiss_ops'),
                  sd_prod=propa_fiss_prod,
-                 fr="Propagation de fissure avec X-FEM",reentrant='n',
+                 fr=tr("Propagation de fissure avec X-FEM"),reentrant='n',
                  UIinfo={"groupes":("Post-traitements","Rupture",)},
 
         METHODE_PROPA = SIMP(statut='o',typ='TXM',
-                               into=("SIMPLEXE","UPWIND","MAILLAGE","INITIALISATION","GEOMETRIQUE") ),
+                               into=("SIMPLEXE","UPWIND","MAILLAGE","INITIALISATION","GEOMETRIQUE","UPW_FMM") ),
+
+        OPERATION = SIMP(statut='f',typ='TXM', into=("RIEN","DETECT_COHESIF","PROPA_COHESIF"), defaut="RIEN" ),
 
-        b_hamilton = BLOC(condition="(METHODE_PROPA=='SIMPLEXE') or (METHODE_PROPA=='UPWIND') or (METHODE_PROPA=='GEOMETRIQUE') ",
+        b_hamilton = BLOC(condition="(METHODE_PROPA=='SIMPLEXE') or (METHODE_PROPA=='UPWIND') or (METHODE_PROPA=='UPW_FMM') or (METHODE_PROPA=='GEOMETRIQUE' and OPERATION=='RIEN') ",
               MODELE        = SIMP(statut='o',typ=modele_sdaster),
               TEST_MAIL     = SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"),
               DA_MAX        = SIMP(statut='o',typ='R',max=1,val_min=0.0),
@@ -32370,7 +34338,42 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",
                                   ),
 
                          ),
-
+        b_detection = BLOC(condition="(OPERATION == 'DETECT_COHESIF')",
+              MODELE        = SIMP(statut='o',typ=modele_sdaster),
+              TEST_MAIL     = SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"),
+              RESULTAT      =  SIMP(statut='o',typ=(evol_elas,evol_noli),),
+              ZONE_MAJ      = SIMP(statut='f',typ='TXM',into=("TOUT","TORE"),defaut="TORE"),
+              b_tore        = BLOC(condition = "ZONE_MAJ == 'TORE' ",
+                                   RAYON_TORE    = SIMP(statut='f',typ='R',max=1,val_min=0.0),
+                                  ),
+              b_propagation = BLOC(condition = "TEST_MAIL == 'NON' ",
+                                   FISSURE   = FACT(statut='o',min=1,max='**',
+                                                    FISS_ACTUELLE  = SIMP(statut='o',typ=fiss_xfem,max=1),
+                                                    FISS_PROPAGEE  = SIMP(statut='o',typ=CO,max=1),
+                                                    NB_POINT_FOND  = SIMP(statut='f',typ='I',max='**'),
+                                                    TABLE   = SIMP(statut='o',typ=table_sdaster,max=1),
+                                                    ),
+                                  ),
+                          ),
+        b_cohesive = BLOC(condition="(OPERATION == 'PROPA_COHESIF')",
+              MODELE        = SIMP(statut='o',typ=modele_sdaster),
+              DA_MAX        = SIMP(statut='o',typ='R',max=1),
+              TEST_MAIL     = SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"),
+              ZONE_MAJ      = SIMP(statut='f',typ='TXM',into=("TOUT","TORE"),defaut="TORE"),
+              CRIT_ANGL_BIFURCATION = SIMP(statut='f',typ='TXM',max=1,defaut="SITT_MAX",
+                                           into=('SITT_MAX','K1_MAX','K2_NUL','PLAN','ANGLE_IMPO'),),
+              b_tore        = BLOC(condition = "ZONE_MAJ == 'TORE' ",
+                                   RAYON_TORE    = SIMP(statut='f',typ='R',max=1,val_min=0.0),
+                                  ),
+              b_propagation = BLOC(condition = "TEST_MAIL == 'NON' ",
+                                   FISSURE   = FACT(statut='o',min=1,max='**',
+                                                    FISS_ACTUELLE  = SIMP(statut='o',typ=fiss_xfem,max=1),
+                                                    FISS_PROPAGEE  = SIMP(statut='o',typ=CO,max=1),
+                                                    NB_POINT_FOND  = SIMP(statut='f',typ='I',max='**'),
+                                                    TABLE   = SIMP(statut='o',typ=table_sdaster,max=1),
+                                                    ),
+                                  ),
+                          ),
         b_maillage    =BLOC(condition="(METHODE_PROPA=='MAILLAGE')",
                MAIL_STRUC       = SIMP(statut='o',typ=maillage_sdaster),
                ITERATION      = SIMP(statut='o',typ='I',max=1),
@@ -32455,13 +34458,19 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",
 
 PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n',
                 UIinfo={"groupes":("Post-traitements","Rupture",)},
-                fr="Propagation de fissure avec X-FEM",
+                fr=tr("Propagation de fissure avec X-FEM"),
     
+    METHODE =SIMP(statut='f',typ='TXM',into=("SIMPLEXE","UPWIND","GEOMETRIQUE","UPW_FMM"),defaut="UPWIND"),
+
+    OPERATION =SIMP(statut='f',typ='TXM',into=("RIEN","DETECT_COHESIF","PROPA_COHESIF"),defaut="RIEN"),
+
     MODELE        =SIMP(statut='o',typ=modele_sdaster),
 
     TEST_MAIL     =SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"),
 
+    b_detec =BLOC( condition = "OPERATION != 'DETECT_COHESIF' ",
     DA_MAX        =SIMP(statut='o',typ='R'),
+    ),
 
     FISS_PROP     =SIMP(statut='o',typ=fiss_xfem),
 
@@ -32473,19 +34482,18 @@ PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n',
 
     ANGLE         =SIMP(statut='f',typ='R',max='**'),
     VITESSE       =SIMP(statut='f',typ='R',max='**'),
-    DA_FISS       =SIMP(statut='f',typ='R'),
-    NB_CYCLES     =SIMP(statut='f',typ='R'),        
+    b_pas_cohe    =BLOC(condition = "(OPERATION!= 'PROPA_COHESIF') and (OPERATION != 'DETECT_COHESIF')",
+        DA_FISS       =SIMP(statut='f',typ='R'),
+        NB_CYCLES     =SIMP(statut='f',typ='R'),        
+        RAYON          =SIMP(statut='o',typ='R',),
+    ),
 
     b_test_mail_const =BLOC( condition = "TEST_MAIL == 'OUI' ",
                              FISS_INITIALE =SIMP(statut='o',typ=fiss_xfem,max=1),
                              DISTANCE      =SIMP(statut='o',typ='R',max=1),
                              TOLERANCE     =SIMP(statut='o',typ='R',max=1),
                            ),
-            
-    RAYON          =SIMP(statut='o',typ='R',),
           
-    METHODE =SIMP(statut='f',typ='TXM',into=("SIMPLEXE","UPWIND","GEOMETRIQUE"),defaut="UPWIND"),
-
     INFO           =SIMP(statut='f',typ='I',defaut= 0,into=(0,1,2) ),
 )  ;
 
@@ -32512,10 +34520,10 @@ RAFF_GP =MACRO(nom="RAFF_GP",
                    sd_prod=maillage_sdaster,
                    UIinfo={"groupes":("Outils-métier","Rupture",)},
                    reentrant='n',
-                   fr="Preparation du maillage pour calcul du Gp en 2D",
+                   fr=tr("Preparation du maillage pour calcul du Gp en 2D"),
          MAILLAGE_N   = SIMP(statut='o',typ=maillage_sdaster,
-                      fr="Maillage avant adaptation",
-                      ang="Mesh before adaptation" ),           
+                      fr=tr("Maillage avant adaptation"),
+                      ),           
          TRANCHE_2D  = FACT(statut='0',max = 1,
                            CENTRE           =SIMP(statut='o',typ='R',max=2),
                            RAYON       =SIMP(statut='o',typ='R',max=1),
@@ -32557,14 +34565,14 @@ def raff_xfem_prod(self,TYPE,**args):
 RAFF_XFEM=MACRO(nom="RAFF_XFEM",
                 op=OPS('Macro.raff_xfem_ops.raff_xfem_ops'),
                 sd_prod=raff_xfem_prod,
-                fr="Calcul d'un indicateur pour le raffinement",
+                fr=tr("Calcul d'un indicateur pour le raffinement"),
                 reentrant='n',
                 UIinfo={"groupes":("Résultats et champs","Rupture",)},
 
                 TYPE   =SIMP(statut='f',typ='TXM',into=('DISTANCE','ZONE'),defaut='DISTANCE'),
                 FISSURE=SIMP(statut='o',typ=fiss_xfem,min=1,max='**',),
 
-                b_zone =BLOC(condition = "TYPE == 'ZONE' ",fr="Paramètres de la zone",
+                b_zone =BLOC(condition = "TYPE == 'ZONE' ",fr=tr("Paramètres de la zone"),
                    RAYON =SIMP(statut='o',typ='R',val_min=0.),
                             ),
                 
@@ -32594,7 +34602,7 @@ RAFF_XFEM_ZONE=OPER(nom="RAFF_XFEM_ZONE",
                     op=188,
 #                    sd_prod=cham_elem,
                     sd_prod=carte_sdaster,
-                    fr="Calcul d'un indicateur binaire pour le raffinement",
+                    fr=tr("Calcul d'un indicateur binaire pour le raffinement"),
                     reentrant='n',
                     UIinfo={"groupes":("Résultats et champs","Rupture",)},
 
@@ -32621,7 +34629,7 @@ RAFF_XFEM_ZONE=OPER(nom="RAFF_XFEM_ZONE",
 # ======================================================================
 # person_in_charge: aurore.parrot at edf.fr
 RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster,
-                     fr="Recaler les paramètres du modèle de WEIBULL sur des données expérimentales",reentrant='n',
+                     fr=tr("Recaler les paramètres du modèle de WEIBULL sur des données expérimentales"),reentrant='n',
             UIinfo={"groupes":("Post-traitements",)},
          LIST_PARA       =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ),
          RESU            =FACT(statut='o',max='**',
@@ -32670,18 +34678,19 @@ def recu_fonction_prod(RESULTAT=None,TABLE=None,RESU_GENE=None,
                        BASE_ELAS_FLUI=None,CHAM_GD=None,NAPPE=None,
                        INTE_SPEC=None,NOEUD_J=None,NUME_ORDRE_J=None,
                        NOM_CMP_J=None,NOM_CMP_I=None,NUME_ORDRE_I=None,NOEUD_I=None,
-                       NOM_PARA_TABL=None,**args):
+                       NOM_PARA_TABL=None,PARA_Y=None,**args):
    if AsType(RESULTAT)  == dyna_harmo or \
       AsType(RESU_GENE) == harm_gene or \
       (INTE_SPEC and NUME_ORDRE_J and (NUME_ORDRE_I != NUME_ORDRE_J) ) or \
       (INTE_SPEC and NOEUD_J and ((NOEUD_I != NOEUD_J) or (NOM_CMP_I != NOM_CMP_J)) ) or \
-      (TABLE != None and NOM_PARA_TABL == "FONCTION_C"):
+      (TABLE != None and NOM_PARA_TABL == "FONCTION_C")  or \
+      (TABLE != None and PARA_Y == "VALE_C") :
       return fonction_c
    else:
       return fonction_sdaster
 
 RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
-                   fr="Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre",
+                   fr=tr("Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre"),
                    reentrant='f',
             UIinfo={"groupes":("Résultats et champs","Fonctions",)},
          regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','NAPPE','INTE_SPEC'),),
@@ -32696,7 +34705,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
 
 # ======= ACCES A LA SD RESULTAT =================================================
          b_acces = BLOC ( condition = "(RESULTAT != None) or (RESU_GENE != None)",
-                          fr="acces a une SD résultat",
+                          fr=tr("acces a une SD résultat"),
 # on ne peut pas mettre de regles, le défaut TOUT_ORDRE est pris en compte dans le fortran
            TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
@@ -32718,7 +34727,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          ),
 # ======= BASE_ELAS_FLUI =================================================
          b_base_elas_flui = BLOC ( condition = "BASE_ELAS_FLUI != None",
-                                   fr="Récupération de la fonction à partir d un concept melasflu",
+                                   fr=tr("Récupération de la fonction à partir d un concept melasflu"),
            regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE'),),
            TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
@@ -32729,9 +34738,10 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
 
 # ======= INTERSPECTRE =================================================
          b_inte_spec = BLOC ( condition = "INTE_SPEC != None",
-                              fr="Récupération de fonction dans un concept interspectre",
-           regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),),
+                              fr=tr("Récupération de fonction dans un concept interspectre"),
+           regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I','NUME_ORDRE',),),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
+           NUME_ORDRE    =SIMP(statut='f',typ='I',max=1 ),
            NOEUD_I         =SIMP(statut='f',typ=no,max=1),
            NUME_ORDRE_I    =SIMP(statut='f',typ='I',max=1 ),
            b_nume_ordre_i = BLOC (condition = "NUME_ORDRE_I != None",
@@ -32746,16 +34756,16 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
 
 # ======= TABLE =================================================
          b_table = BLOC ( condition = "TABLE != None",
-                          fr="Récupération de la fonction à partir d un concept table",
+                          fr=tr("Récupération de la fonction à partir d un concept table"),
                           regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'),
                                   PRESENT_PRESENT('PARA_X','PARA_Y'),),
            PARA_X        = SIMP(statut='f',typ='TXM',
-                                 fr="1ère colonne de la table qui définit la fonction à récupérer", ),
+                                 fr=tr("1ère colonne de la table qui définit la fonction à récupérer"), ),
            PARA_Y        = SIMP(statut='f',typ='TXM',
-                                 fr="2ème colonne de la table qui définit la fonction à récupérer", ),
+                                 fr=tr("2ème colonne de la table qui définit la fonction à récupérer"), ),
            #b_tabl_fonc = BLOC(condition = "AsType(TABLE) == table_fonction",
            NOM_PARA_TABL = SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C"),
-                                fr="Nom du paramètre de la table contenant la fonction" ),
+                                fr=tr("Nom du paramètre de la table contenant la fonction") ),
            #),
 
            FILTRE        = FACT(statut='f',max='**',
@@ -32776,7 +34786,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          ),
 
 # ======= RESULTAT =================================================
-         b_resu = BLOC ( condition = "RESULTAT != None", fr="Opérandes en cas de RESULTAT",
+         b_resu = BLOC ( condition = "RESULTAT != None", fr=tr("Opérandes en cas de RESULTAT"),
                          regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
            NOM_PARA_RESU   =SIMP(statut='f',typ='TXM' ),
@@ -32798,7 +34808,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
 
 # ======= RESU_GENE =================================================
          b_tran_gene = BLOC ( condition = "AsType(RESU_GENE) == tran_gene",
-                              fr="Récupération d'une fonction à partir d un concept TRAN_GENE",
+                              fr=tr("Récupération d'une fonction à partir d un concept TRAN_GENE"),
                               regles=(UN_PARMI('NOM_CHAM','NOEUD_CHOC','GROUP_NO_CHOC'),),
              NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=("DEPL","VITE","ACCE","PTEM") ),
              NOEUD_CHOC      =SIMP(statut='f',typ=no),
@@ -32808,7 +34818,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
                                    UN_PARMI('NOM_CMP','NUME_CMP_GENE',),
                                    EXCLUS('MULT_APPUI','CORR_STAT'),),
              NOM_CMP         =SIMP(statut='f',typ='TXM' ),
-             NUME_CMP_GENE   =SIMP(statut='f',typ='I' ),
+             NUME_CMP_GENE   =SIMP(statut='f',typ='I',val_min = 1 ),
              NOEUD           =SIMP(statut='f',typ=no),
              GROUP_NO        =SIMP(statut='f',typ=grno),
              MULT_APPUI      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -32827,17 +34837,17 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
            ),
          ),
          b_harm_gene = BLOC ( condition = "AsType(RESU_GENE)==harm_gene",
-                              fr="Récupération d'une fonction à partir d un concept HARM_GENE",
+                              fr=tr("Récupération d'une fonction à partir d un concept HARM_GENE"),
                               regles=(UN_PARMI('NOM_CMP','NUME_CMP_GENE'),
                                       UN_PARMI('GROUP_NO','NOEUD','NUME_CMP_GENE',),),
              NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=("DEPL","VITE","ACCE") ),
              NOM_CMP         =SIMP(statut='f',typ='TXM' ),
-             NUME_CMP_GENE   =SIMP(statut='f',typ='I' ),
+             NUME_CMP_GENE   =SIMP(statut='f',typ='I',val_min = 1 ),
              NOEUD           =SIMP(statut='f',typ=no),
              GROUP_NO        =SIMP(statut='f',typ=grno),
          ),
          # b_harm_gene = BLOC ( condition = "AsType(RESU_GENE)==harm_gene",
-         #                      fr="Récupération d'une fonction à partir d un concept HARM_GENE",
+         #                      fr=tr("Récupération d'une fonction à partir d un concept HARM_GENE"),
          #                      regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
          #     NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
          #     NOM_PARA_RESU   =SIMP(statut='f',typ='TXM' ),
@@ -32853,13 +34863,13 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          #   ),
          # ),
          b_mode_gene = BLOC ( condition = "AsType(RESU_GENE)==mode_gene",
-                              fr="Récupération d'une fonction à partir d un concept MODE_GENE",
+                              fr=tr("Récupération d'une fonction à partir d un concept MODE_GENE"),
                               regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
              NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO()),
              NOM_PARA_RESU   =SIMP(statut='f',typ='TXM' ),
            b_cham = BLOC ( condition = "NOM_CHAM != None",
                            regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),),
-             NUME_CMP_GENE   =SIMP(statut='f',typ='I' ),
+             NUME_CMP_GENE   =SIMP(statut='f',typ='I',val_min = 1 ),
              NOM_CMP         =SIMP(statut='f',typ='TXM' ),
              b_cmp = BLOC ( condition = "NOM_CMP != None",
                             regles=(UN_PARMI('NOEUD','GROUP_NO'),
@@ -32873,7 +34883,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          ),
 
 # ======= CHAM_GD =================================================
-         b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD",
+         b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr=tr("Opérandes en cas de CHAM_GD"),
                             regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'),
                                     PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'),
                                     PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'),
@@ -32889,7 +34899,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          ),
 
 # ======= NAPPE =================================================
-         b_nappe = BLOC ( condition = "(NAPPE != None)", fr="Opérandes en cas de NAPPE",
+         b_nappe = BLOC ( condition = "(NAPPE != None)", fr=tr("Opérandes en cas de NAPPE"),
          VALE_PARA_FONC  =SIMP(statut='o',typ='R' ),
          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
          CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
@@ -32925,8 +34935,8 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
 # person_in_charge: emmanuel.boyere at edf.fr
 RECU_GENE=OPER(nom="RECU_GENE",op=  76,sd_prod=vect_asse_gene,reentrant='n',
                UIinfo={"groupes":("Résultats et champs",)},
-               fr="Extraire d'un champ de grandeur (déplacements, vitesses ou accélérations) à partir de résultats"
-                  +" en coordonnées généralisées",
+               fr=tr("Extraire d'un champ de grandeur (déplacements, vitesses ou accélérations) à partir de résultats"
+                   " en coordonnées généralisées"),
                regles=(UN_PARMI('FREQ','INST',),),
          RESU_GENE       =SIMP(statut='o',typ=(tran_gene,harm_gene),),
          INST            =SIMP(statut='f',typ='R',),
@@ -32964,7 +34974,7 @@ RECU_GENE=OPER(nom="RECU_GENE",op=  76,sd_prod=vect_asse_gene,reentrant='n',
 RECU_PARA_YACS=OPER(nom="RECU_PARA_YACS",op=114,sd_prod=listr8_sdaster,
                    reentrant = 'n',
                     UIinfo={"groupes":("Fonction",)},
-                   fr        = "Gestion des scalaires via YACS pour le coupleur IFS",
+                   fr        = tr("Gestion des scalaires via YACS pour le coupleur IFS"),
           DONNEES = SIMP(statut='o',typ='TXM',into=("INITIALISATION","CONVERGENCE","FIN","PAS",) ),
           b_init   = BLOC(condition= "DONNEES=='INITIALISATION'",
                      PAS             = SIMP(statut='o',typ='R', ),),
@@ -32998,8 +35008,8 @@ RECU_PARA_YACS=OPER(nom="RECU_PARA_YACS",op=114,sd_prod=listr8_sdaster,
 # ======================================================================
 # person_in_charge: mathieu.courtois at edf.fr
 RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
-         fr="Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue"
-            +" dans une autre SD pour celles qui le permettent",
+         fr=tr("Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue"
+             " dans une autre SD pour celles qui le permettent"),
          UIinfo={"groupes":("Résultats et champs","Tables",)},reentrant='n',
          CO              =SIMP(statut='o',typ=assd),
          regles=(UN_PARMI('NOM_TABLE','NOM_PARA')),
@@ -33027,8 +35037,8 @@ RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
 # person_in_charge: jacques.pellet at edf.fr
 
 RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f',
-               fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+
-                  "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné",
+               fr=tr("Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"
+                  "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné"),
                UIinfo={"groupes":("Résolution",)},
          MATR           =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
                                                matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
@@ -33079,9 +35089,9 @@ def rest_cond_tran_prod(RESULTAT,TYPE_RESU,**args ):
   raise AsException("type de concept resultat non prevu")
 
 REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op=  78,sd_prod=rest_cond_tran_prod,
-                    fr="Restituer dans la base physique des résultats issus d'un calcul" 
-                        +"non-lineaire avec projection modale ou d'un calcul transitoire linear"
-                        +"avec condensation dynamique",
+                    fr=tr("Restituer dans la base physique des résultats issus d'un calcul" 
+                         "non-lineaire avec projection modale ou d'un calcul transitoire linear"
+                         "avec condensation dynamique"),
                     reentrant='f',
             UIinfo={"groupes":("Matrices et vecteurs",)},
         regles=(
@@ -33142,7 +35152,7 @@ def rest_gene_phys_prod(RESU_GENE,**args ):
   raise AsException("type de concept resultat non prevu")
 
 REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op=  75,sd_prod=rest_gene_phys_prod,
-                    fr="Restituer dans la base physique des résultats en coordonnées généralisées",
+                    fr=tr("Restituer dans la base physique des résultats en coordonnées généralisées"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
         regles=(
@@ -33210,8 +35220,7 @@ def rest_mode_nonl_prod(TYPE_RESU,**args):
 
 REST_MODE_NONL=OPER(nom="REST_MODE_NONL", op=63,
          sd_prod=rest_mode_nonl_prod, reentrant='n',
-         fr="Post traitement de mode_non_line : \
-             recuperation resultats ",
+         fr=tr("Post traitement de mode_non_line : récuperation résultats"),
          UIinfo={"groupes":("Post-traitements",)},
 
          MODE_NON_LINE    =SIMP(statut='o',typ=table_container,max=1),
@@ -33223,8 +35232,6 @@ REST_MODE_NONL=OPER(nom="REST_MODE_NONL", op=63,
 
 )  ;
 
-
-
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
@@ -33254,7 +35261,7 @@ def rest_sous_struc_prod(RESU_GENE,RESULTAT,**args ):
   raise AsException("type de concept resultat non prevu")
 
 REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op=  77,sd_prod=rest_sous_struc_prod,
-          fr="Restituer dans la base physique des résultats obtenus par sous-structuration",
+          fr=tr("Restituer dans la base physique des résultats obtenus par sous-structuration"),
                     reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
         regles=(UN_PARMI('RESU_GENE','RESULTAT'),
@@ -33329,7 +35336,7 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op=  77,sd_prod=rest_sous_struc_prod,
 # person_in_charge: andre.adobes at edf.fr
 REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=interspectre,
                     reentrant='n',
-            fr="Calculer la réponse d'une structure dans la base physique",
+            fr=tr("Calculer la réponse d'une structure dans la base physique"),
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),),        
          BASE_ELAS_FLUI  =SIMP(statut='f',typ=melasflu_sdaster ),
@@ -33384,7 +35391,7 @@ def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args):
 
 
 REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod,
-              fr="Transformée de Fourier d'un résultat",
+              fr=tr("Transformée de Fourier d'un résultat"),
               reentrant='n',
             UIinfo={"groupes":("Matrices et vecteurs",)},
          regles=UN_PARMI('RESU_GENE','RESULTAT'),
@@ -33419,156 +35426,129 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT",
                      op=OPS('Macro.simu_point_mat_ops.simu_point_mat_ops'),
                      sd_prod=table_sdaster,
                      UIinfo={"groupes":("Résolution",)},
-                     fr="Calcul de l'évolution mécanique, en quasi-statique," \
-                        " d'un point matériel en non linéaire",
+                     fr=tr("Calcul de l'évolution mécanique, en quasi-statique, "
+                          "d'un point matériel en non linéaire"),
+
    COMPORTEMENT       =C_COMPORTEMENT(),
+
    MATER           =SIMP(statut='o',typ=mater_sdaster,max=30),
 
-## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées.
-   ANGLE      =SIMP(statut='f',typ='R',max=1, defaut=0.),
 # --MASSIF : orientation du materiau (monocristal, orthotropie)
    MASSIF          =FACT(statut='f',max='**',
      regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),),
      ANGL_REP        =SIMP(statut='f',typ='R',min=1,max=3),
      ANGL_EULER      =SIMP(statut='f',typ='R',min=1,max=3),
    ),
+
    INCREMENT       =C_INCREMENT('MECANIQUE'),
+
    NEWTON          =C_NEWTON(),
+
    CONVERGENCE     =C_CONVERGENCE(),
 
    SUPPORT= SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",),defaut=("POINT"),),
 
-   b_PM = BLOC(condition="SUPPORT ==  'POINT'",fr="Simulation sans élément fini",
-      FORMAT_TABLE  =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),),
-      NB_VARI_TABLE  =SIMP(statut='f',typ='I',max=1,),
-      OPER_TANGENT  =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",),
-       ARCHIVAGE    =FACT(statut='f',
-       LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
-       INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
-       PAS_ARCH        =SIMP(statut='f',typ='I' ),
-       PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
-                           ),
-     # on permet certaines variables de commandes scalaires, définies par une fonction du temps
-     # on permet ici seulementn celles qui sont validees
-      AFFE_VARC    = FACT(statut='f',max='**',
-         NOM_VARC    =SIMP(statut='o',typ='TXM', into=("TEMP","IRRA","SECH")),
-         VALE_FONC   = SIMP(statut='f',typ=(fonction_sdaster,formule) ),
+   b_PM = BLOC(condition="SUPPORT ==  'POINT'",fr=tr("Simulation sans élément fini"),
 
-         # VALE_REF est nécessaire pour certaines VARC :
-         B_VALE_REF          =BLOC(condition="NOM_VARC in ('TEMP', 'SECH')",
-            VALE_REF         =SIMP(statut='o',typ='R'),
-                                  ),
-                         ),
-        # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
-      LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","IRRA","SECH")),
+          FORMAT_TABLE  =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),),
 
-               ),
-   b_EF = BLOC(condition="SUPPORT ==  'ELEMENT'",fr="Simulation sur un élément fini",
-      MODELISATION  =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN","D_PLAN",)),
-      RECH_LINEAIRE   =C_RECH_LINEAIRE(),
-      ARCHIVAGE       =C_ARCHIVAGE(),
-      SUIVI_DDL       =C_SUIVI_DDL(),
+          NB_VARI_TABLE  =SIMP(statut='f',typ='I',max=1,),
 
-     # on permet certaines variables de commandes scalaires, définies par une fonction du temps
-     # a priori toutes doivent fonctionner
-      AFFE_VARC    = FACT(statut='f',max='**',
-         NOM_VARC        =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC",
-                                                           "EPSA","NEUT1","NEUT2")),
-         VALE_FONC   = SIMP(statut='f',typ=(fonction_sdaster,formule) ),
-         VALE_REF    = SIMP(statut='f',typ='R'),
+          OPER_TANGENT  =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",),
+                ARCHIVAGE    =FACT(statut='f',
+                LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
+                INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+                PAS_ARCH        =SIMP(statut='f',typ='I' ),
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+                                ),
+                                
+                                
+          ## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. Utile pour tests compxxx
+          ANGLE      =SIMP(statut='f',typ='R',max=1, defaut=0.),
+
+          regles = (PRESENT_ABSENT('SIGM_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
+                    PRESENT_ABSENT('EPSI_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
+                    PRESENT_ABSENT('MATR_C1','SIGM_IMPOSE','EPSI_IMPOSE'),
+                    PRESENT_ABSENT('MATR_C2','SIGM_IMPOSE','EPSI_IMPOSE'),
+                    PRESENT_ABSENT('VECT_IMPO', 'SIGM_IMPOSE','EPSI_IMPOSE'),
+                    EXCLUS('EPSI_IMPOSE','GRAD_IMPOSE'),
+                    EXCLUS('SIGM_IMPOSE','GRAD_IMPOSE'),
+                    ),
 
-             b_ZIRC = BLOC(condition="NOM_VARC=='M_ZIRC'",
-              V1   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V2   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V3   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V4   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-                          ),
+          SIGM_IMPOSE=FACT(statut='f',
+                SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                            ),
+          EPSI_IMPOSE=FACT(statut='f',
+                EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                            ),
+          GRAD_IMPOSE=FACT(statut='f',
+                regles = ( ENSEMBLE('F11','F12','F13','F21','F22','F23','F31','F32','F33',),),
+                F11 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F12 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F13 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F21 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F22 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F23 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F31 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F32 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                F33 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                            ),
+          MATR_C1=FACT(statut='f',max='**',
+                VALE          =SIMP(statut='o',typ='R',max=1, ),
+                NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+                NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                                    ),
+          MATR_C2=FACT(statut='f',max='**',
+                VALE          =SIMP(statut='o',typ='R',max=1, ),
+                NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+                NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                                    ),
+          VECT_IMPO=FACT(statut='f',max='**',
+                VALE          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ),
+                NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+                                    ),
+   ),
 
-             b_ACIER = BLOC(condition="NOM_VARC=='M_ACIER'",
-              V1   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V2   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V3   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V4   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V5   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V6   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
-              V7   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+   b_EF = BLOC(condition="SUPPORT ==  'ELEMENT'",fr=tr("Simulation sur un élément fini"),
+          MODELISATION  =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN","D_PLAN",)),
+          RECH_LINEAIRE   =C_RECH_LINEAIRE(),
+          ARCHIVAGE       =C_ARCHIVAGE(),
+          SUIVI_DDL       =C_SUIVI_DDL(),
+
+                                
+                                
+          ## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. Utile pour tests compxxx
+          ANGLE      =SIMP(statut='f',typ='R',max=1, defaut=0.),
+
+          SIGM_IMPOSE=FACT(statut='f',
+                SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                          ),
+          EPSI_IMPOSE=FACT(statut='f',
+                EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
                           ),
-                         ),
-        # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
-      LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA",
-                                                              "M_ACIER","M_ZIRC","NEUT1","NEUT2")),
-
-      SIGM_IMPOSE=FACT(statut='f',
-            SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                       ),
-      EPSI_IMPOSE=FACT(statut='f',
-            EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-            EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                       ),
 
             ),
-   b_COEF = BLOC(condition="SUPPORT ==  'POINT'",fr="matrice de coefficients",
-     regles = (PRESENT_ABSENT('SIGM_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
-               PRESENT_ABSENT('EPSI_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
-               PRESENT_ABSENT('MATR_C1','SIGM_IMPOSE','EPSI_IMPOSE'),
-               PRESENT_ABSENT('MATR_C2','SIGM_IMPOSE','EPSI_IMPOSE'),
-               PRESENT_ABSENT('VECT_IMPO', 'SIGM_IMPOSE','EPSI_IMPOSE'),
-               EXCLUS('EPSI_IMPOSE','GRAD_IMPOSE'),
-               EXCLUS('SIGM_IMPOSE','GRAD_IMPOSE'),
-               ),
 
-     SIGM_IMPOSE=FACT(statut='f',
-           SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                      ),
-     EPSI_IMPOSE=FACT(statut='f',
-           EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                      ),
-     GRAD_IMPOSE=FACT(statut='f',
-           regles = ( ENSEMBLE('F11','F12','F13','F21','F22','F23','F31','F32','F33',),),
-           F11 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F12 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F13 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F21 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F22 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F23 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F31 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F32 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           F33 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                      ),
-     MATR_C1=FACT(statut='f',max='**',
-           VALE          =SIMP(statut='o',typ='R',max=1, ),
-           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
-           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
-                              ),
-     MATR_C2=FACT(statut='f',max='**',
-           VALE          =SIMP(statut='o',typ='R',max=1, ),
-           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
-           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
-                              ),
-     VECT_IMPO=FACT(statut='f',max='**',
-           VALE          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ),
-           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
-                              ),
-                    ),
    SIGM_INIT=FACT(statut='f',
           SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
           SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
@@ -33589,6 +35569,37 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT",
           VALE = SIMP(statut='o',typ='R',max='**'),
                      ),
 
+     # on permet certaines variables de commandes scalaires, définies par une fonction du temps
+     # a priori toutes doivent fonctionner
+      AFFE_VARC    = FACT(statut='f',max='**',
+         NOM_VARC        =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC","EPSA","NEUT1","NEUT2")),
+         VALE_FONC   = SIMP(statut='f',typ=(fonction_sdaster,formule) ),
+         B_VALE_REF          =BLOC(condition="NOM_VARC in ('TEMP', 'SECH')",
+            VALE_REF         =SIMP(statut='o',typ='R'),
+                                  ),
+
+             b_ZIRC = BLOC(condition="NOM_VARC=='M_ZIRC'",
+              V1   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V2   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V3   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V4   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+                          ),
+
+             b_ACIER = BLOC(condition="NOM_VARC=='M_ACIER'",
+              V1   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V2   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V3   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V4   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V5   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V6   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+              V7   = SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+                          ),
+                         ),
+        # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
+      LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA","M_ACIER","M_ZIRC","NEUT1","NEUT2")),
+
+
    INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )
 
@@ -33616,14 +35627,14 @@ STANLEY=MACRO(nom="STANLEY",
               sd_prod=None,
               reentrant='n',
               UIinfo={"groupes":("Post-traitements",)},
-              fr="Outil de post-traitement interactif Stanley ",
+              fr=tr("Outil de post-traitement interactif Stanley "),
          RESULTAT        =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca,dyna_harmo,dyna_trans) ),
          MODELE          =SIMP(statut='f',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
          DISPLAY         =SIMP(statut='f',typ='TXM'),
          UNITE_VALIDATION=SIMP(statut='f',typ='I',val_min=10,val_max=90,
-                               fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"),
+                               fr=tr("Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5")),
 
 )  ;
 
@@ -33646,8 +35657,8 @@ STANLEY=MACRO(nom="STANLEY",
 # person_in_charge: mickael.abbas at edf.fr
 #
 STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
-                   fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique,"
-                      +" d'une structure en non linéaire",
+                   fr=tr("Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique,"
+                      " d'une structure en non linéaire"),
                    reentrant='f',
             UIinfo={"groupes":("Résolution","Mécanique",)},
 
@@ -33669,52 +35680,12 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                 FONC_MULT   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
               ),
 #-------------------------------------------------------------------
-         COMPORTEMENT =C_COMPORTEMENT('STAT_NON_LINE'),
+         COMPORTEMENT    =C_COMPORTEMENT('STAT_NON_LINE'),
 #-------------------------------------------------------------------
-         b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
-           ETAT_INIT       =FACT(statut='o',
-             regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',),
-                  #   EXCLUS('EVOL_NOLI','DEPL',),
-                  #   EXCLUS('EVOL_NOLI','SIGM',),
-                  #   EXCLUS('EVOL_NOLI','VARI',),
-                     EXCLUS('NUME_ORDRE','INST'), ),
-             DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-             SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-             VARI            =SIMP(statut='f',typ=cham_elem),
-             STRX            =SIMP(statut='f',typ=cham_elem),
-             EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-             NUME_ORDRE      =SIMP(statut='f',typ='I'),
-             INST            =SIMP(statut='f',typ='R'),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-                 PRECISION       =SIMP(statut='o',typ='R',),),
-             NUME_DIDI       =SIMP(statut='f',typ='I'),
-             INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
-         b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
-           ETAT_INIT       =FACT(statut='f',
-             regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',),
-                   #  EXCLUS('EVOL_NOLI','DEPL',),
-                   #  EXCLUS('EVOL_NOLI','SIGM',),
-                   #  EXCLUS('EVOL_NOLI','VARI',),
-                     EXCLUS('NUME_ORDRE','INST'), ),
-             DEPL            =SIMP(statut='f',typ=cham_no_sdaster),
-             SIGM            =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
-             VARI            =SIMP(statut='f',typ=cham_elem),
-             STRX            =SIMP(statut='f',typ=cham_elem),
-             EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
-             NUME_ORDRE      =SIMP(statut='f',typ='I'),
-             INST            =SIMP(statut='f',typ='R'),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
-                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
-             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
-                 PRECISION       =SIMP(statut='o',typ='R',),),
-             NUME_DIDI       =SIMP(statut='f',typ='I'),
-             INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
-         ),),
+         b_reuse =BLOC(condition = "reuse",fr=tr("en mode concept reentrant : ETAT_INIT obligatoire"),
+            ETAT_INIT         =C_ETAT_INIT('STAT_NON_LINE','o'),),
+         b_notreuse =BLOC(condition = "not reuse",fr=tr("en mode concept reentrant : ETAT_INIT facultatif"),
+            ETAT_INIT         =C_ETAT_INIT('STAT_NON_LINE','f'),),
 #-------------------------------------------------------------------
          INCREMENT       =C_INCREMENT('MECANIQUE'),
 #-------------------------------------------------------------------
@@ -33731,7 +35702,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
 #-------------------------------------------------------------------
          SOLVEUR         =C_SOLVEUR('STAT_NON_LINE'),
 #-------------------------------------------------------------------
-         OBSERVATION     =C_OBSERVATION(),
+         OBSERVATION     =C_OBSERVATION('MECANIQUE'),
 #-------------------------------------------------------------------
          SUIVI_DDL       =C_SUIVI_DDL(),
 #-------------------------------------------------------------------
@@ -33739,8 +35710,8 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
 #-------------------------------------------------------------------
          CRIT_QUALITE    =FACT(statut='f',max=1,
            ERRE_TEMPS_THM  =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
-                                 fr="Adaptation temporelle pour les modélisations HM instationnaires",
-                                 ang="Time adaptation for unstationary HM models"),
+                                 fr=tr("Adaptation temporelle pour les modélisations HM instationnaires"),
+                                 ),
          ),
 #-------------------------------------------------------------------
          ENERGIE         =FACT(statut='f',max=1,
@@ -33756,7 +35727,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            MODI_RIGI    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
            b_char_crit  =BLOC(condition="(RIGI_GEOM=='OUI')",
               CHAR_CRIT       =SIMP(statut='f',typ='R',min=2,max=2,
-                                 fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),
+                                 fr=tr("Valeur des deux charges critiques délimitant la bande de recherche en HPP")),
                               ),
            TYPE         =SIMP(statut='f',typ='TXM',defaut="FLAMBEMENT",into=("FLAMBEMENT","STABILITE")),
            PREC_INSTAB   =SIMP(statut='f',typ='R',defaut=1.E-6,max=1,),
@@ -33795,7 +35766,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
          ),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
          b_info=BLOC(condition="INFO==2",
-               fr="filtre les messages émis dans le .mess selon le type de message demandé",
+               fr=tr("filtre les messages émis dans le .mess selon le type de message demandé"),
                INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
                                into=("CONTACT",
                                      "MECA_NON_LINE",
@@ -33840,7 +35811,7 @@ TEST_COMPOR =MACRO(nom="TEST_COMPOR",
                   # sd_prod=test_compor_sdprod,
                    sd_prod=table_sdaster,
                    docu="",reentrant='n',
-                   fr="macro de test des comportements incrementaux dependant de la temperature",
+                   fr=tr("macro de test des comportements incrementaux dependant de la temperature"),
 
          OPTION         =SIMP(statut='f',typ='TXM',into=("THER","MECA"),defaut="THER"),
 
@@ -33850,49 +35821,49 @@ TEST_COMPOR =MACRO(nom="TEST_COMPOR",
 
          b_ther          =BLOC(condition = "OPTION == 'THER'",
             regles=(EXCLUS('C_PRAG','D_SIGM_EPSI'),),
-            MATER           =SIMP(statut='o',typ=mater_sdaster,max=1,fr="materiau dependant de la temperature"),
+            MATER           =SIMP(statut='o',typ=mater_sdaster,max=1,fr=tr("materiau dependant de la temperature")),
             ALPHA           =SIMP(statut='o',typ=fonction_sdaster,
-                                  fr="coefficient de dilatation fonction de la temperature"),
+                                  fr=tr("coefficient de dilatation fonction de la temperature")),
             YOUNG           =SIMP(statut='o',typ=fonction_sdaster,
-                                  fr="module d'Young fonction de la temperature"),
+                                  fr=tr("module d'Young fonction de la temperature")),
             LIST_MATER      =SIMP(statut='o',typ=mater_sdaster,max='**',
-                                          fr="liste des materiaux constants interpolés à chaque température"),
-            TEMP_INIT       =SIMP(statut='o',typ='R', fr="temperature initiale et de reference"),
-            TEMP_FIN        =SIMP(statut='o',typ='R', fr="temperature finale"),
-            INST_FIN        =SIMP(statut='f',typ='R',defaut=1.,fr="instant final"),
+                                          fr=tr("liste des materiaux constants interpolés à chaque température")),
+            TEMP_INIT       =SIMP(statut='o',typ='R', fr=tr("temperature initiale et de reference")),
+            TEMP_FIN        =SIMP(statut='o',typ='R', fr=tr("temperature finale")),
+            INST_FIN        =SIMP(statut='f',typ='R',defaut=1.,fr=tr("instant final")),
             SUPPORT         =SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",),defaut=("POINT"),),
-            NB_VARI         =SIMP(statut='o',typ='I', fr="nombre de variables internes - 0 en elasticité"),
+            NB_VARI         =SIMP(statut='o',typ='I', fr=tr("nombre de variables internes - 0 en elasticité")),
             VARI_TEST       =SIMP(statut='f',typ='TXM',max='**',
-                                  fr="liste de variables internes à tester - par defaut, toutes"),
+                                  fr=tr("liste de variables internes à tester - par defaut, toutes")),
 
 #           special ecrouissage cinematique
             D_SIGM_EPSI     =SIMP(statut='f',typ=fonction_sdaster,
-                                  fr="module tangent fonction de la temperature- VMIS_CINE_LINE"),
+                                  fr=tr("module tangent fonction de la temperature- VMIS_CINE_LINE")),
             C_PRAG          =SIMP(statut='f',typ=fonction_sdaster,
-                                  fr="constante de Prager fonction de la temperature- VMIS_ECMI_*"),
+                                  fr=tr("constante de Prager fonction de la temperature- VMIS_ECMI_*")),
                         ),
          b_meca          =BLOC(condition = "OPTION == 'MECA'",
             LIST_MATER      =SIMP(statut='o',typ=mater_sdaster,max=2,min=2,
-                                          fr="liste des materiaux en Pa puis MPa "),
-            YOUNG           =SIMP(statut='o',typ='R',fr="module d'Young"),
-            POISSON         =SIMP(statut='o',typ='R',fr="coef de Poisson"),
+                                          fr=tr("liste des materiaux en Pa puis MPa ")),
+            YOUNG           =SIMP(statut='o',typ='R',fr=tr("module d'Young")),
+            POISSON         =SIMP(statut='o',typ='R',fr=tr("coef de Poisson")),
             LIST_NPAS       =SIMP(statut='f',typ='I',max='**',
-                                  fr="nombre de pas de temps pour chaque discretisation"),
+                                  fr=tr("nombre de pas de temps pour chaque discretisation")),
             LIST_TOLE       =SIMP(statut='f',typ='R',max='**',),
             PREC_ZERO       =SIMP(statut='f',typ='R',max='**',),
             VARI_TEST       =SIMP(statut='f',typ='TXM',max='**',defaut=('V1','VMIS','TRACE'),
-                                  fr="liste des CMP à tester "),
+                                  fr=tr("liste des CMP à tester ")),
             SUPPORT         =SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",)),
             MODELISATION    =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN"),defaut="3D",),
             ANGLE           =SIMP(statut='f',typ='R',max=1, defaut=0.,
-             fr='Rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées',),
-            MASSIF          =FACT(statut='f',max='**',fr='orientation du materiau (monocristal, orthotropie)',
+             fr=tr('Rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées'),),
+            MASSIF          =FACT(statut='f',max='**',fr=tr('orientation du materiau (monocristal, orthotropie)'),
               regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),),
               ANGL_REP        =SIMP(statut='f',typ='R',min=1,max=3),
               ANGL_EULER      =SIMP(statut='f',typ='R',min=1,max=3),
                                  ),
             TEST_TANGENTE   =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON"),defaut="OUI",),
-            VERI_MATR_OPTION  =FACT(statut='f',max=1,fr='options pour le test de la matrice tangente',
+            VERI_MATR_OPTION  =FACT(statut='f',max=1,fr=tr('options pour le test de la matrice tangente'),
               VALE_PERT_RELA  =SIMP(statut='f',typ='R',defaut=1.E-5),
               PRECISION       =SIMP(statut='f',typ='R',defaut=1.E-4 ),
               PREC_ZERO       =SIMP(statut='f',typ='R',defaut=1.E-12 ),
@@ -33922,10 +35893,10 @@ TEST_COMPOR =MACRO(nom="TEST_COMPOR",
 TEST_FICHIER=MACRO(nom="TEST_FICHIER",
                    op=OPS('Macro.test_fichier_ops.test_fichier_ops'),
                    UIinfo={"groupes":("Utilitaires",)},
-                   fr="Tester la non régression de fichiers produits par des commandes aster",
-   FICHIER          =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
+                   fr=tr("Tester la non régression de fichiers produits par des commandes aster"),
+   FICHIER          =SIMP(statut='o',typ=('Fichier','','Sauvegarde'),validators=LongStr(1,255)),
    EXPR_IGNORE      =SIMP(statut='f',typ='TXM',max='**',
-                          fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
+                          fr=tr("Liste d'expressions régulières permettant d'ignorer certaines lignes")),
    NB_VALE         =SIMP(statut='o',typ='I',),
 
    INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -33953,11 +35924,11 @@ TEST_FICHIER=MACRO(nom="TEST_FICHIER",
 TEST_FONCTION=MACRO(nom="TEST_FONCTION",
                     op=OPS('Macro.test_fonction_ops.test_fonction_ops'),
                     sd_prod=None,
-            fr="Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence",
+            fr=tr("Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence"),
             UIinfo={"groupes":("Fonctions","Utilitaires",)},
          TEST_NOOK       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
          VALEUR          =FACT(statut='f',max='**',
-                               fr="Tester la valeur d une fonction ou d une nappe",
+                               fr=tr("Tester la valeur d une fonction ou d une nappe"),
            regles=(UN_PARMI('VALE_PARA','INTERVALLE'),),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
            NOM_PARA        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2),
@@ -33966,7 +35937,7 @@ TEST_FONCTION=MACRO(nom="TEST_FONCTION",
            **C_TEST_REFERENCE('FONCTION', max='**')
          ),
          ATTRIBUT        =FACT(statut='f',max='**',
-                               fr="Tester la valeur d un attribut d une fonction ou d''une nappe",
+                               fr=tr("Tester la valeur d un attribut d une fonction ou d''une nappe"),
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
            PARA            =SIMP(statut='f',typ='R' ),
            CRIT_PARA       =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
@@ -34001,7 +35972,7 @@ TEST_FONCTION=MACRO(nom="TEST_FONCTION",
 # person_in_charge: j-pierre.lefebvre at edf.fr
 TEST_RESU=PROC(nom="TEST_RESU",op=23,
             UIinfo={"groupes":("Résultats et champs","Utilitaires",)},
-         fr="Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence",
+         fr=tr("Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence"),
          regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','CARTE','RESU','GENE','OBJET','TEST_NAN',)),
 
          CHAM_NO         =FACT(statut='f',max='**',
@@ -34126,7 +36097,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,
 # person_in_charge: mathieu.courtois at edf.fr
 TEST_TABLE=PROC(nom="TEST_TABLE",op= 177,
                 UIinfo={"groupes":("Tables","Utilitaires",)},
-                fr="Tester une cellule ou une colonne d'une table",
+                fr=tr("Tester une cellule ou une colonne d'une table"),
 #  concept table_sdaster à tester
          TABLE           =SIMP(statut='o',typ=table_sdaster),
          FILTRE          =FACT(statut='f',max='**',
@@ -34171,24 +36142,24 @@ TEST_TEMPS=MACRO(nom="TEST_TEMPS",
                  op=OPS('Macro.test_temps_ops.test_temps_ops'),
                  sd_prod=None,
                  UIinfo={"groupes":("Utilitaires",)},
-                 fr="Permet de vérifier le temps passé dans les commandes",
+                 fr=tr("Permet de vérifier le temps passé dans les commandes"),
                  reentrant='n',
 
    RESU = FACT(statut='o',max='**',
       COMMANDE   = SIMP(statut='o', typ='TXM',
-            fr="Nom de la commande testee"),
+            fr=tr("Nom de la commande testee")),
       NUME_ORDRE = SIMP(statut='f', typ='I', defaut=1, val_min=1,
-            fr="Numero de l'occurrence de la commande testee"),
+            fr=tr("Numero de l'occurrence de la commande testee")),
       MACHINE    = SIMP(statut='o', typ='TXM', max='**',
-            fr="Liste des machines dont on a la référence"),
+            fr=tr("Liste des machines dont on a la référence")),
       VALE       = SIMP(statut='o', typ='R', max='**',
-            fr="Temps CPU sur les machines listees en secondes"),
+            fr=tr("Temps CPU sur les machines listees en secondes")),
       CRITERE    = SIMP(statut='f', typ='TXM', defaut='RELATIF', into=('ABSOLU', 'RELATIF')),
       PRECISION  = SIMP(statut='f', typ='R', defaut=0.01, max='**',
-            fr="Ecart admissible pour chaque machine"),
+            fr=tr("Ecart admissible pour chaque machine")),
       TYPE_TEST  = SIMP(statut='o', typ='TXM', into=('USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'),
             defaut='USER+SYS',
-            fr="Valeur testee parmi 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'"),
+            fr=tr("Valeur testee parmi 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'")),
    ),
 
    INFO  = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -34213,7 +36184,7 @@ TEST_TEMPS=MACRO(nom="TEST_TEMPS",
 # person_in_charge: jessica.haelewyn at edf.fr
 THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
             UIinfo={"groupes":("Résolution","Thermique",)},
-                   fr="Résoudre un problème thermique linéaire stationnaire ou transitoire",
+                   fr=tr("Résoudre un problème thermique linéaire stationnaire ou transitoire"),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
          CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
@@ -34269,8 +36240,8 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
 # person_in_charge: jessica.haelewyn at edf.fr
 THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
             UIinfo={"groupes":("Résolution","Thermique",)},
-                   fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
-                      +" stationnaire ou transitoire" ,
+                   fr=tr("Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
+                       " stationnaire ou transitoire"),
          MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
          CHAM_MATER      =SIMP(statut='o',typ=(cham_mater) ),
          CARA_ELEM       =SIMP(statut='c',typ=(cara_elem) ),
@@ -34329,7 +36300,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
 #-------------------------------------------------------------------
          ARCHIVAGE       =C_ARCHIVAGE(),
 #-------------------------------------------------------------------
-         OBSERVATION     =C_OBSERVATION(),
+         OBSERVATION     =C_OBSERVATION('THERMIQUE'),
 #------------------------------------------------------------------- 
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
@@ -34354,8 +36325,8 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
 # ======================================================================
 # person_in_charge: jessica.haelewyn at edf.fr
 THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
-                     fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
-                        +" stationnaire avec chargement mobile",
+                     fr=tr("Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
+                        " stationnaire avec chargement mobile"),
                      reentrant='n',
             UIinfo={"groupes":("Résolution","Thermique",)},
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
index efe2a5a4aea4b78da1364bd1fcfc9d9258edd79b..30b6cf6bf5e54d49dfe0c5ce73f1493b8a12528b 100644 (file)
@@ -30,60 +30,75 @@ from glob import glob
 # Modules Eficas
 import Accas
 from Accas import ASSD
-from Noyau.ascheckers     import CheckLog
+from Noyau.ascheckers import CheckLog
 from Noyau.N_info import message, SUPERV
 from Noyau.N_types import force_list
 
 try:
-   import aster
-   import aster_core
-   aster_exists = True
-   # Si le module aster est présent, on le connecte
-   # au JDC
-   import Build.B_CODE
-   Build.B_CODE.CODE.codex=aster
-
-   from Utilitai.Utmess   import UTMESS, MessageLog
+    import aster
+    import aster_core
+    aster_exists = True
+    # Si le module aster est présent, on le connecte
+    # au JDC
+    import Build.B_CODE
+    Build.B_CODE.CODE.codex = aster
+
+    from Utilitai.Utmess import UTMESS, MessageLog
 except:
-   aster_exists = False
+    aster_exists = False
 
 
+ipass = 0
+
 
 def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO):
-   """Fonction sdprod partie commune à DEBUT et POURSUITE.
-   (on stocke un entier au lieu du logique)
-   """
-   jdc.set_par_lot(PAR_LOT, user_value=True)
-   jdc.impr_macro = int(IMPR_MACRO == 'OUI')
-   jdc.jxveri     = int(CODE != None or (DEBUG != None and DEBUG['JXVERI'] == 'OUI'))
-   jdc.sdveri     = int(DEBUG != None and DEBUG['SDVERI'] == 'OUI')
-   jdc.fico       = None
-   jdc.sd_checker = CheckLog()
-   jdc.info_level = INFO
-   jdc.hist_etape = (DEBUG != None and DEBUG['HIST_ETAPE'] == 'OUI')
-   if CODE != None:
-      jdc.fico = 'TEST'
-   if aster_exists:
-      if LANG:
-         from Execution.i18n import localization
-         localization.install(LANG)
-      # pb en cas d'erreur dans FIN : appeler reset_print_function dans traiter_fin_exec ?
-      #from functools import partial
-      #asprint = partial(aster.affiche, 'MESSAGE')
-      #message.register_print_function(asprint)
-      # ne faire qu'une fois
-      if not hasattr(jdc, 'msg_init'):
-         # messages d'alarmes désactivés
-         if IGNORE_ALARM:
-            if not type(IGNORE_ALARM) in (list, tuple):
-               IGNORE_ALARM = [IGNORE_ALARM]
-            for idmess in IGNORE_ALARM:
-               MessageLog.disable_alarm(idmess)
-      # en POURSUITE, conserver le catalogue de comportement picklé
-      if not hasattr(jdc, 'catalc'):
-         from Comportement import catalc
-         jdc.catalc = catalc
-      jdc.msg_init = True
+    """Fonction sdprod partie commune à DEBUT et POURSUITE.
+    (on stocke un entier au lieu du logique)
+    """
+    global ipass
+    ipass += 1
+    # deux passages: build et exec
+    if ipass > 2:
+        UTMESS('F', 'SUPERVIS_2')
+    jdc.set_par_lot(PAR_LOT, user_value=True)
+    jdc.impr_macro = int(IMPR_MACRO == 'OUI')
+    jdc.jxveri = int(
+        CODE != None or (DEBUG != None and DEBUG['JXVERI'] == 'OUI'))
+    jdc.sdveri = int(DEBUG != None and DEBUG['SDVERI'] == 'OUI')
+    jdc.fico = None
+    jdc.sd_checker = CheckLog()
+    jdc.info_level = INFO
+    jdc.hist_etape = (DEBUG != None and DEBUG['HIST_ETAPE'] == 'OUI')
+    if CODE != None:
+        jdc.fico = 'TEST'
+    if aster_exists:
+        if LANG:
+            from Execution.i18n import localization
+            localization.install(LANG)
+        # pb en cas d'erreur dans FIN : appeler reset_print_function dans traiter_fin_exec ?
+        # from functools import partial
+        # asprint = partial(aster.affiche, 'MESSAGE')
+        # message.register_print_function(asprint)
+        # ne faire qu'une fois
+        if not hasattr(jdc, 'msg_init'):
+            # messages d'alarmes désactivés
+            if IGNORE_ALARM:
+                if not type(IGNORE_ALARM) in (list, tuple):
+                    IGNORE_ALARM = [IGNORE_ALARM]
+                for idmess in IGNORE_ALARM:
+                    MessageLog.disable_alarm(idmess)
+        # en POURSUITE, conserver le catalogue de comportement picklé
+        if not hasattr(jdc, 'catalc'):
+            from Comportement import catalc
+            jdc.catalc = catalc
+        # ne faire qu'une fois
+        if not hasattr(jdc, 'msg_init') and jdc.syntax_check():
+            if jdc.par_lot == 'NON':
+                UTMESS('A', 'SUPERVIS_11')
+                raise EOFError("can not check syntax with PAR_LOT='NON'.")
+            else:
+                UTMESS('I', 'SUPERVIS_10')
+        jdc.msg_init = True
 
 
 def DEBUT(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **args):
@@ -91,9 +106,11 @@ def DEBUT(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **ar
        Fonction sdprod de la macro DEBUT
     """
     # La commande DEBUT ne peut exister qu'au niveau jdc
-    if self.jdc is not self.parent :
-        raise Accas.AsException("La commande DEBUT ne peut exister qu'au niveau jdc")
-    commun_DEBUT_POURSUITE(self.jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO)
+    if self.jdc is not self.parent:
+        raise Accas.AsException(
+            "La commande DEBUT ne peut exister qu'au niveau jdc")
+    commun_DEBUT_POURSUITE(
+        self.jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO)
     suppr = False
     for fname in glob('pick.*') + glob('glob.*'):
         try:
@@ -105,147 +122,163 @@ def DEBUT(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **ar
     if suppr:
         UTMESS('I', 'SUPERVIS_6')
 
-def build_debut(self,**args):
-   """
-   Fonction ops pour la macro DEBUT
-   """
-   self.jdc.UserError=self.codex.error
-
-   if self.jdc.par_lot == 'NON' :
-      self.jdc._Build()
-   # On execute la fonction debut pour initialiser les bases
-   # Cette execution est indispensable avant toute autre action sur ASTER
-   # op doit être un entier car la fonction debut appelle GCECDU qui demande
-   # le numéro de l'operateur associé (getoper)
-   self.definition.op=0
-   self.set_icmd(1)
-   self.codex.debut(self)
-   # On remet op a None juste apres pour eviter que la commande DEBUT
-   # ne soit executée dans la phase d'execution
-   self.definition.op=None
-   return 0
+
+def build_debut(self, **args):
+    """
+    Fonction ops pour la macro DEBUT
+    """
+    self.jdc.UserError = self.codex.error
+
+    if self.jdc.par_lot == 'NON':
+        self.jdc._Build()
+    # On execute la fonction debut pour initialiser les bases
+    # Cette execution est indispensable avant toute autre action sur ASTER
+    # op doit être un entier car la fonction debut appelle GCECDU qui demande
+    # le numéro de l'operateur associé (getoper)
+    self.definition.op = 0
+    self.set_icmd(1)
+    self.codex.debut(self)
+    # On remet op a None juste apres pour eviter que la commande DEBUT
+    # ne soit executée dans la phase d'execution
+    self.definition.op = None
+    return 0
+
 
 def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **args):
-   """
-       Fonction sdprod de la macro POURSUITE
-   """
-   # La commande POURSUITE ne peut exister qu'au niveau jdc
-   if self.jdc is not self.parent :
-      raise Accas.AsException("La commande POURSUITE ne peut exister qu'au niveau jdc")
-
-   commun_DEBUT_POURSUITE(self.jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO)
-   if aster_exists:
-       self.jdc.set_poursuite(True)
-
-   if self.codex:
-     base = 'glob.1'
-     if aster_exists:
-        repglob = aster_core.get_option("repglob")
-        bhdf = osp.join(repglob, 'bhdf.1')
-        base = osp.join(repglob, 'glob.1')
-        if not osp.isfile(base) and not osp.isfile(bhdf):
-            UTMESS('F','SUPERVIS_89')
-     # Le module d'execution est accessible et glob.1 est present
-     # Pour eviter de rappeler plusieurs fois la sequence d'initialisation
-     # on memorise avec l'attribut fichier_init que l'initialisation
-     # est réalisée
-     if hasattr(self,'fichier_init'):return
-     self.fichier_init='glob.1'
-     self.jdc.initexec()
-     # le sous programme fortran appelé par self.codex.poursu demande le numéro
-     # de l'operateur (GCECDU->getoper), on lui donne la valeur 0
-     self.definition.op=0
-     self.codex.poursu(self)
-     # Par la suite pour ne pas executer la commande pendant la phase
-     # d'execution on le remet à None
-     self.definition.op = None
-     self.g_context = {}
-
-     # Il peut exister un contexte python sauvegardé sous forme  pickled
-     # On récupère ces objets après la restauration des concepts pour que
-     # la récupération des objets pickled soit prioritaire.
-     # On vérifie que les concepts relus dans glob.1 sont bien tous
-     # presents sous le même nom et du même type dans pick.1
-     # Le contexte est ensuite updaté (surcharge) et donc enrichi des
-     # variables qui ne sont pas des concepts.
-     # On supprime du pickle_context les concepts valant None, ca peut
-     # être le cas des concepts non executés, placés après FIN.
-     UTMESS('I', 'SUPERVIS2_1', valk='pick.1')
-     pickle_context = get_pickled_context()
-     if pickle_context == None:
-        UTMESS('F', 'SUPERVIS_86')
-        return
-     self.jdc.restore_pickled_attrs(pickle_context)
-     # vérification cohérence pick/base
-     savsign = self.jdc._sign
-     newsign = self.jdc.signature(base)
-     if args.get('FORMAT_HDF') == 'OUI':
-         UTMESS('I', 'SUPERVIS_71')
-     elif newsign != savsign:
-         UTMESS('A', 'SUPERVIS_69', valk=(savsign, newsign),
-                                    vali=self.jdc.jeveux_sysaddr)
-     else:
-         UTMESS('I', 'SUPERVIS_70', valk=newsign, vali=self.jdc.jeveux_sysaddr)
-     from Cata.cata  import entier
-     from Noyau.N_CO import CO
-     interrupt = []
-     count = 0
-     UTMESS('I', 'SUPERVIS_65')
-     for elem, co in pickle_context.items():
-         if isinstance(co, ASSD):
-            count += 1
-            typnam = co.__class__.__name__
-            # on rattache chaque assd au nouveau jdc courant (en poursuite)
-            co.jdc = self.jdc
-            co.parent = self.jdc
-            # le marquer comme 'executed'
-            i_int = ''
-            if co.executed != 1:
-                interrupt.append((co.nom, typnam))
-                i_int = 'exception'
-            co.executed = 1
-            UTMESS('I', 'SUPERVIS_66', valk=(co.nom, typnam.lower(), i_int))
-            # pour que sds_dict soit cohérent avec g_context
-            self.jdc.sds_dict[elem] = co
-            if elem != co.nom:
-               name = re.sub('_([0-9]+)$', '[\\1]', co.nom)
-               if self.jdc.info_level > 1:
-                  UTMESS('I', 'SUPERVIS2_3',
-                         valk=(elem, type(co).__name__.upper()))
-               UTMESS('A', 'SUPERVIS_93', valk=(elem, "del %s" % name))
-               del pickle_context[elem]
-               continue
-         if co == None:
-            del pickle_context[elem]
-     if count == 0:
-         UTMESS('I', 'SUPERVIS_67')
-     for nom, typnam in interrupt:
-         UTMESS('I', 'SUPERVIS_76', valk=(nom, typnam))
-     if not interrupt:
-         UTMESS('I', 'SUPERVIS_72')
-     if self.jdc.info_level > 1:
-         keys = pickle_context.keys()
-         keys.sort()
-         for key in keys:
-             try:
-                 value = str(pickle_context[key])
-                 if len(value) > 1000:
-                     value = value[:1000] + '...'
-                 valk = key, value
-             except:
-                 valk = key, '...'
-             UTMESS('I', 'SUPERVIS_73', valk=valk)
-     self.g_context.update(pickle_context)
-     return
-
-   else:
-     # Si le module d'execution n est pas accessible ou glob.1 absent on
-     # demande un fichier (EFICAS)
-     # Il faut éviter de réinterpréter le fichier à chaque appel de
-     # POURSUITE
-     if hasattr(self,'fichier_init'):
+    """
+        Fonction sdprod de la macro POURSUITE
+    """
+    # La commande POURSUITE ne peut exister qu'au niveau jdc
+    if self.jdc is not self.parent:
+        raise Accas.AsException(
+            "La commande POURSUITE ne peut exister qu'au niveau jdc")
+
+    code = None if CODE == 'NON' else 'TEST'
+    commun_DEBUT_POURSUITE(
+        self.jdc, PAR_LOT, IMPR_MACRO, code, DEBUG, IGNORE_ALARM, LANG, INFO)
+    if aster_exists:
+        self.jdc.set_poursuite(True)
+    only_syntax = self.jdc.syntax_check()
+
+    if self.codex:
+        base = 'glob.1'
+        if aster_exists:
+            repglob = aster_core.get_option("repglob")
+            bhdf = osp.join(repglob, 'bhdf.1')
+            base = osp.join(repglob, 'glob.1')
+            if not osp.isfile(base) and not osp.isfile(bhdf) \
+                    and not only_syntax:
+                UTMESS('F', 'SUPERVIS_89')
+        # Le module d'execution est accessible et glob.1 est present
+        # Pour eviter de rappeler plusieurs fois la sequence d'initialisation
+        # on memorise avec l'attribut fichier_init que l'initialisation
+        # est réalisée
+        if hasattr(self, 'fichier_init'):
+            return
+        self.fichier_init = 'glob.1'
+        if not only_syntax:
+            self.jdc.initexec()
+            # le sous programme fortran appelé par self.codex.poursu demande le numéro
+            # de l'operateur (GCECDU->getoper), on lui donne la valeur 0
+            self.definition.op = 0
+            self.codex.poursu(self)
+        # Par la suite pour ne pas executer la commande pendant la phase
+        # d'execution on le remet à None
+        self.definition.op = None
+        self.g_context = {}
+
+        # Il peut exister un contexte python sauvegardé sous forme  pickled
+        # On récupère ces objets après la restauration des concepts pour que
+        # la récupération des objets pickled soit prioritaire.
+        # On vérifie que les concepts relus dans glob.1 sont bien tous
+        # presents sous le même nom et du même type dans pick.1
+        # Le contexte est ensuite updaté (surcharge) et donc enrichi des
+        # variables qui ne sont pas des concepts.
+        # On supprime du pickle_context les concepts valant None, ca peut
+        # être le cas des concepts non executés, placés après FIN.
+        UTMESS('I', 'SUPERVIS2_1', valk='pick.1')
+        pickle_context = get_pickled_context()
+        if pickle_context == None:
+            UTMESS('F', 'SUPERVIS_86')
+            return
+        self.jdc.restore_pickled_attrs(pickle_context)
+        if not only_syntax:
+            # vérification cohérence pick/base
+            savsign = self.jdc._sign
+            newsign = self.jdc.signature(base)
+            if args.get('FORMAT_HDF') == 'OUI':
+                UTMESS('I', 'SUPERVIS_71')
+            elif newsign != savsign:
+                UTMESS('A', 'SUPERVIS_69', valk=(savsign, newsign),
+                       vali=self.jdc.jeveux_sysaddr)
+            else:
+                UTMESS(
+                    'I', 'SUPERVIS_70', valk=newsign, vali=self.jdc.jeveux_sysaddr)
+        from Cata.cata import entier
+        from Noyau.N_CO import CO
+        interrupt = []
+        count = 0
+        UTMESS('I', 'SUPERVIS_65')
+        for elem, co in pickle_context.items():
+            if isinstance(co, ASSD):
+                count += 1
+                typnam = co.__class__.__name__
+                # on rattache chaque assd au nouveau jdc courant (en poursuite)
+                co.jdc = self.jdc
+                co.parent = self.jdc
+                # le marquer comme 'executed'
+                i_int = ''
+                if co.executed != 1:
+                    interrupt.append((co.nom, typnam))
+                    i_int = 'exception'
+                co.executed = 1
+                UTMESS('I', 'SUPERVIS_66', valk=(
+                    co.nom, typnam.lower(), i_int))
+                # pour que sds_dict soit cohérent avec g_context
+                self.jdc.sds_dict[elem] = co
+                if elem != co.nom:
+                    name = re.sub('_([0-9]+)$', '[\\1]', co.nom)
+                    if self.jdc.info_level > 1:
+                        UTMESS('I', 'SUPERVIS2_3',
+                               valk=(elem, type(co).__name__.upper()))
+                    UTMESS('A', 'SUPERVIS_93', valk=(
+                        elem, name, "del {}".format(elem)))
+                    del pickle_context[elem]
+                    continue
+            if co == None:
+                del pickle_context[elem]
+        if only_syntax:
+            interrupt = []
+        if count == 0:
+            UTMESS('I', 'SUPERVIS_67')
+        for nom, typnam in interrupt:
+            UTMESS('I', 'SUPERVIS_76', valk=(nom, typnam))
+        if not interrupt:
+            UTMESS('I', 'SUPERVIS_72')
+        if self.jdc.info_level > 1:
+            keys = pickle_context.keys()
+            keys.sort()
+            for key in keys:
+                try:
+                    value = str(pickle_context[key])
+                    if len(value) > 1000:
+                        value = value[:1000] + '...'
+                    valk = key, value
+                except:
+                    valk = key, '...'
+                UTMESS('I', 'SUPERVIS_73', valk=valk)
+        self.g_context.update(pickle_context)
         return
-     self.make_poursuite()
+
+    else:
+        # Si le module d'execution n est pas accessible ou glob.1 absent on
+        # demande un fichier (EFICAS)
+        # Il faut éviter de réinterpréter le fichier à chaque appel de
+        # POURSUITE
+        if hasattr(self, 'fichier_init'):
+            return
+        self.make_poursuite()
+
 
 def get_pickled_context():
     """
@@ -255,43 +288,47 @@ def get_pickled_context():
     """
     fpick = 'pick.1'
     if not osp.isfile(fpick):
-       return None
+        return None
 
-    # Le fichier pick.1 est présent. On essaie de récupérer les objets python sauvegardés
-    context={}
+    # Le fichier pick.1 est présent. On essaie de récupérer les objets python
+    # sauvegardés
+    context = {}
     try:
-       file=open(fpick, 'rb')
-       # Le contexte sauvegardé a été picklé en une seule fois. Il est seulement
-       # possible de le récupérer en bloc. Si cette opération echoue, on ne récupère
-       # aucun objet.
-       context = pickle.load(file)
-       file.close()
+        file = open(fpick, 'rb')
+        # Le contexte sauvegardé a été picklé en une seule fois. Il est seulement
+        # possible de le récupérer en bloc. Si cette opération echoue, on ne récupère
+        # aucun objet.
+        context = pickle.load(file)
+        file.close()
     except:
-       # En cas d'erreur on ignore le contenu du fichier
-       traceback.print_exc()
-       return None
+        # En cas d'erreur on ignore le contenu du fichier
+        traceback.print_exc()
+        return None
 
     return context
 
-def POURSUITE_context(self,d):
-   """
-       Fonction op_init de la macro POURSUITE
-   """
-   # self représente la macro POURSUITE ...
-   d.update(self.g_context)
-   # Une commande POURSUITE n'est possible qu'au niveau le plus haut
-   # On ajoute directement les concepts dans le contexte du jdc
-
-def build_poursuite(self,**args):
-   """
-   Fonction ops pour la macro POURSUITE
-   """
-   # Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE
-   # Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans
-   # la fonction sdprod de la commande (ops.POURSUITE))
-   self.set_icmd(1)
-   self.jdc.UserError = self.codex.error
-   return 0
+
+def POURSUITE_context(self, d):
+    """
+        Fonction op_init de la macro POURSUITE
+    """
+    # self représente la macro POURSUITE ...
+    d.update(self.g_context)
+    # Une commande POURSUITE n'est possible qu'au niveau le plus haut
+    # On ajoute directement les concepts dans le contexte du jdc
+
+
+def build_poursuite(self, **args):
+    """
+    Fonction ops pour la macro POURSUITE
+    """
+    # Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE
+    # Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans
+    # la fonction sdprod de la commande (ops.POURSUITE))
+    self.set_icmd(1)
+    self.jdc.UserError = self.codex.error
+    return 0
+
 
 def INCLUDE(self, UNITE, DONNEE, **args):
     """Fonction sd_prod pour la macro INCLUDE"""
@@ -323,22 +360,25 @@ def INCLUDE(self, UNITE, DONNEE, **args):
             UTMESS('F', 'FICHIER_2')
         raise
 
-def INCLUDE_context(self,d):
+
+def INCLUDE_context(self, d):
     """Fonction op_init pour macro INCLUDE"""
     ctxt = self.g_context
     d.update(ctxt)
 
-def build_include(self,**args):
+
+def build_include(self, **args):
     """Fonction ops de la macro INCLUDE appelée lors de la phase de Build"""
     # Pour presque toutes les commandes (sauf FORMULE et POURSUITE)
     # le numéro de la commande n est pas utile en phase de construction
     # La macro INCLUDE ne sera pas numérotée (incrément=None)
-    ier=0
+    ier = 0
     self.set_icmd(None)
     # On n'execute pas l'ops d'include en phase BUILD car il ne sert a rien.
-    #ier=self.codex.opsexe(self,1)
+    # ier=self.codex.opsexe(self,1)
     return ier
 
+
 def _detr_list_co(self, context):
     """Utilitaire pour DETRUIRE"""
     list_co = set()
@@ -349,71 +389,77 @@ def _detr_list_co(self, context):
     for mc in self['OBJET'] or []:
         # longueur <= 8, on cherche les concepts existants
         for nom in force_list(mc['CHAINE']):
-            assert type(nom) in (str, unicode), 'On attend une chaine de caractères : %s' % nom
+            assert type(nom) in (
+                str, unicode), 'On attend une chaine de caractères : %s' % nom
             if len(nom.strip()) <= 8:
                 if self.jdc.sds_dict.get(nom) != None:
                     list_co.add(self.jdc.sds_dict[nom])
                 elif context.get(nom) != None:
                     list_co.add(context[nom])
-            #else uniquement destruction des objets jeveux
+            # else uniquement destruction des objets jeveux
     return list_co
 
+
 def DETRUIRE(self, CONCEPT, OBJET, **args):
-   """Fonction OPS pour la macro DETRUIRE : exécution réelle."""
-   # pour les formules, il ne faut pas vider l'attribut "parent_context" trop tôt
-   for co in _detr_list_co(self, {}):
-       co.supprime(force=True)
-   self.set_icmd(1)
-   ier = self.codex.opsexe(self, 7)
-   return ier
+    """Fonction OPS pour la macro DETRUIRE : exécution réelle."""
+    # pour les formules, il ne faut pas vider l'attribut "parent_context" trop
+    # tôt
+    for co in _detr_list_co(self, {}):
+        co.supprime(force=True)
+    self.set_icmd(1)
+    ier = self.codex.opsexe(self, 7)
+    return ier
+
 
 def build_detruire(self, d):
-   """Fonction op_init de DETRUIRE."""
-   # d est le g_context du jdc ou d'une macro
-   #message.debug(SUPERV, "id(d) : %s", id(d))
-   for co in _detr_list_co(self, d):
-      assert isinstance(co, ASSD), 'On attend un concept : %s (type=%s)' % (co, type(co))
-      nom = co.nom
-      #message.debug(SUPERV, "refcount_1(%s) = %d", nom, sys.getrefcount(co))
-      # traitement particulier pour les listes de concepts, on va mettre à None
-      # le terme de l'indice demandé dans la liste :
-      # nomconcept_i est supprimé, nomconcept[i]=None
-      i = nom.rfind('_')
-      if i > 0 and not nom.endswith('_'):
-         concept_racine = nom[:i]
-         if d.has_key(concept_racine) and type(d[concept_racine]) is list:
-            try:
-               num = int(nom[i+1:])
-               d[concept_racine][num] = None
-            except (ValueError, IndexError):
-               # cas : RESU_aaa ou (RESU_8 avec RESU[8] non initialisé)
-               pass
-      # pour tous les concepts :
-      if d.has_key(nom):
-         del d[nom]
-      if self.jdc.sds_dict.has_key(nom):
-         del self.jdc.sds_dict[nom]
-      # "suppression" du concept
-      co.supprime()
-      # On signale au parent que le concept n'existe plus après l'étape self
-      self.parent.delete_concept_after_etape(self, co)
-      # marque comme détruit == non executé
-      co.executed = 0
-
-
-def build_procedure(self,**args):
+    """Fonction op_init de DETRUIRE."""
+    # d est le g_context du jdc ou d'une macro
+    # message.debug(SUPERV, "id(d) : %s", id(d))
+    for co in _detr_list_co(self, d):
+        assert isinstance(
+            co, ASSD), 'On attend un concept : %s (type=%s)' % (co, type(co))
+        nom = co.nom
+        # message.debug(SUPERV, "refcount_1(%s) = %d", nom, sys.getrefcount(co))
+        # traitement particulier pour les listes de concepts, on va mettre à None
+        # le terme de l'indice demandé dans la liste :
+        # nomconcept_i est supprimé, nomconcept[i]=None
+        i = nom.rfind('_')
+        if i > 0 and not nom.endswith('_'):
+            concept_racine = nom[:i]
+            if d.has_key(concept_racine) and type(d[concept_racine]) is list:
+                try:
+                    num = int(nom[i + 1:])
+                    d[concept_racine][num] = None
+                except (ValueError, IndexError):
+                    # cas : RESU_aaa ou (RESU_8 avec RESU[8] non initialisé)
+                    pass
+        # pour tous les concepts :
+        if d.has_key(nom):
+            del d[nom]
+        if self.jdc.sds_dict.has_key(nom):
+            del self.jdc.sds_dict[nom]
+        # "suppression" du concept
+        co.supprime()
+        # On signale au parent que le concept n'existe plus après l'étape self
+        self.parent.delete_concept_after_etape(self, co)
+        # marque comme détruit == non executé
+        co.executed = 0
+
+
+def build_procedure(self, **args):
     """
     Fonction ops de la macro PROCEDURE appelée lors de la phase de Build
     """
-    ier=0
+    ier = 0
     # Pour presque toutes les commandes (sauf FORMULE et POURSUITE)
     # le numéro de la commande n est pas utile en phase de construction
     # On ne numérote pas une macro PROCEDURE (incrément=None)
     self.set_icmd(None)
-    #ier=self.codex.opsexe(self,3)
+    # ier=self.codex.opsexe(self,3)
     return ier
 
-def build_DEFI_FICHIER(self,**args):
+
+def build_DEFI_FICHIER(self, **args):
     """
     Fonction ops de la macro DEFI_FICHIER
     """
@@ -421,6 +467,7 @@ def build_DEFI_FICHIER(self,**args):
     ier = self.codex.opsexe(self, 26)
     return ier
 
+
 def build_formule(self, d):
     """Fonction ops de FORMULE."""
     NOM_PARA = self.etape['NOM_PARA'] or ''
@@ -430,24 +477,25 @@ def build_formule(self, d):
         NOM_PARA = [NOM_PARA, ]
     for para in NOM_PARA:
         if para.strip() != para:
-            raise Accas.AsException("nom de paramètre invalide (contient des blancs)" \
-               " : %s" % repr(para))
+            raise Accas.AsException("nom de paramètre invalide (contient des blancs)"
+                                    " : %s" % repr(para))
     if self.sd == None:
         return
-    if VALE != None :
+    if VALE != None:
         texte = ''.join(VALE.splitlines())
-    elif VALE_C != None :
+    elif VALE_C != None:
         texte = ''.join(VALE_C.splitlines())
     self.sd.setFormule(NOM_PARA, texte.strip())
 
+
 def build_gene_vari_alea(self, d):
     """Fonction ops de la macro GENE_VARI_ALEA."""
     from Utilitai.Utmess import UTMESS
     a = self.etape['BORNE_INF']
-    moyen = self.etape['VALE_MOY' ]
+    moyen = self.etape['VALE_MOY']
     TYPE = self.etape['TYPE']
     if self['INIT_ALEA'] is not None:
-        jump = self.etape['INIT_ALEA' ]
+        jump = self.etape['INIT_ALEA']
         self.iniran(jump)
     if TYPE == 'EXP_TRONQUEE':
         b = self.etape['BORNE_SUP']
@@ -464,44 +512,44 @@ def build_gene_vari_alea(self, d):
         test = 0.
         while abs((test - k) / k) > eps:
             test = k
-            k = 1. / (moyen - (a * exp(-a * k) - b * exp(-b * k)) / \
-                               (exp(-a * k) - exp(-b * k)))
+            k = 1. / (moyen - (a * exp(-a * k) - b * exp(-b * k)) /
+                     (exp(-a * k) - exp(-b * k)))
         # génération de la variable aléatoire
         alpha = exp(-a * k) - exp(-b * k)
         self.sd.valeur = -(log(exp(-a * k) - alpha * self.getran()[0])) / k
     elif TYPE == 'EXPONENTIELLE':
-       if moyen <= a:
-          UTMESS('F', 'PROBA0_4', valr=[moyen, a])
-       v = moyen - a
-       u = self.getran()[0]
-       x = -log(1 - u)
-       self.sd.valeur = a + v * x
+        if moyen <= a:
+            UTMESS('F', 'PROBA0_4', valr=[moyen, a])
+        v = moyen - a
+        u = self.getran()[0]
+        x = -log(1 - u)
+        self.sd.valeur = a + v * x
     elif TYPE == 'GAMMA':
-       delta = self.etape['COEF_VAR' ]
-       if moyen <= a:
-          UTMESS('F', 'PROBA0_4', valr=[moyen, a])
-       v = moyen - a
-       alpha = 1. / delta**2
-       if alpha <= 1.:
-          UTMESS('F', 'PROBA0_5')
-       gamma2 = alpha - 1.
-       gamm1 = 1. / gamma2
-       beta = sqrt(2. * alpha - 1.)
-       beta2 = 1. / beta**2
-       f0 = 0.5 + (1. / pi) * atan2(-gamma2 / beta, 1.)
-       c1 = 1. - f0
-       c2 = f0 - 0.5
-       vref = 0.
-       vv     = -1.
-       while -vv > vref:
-          u = self.getran()[0]
-          gamdev = beta * tan(pi * (u * c1 + c2)) + gamma2
-          unif = self.getran()[0]
-          if unif < 0.:
-             UTMESS('F', 'PROBA0_6')
-          vv = -log(unif)
-          vref = log(1 + beta2 * ((gamdev - gamma2)**2)) \
-               + gamma2 * log(gamdev * gamm1) - gamdev + gamma2
-       if vv <= 0.:
-          UTMESS('F', 'PROBA0_7')
-       self.sd.valeur = a + v * delta**2 * gamdev
+        delta = self.etape['COEF_VAR']
+        if moyen <= a:
+            UTMESS('F', 'PROBA0_4', valr=[moyen, a])
+        v = moyen - a
+        alpha = 1. / delta ** 2
+        if alpha <= 1.:
+            UTMESS('F', 'PROBA0_5')
+        gamma2 = alpha - 1.
+        gamm1 = 1. / gamma2
+        beta = sqrt(2. * alpha - 1.)
+        beta2 = 1. / beta ** 2
+        f0 = 0.5 + (1. / pi) * atan2(-gamma2 / beta, 1.)
+        c1 = 1. - f0
+        c2 = f0 - 0.5
+        vref = 0.
+        vv = -1.
+        while -vv > vref:
+            u = self.getran()[0]
+            gamdev = beta * tan(pi * (u * c1 + c2)) + gamma2
+            unif = self.getran()[0]
+            if unif < 0.:
+                UTMESS('F', 'PROBA0_6')
+            vv = -log(unif)
+            vref = log(1 + beta2 * ((gamdev - gamma2) ** 2)) \
+                + gamma2 * log(gamdev * gamm1) - gamdev + gamma2
+        if vv <= 0.:
+            UTMESS('F', 'PROBA0_7')
+        self.sd.valeur = a + v * delta ** 2 * gamdev