diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index 306e7fcf319054e8e42c656cb6b89e13511493c9..15e648458cf35697dcf8f9f7f2e5c4b845ee0462 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -290,6 +290,8 @@ Dans le fichier de configuration du module, ajouter la définition des listes d
 }
 ```
 
+**IMPORTANT** : les id doivent être de la forme `select_`_`unmotclesansespacenitirets`_
+
 #### si la liste n'est pas associée à un enum
  
 Une liste déroulante peut être associée à une **source**, qui détermine quels sont les choix possibles.
diff --git a/docs/en/calculators/structures/liste.md b/docs/en/calculators/structures/liste.md
index d52496ab7852d39ceb6d9295b091ef618b6c3b88..23a7ac23681a035b2365588b52b4732911125c05 100644
--- a/docs/en/calculators/structures/liste.md
+++ b/docs/en/calculators/structures/liste.md
@@ -2,21 +2,21 @@
 
 | Equation | Default discharge coefficient | Available in |
 |---------------------------|----------------:|-------------------------------|
-| [Weir / orifice Cemagref 88](./cem_88_d.md) | 0.4 | Parallel Structures |
-| [Weir / undershot gate Cemagref 88](./cem_88_v.md) | 0.6 | Parallel Structures |
-| [Cunge (1980)](./cunge_80.md) | 0.6 | Parallel Structures, Cross walls, Downwall |
-| [Free flow gate](./vanne_denoyee.md) | 0.6 | Parallel Structures |
-| [Submerged gate](./vanne_noyee.md) | 0.6 | Parallel Structures |
-| [Free flow weir](./seuil_denoye.md) | 0.4 | Parallel Structures, Free flow weir stage-discharge laws |
-| [Submerged weir](./seuil_noye.md) | 0.9 | Parallel Structures |
-| [Submerged slot (Larinier 1992)](./fente_noyee.md) | 0.75 | Parallel Structures, Cross walls, Downwall |
-| [Kindsvater-Carter and Villemonte](./kivi.md) | \(\alpha\)=0.4, \(\beta\)=0.001 | Parallel Structures |
-| [Triangular weir (Villemonte)](./dever_triang.md) | 1.36 | Parallel Structures, Free flow weir stage-discharge laws, Cross walls, Downwall |
+| [Broad-crested weir / Orifice (Cemagref-D)](./cem_88_d.md) | 0.4 | Parallel Structures |
+| [Broad-crested weir / sluice gate (Cemagref-V)](./cem_88_v.md) | 0.6 | Parallel Structures |
+| [Broad-crested weir / orifice (Cunge)](./cunge_80.md) | 0.6 | Parallel Structures, Cross walls, Downwall |
+| [Free flow sluice gate](./vanne_denoyee.md) | 0.6 | Parallel Structures |
+| [Submerged sluice gate](./vanne_noyee.md) | 0.6 | Parallel Structures |
+| [Free flow sharp-crested weir (Poleni)](./seuil_denoye.md) | 0.4 | Parallel Structures, Free flow weir stage-discharge laws |
+| [Deeply submerged sharp-crested weir (Rajaratnam)](./seuil_noye.md) | 0.9 | Parallel Structures |
+| [Submerged slot (Larinier)](./fente_noyee.md) | 0.75 | Parallel Structures, Cross walls, Downwall |
+| [Sharp-crested weir (Kindsvater-Carter + Villemonte)](./kivi.md) | \(\alpha\)=0.4, \(\beta\)=0.001 | Parallel Structures |
+| [Triangular weir sharp-crested (Villemonte) and broad-crested (Bos)](./dever_triang.md) | 1.36 | Parallel Structures, Free flow weir stage-discharge laws, Cross walls, Downwall |
 | [Truncated triangular weir (Villemonte)](./dever_triang_tronque.md) | 1.36 | Parallel Structures, Free flow weir stage-discharge laws, Cross walls, Downwall |
-| [Submerged orifice](./orifice_noye.md) | 0.7 | Parallel Structures, Cross walls, Downwall |
-| [Free orifice](./orifice_denoye.md) | 0.7 | Parallel Structures |
-| [Villemonte 1947](./villemonte_1947.md) | 0.4 | Parallel Structures, Cross walls, Downwall |
-| [Regulated notch (Villemonte 1957)](../pab/pab.md#the-downstream-partition) | 0.4 | Downwall |
-| [Regulated submerged slot (Larinier 1992)](../pab/pab.md#the-downstream-partition) | 0.75 | Downwall |
+| [Submerged orifice (Bernoulli)](./orifice_noye.md) | 0.7 | Parallel Structures, Cross walls, Downwall |
+| [Free flow orifice (Bernoulli)](./orifice_denoye.md) | 0.7 | Parallel Structures |
+| [Sharp-crested weir (Villemonte)](./villemonte_1947.md) | 0.4 | Parallel Structures, Cross walls, Downwall |
+| [Regulated notch (Villemonte)](../pab/pab.md#the-downstream-partition) | 0.4 | Downwall |
+| [Regulated submerged slot (Larinier)](../pab/pab.md#the-downstream-partition) | 0.75 | Downwall |
 
 Table: Stage-discharge equations list
diff --git a/docs/fr/calculators/structures/liste.md b/docs/fr/calculators/structures/liste.md
index b818193a943dd9e23d16047d7645ef76b67d7d44..cb79ed15970f5be677bb9c7e59ff81a9e0bea823 100644
--- a/docs/fr/calculators/structures/liste.md
+++ b/docs/fr/calculators/structures/liste.md
@@ -2,21 +2,21 @@
 
 | Équation | Coefficient de débit par défaut | Disponible dans |
 |---------------------------|----------------:|-------------------------------|
-| [Déversoir / orifice Cemagref 88](./cem_88_d.md) | 0.4 | Lois d'ouvrages |
-| [Déversoir / vanne de fond Cemagref 88](./cem_88_v.md) | 0.6 | Lois d'ouvrages |
-| [Cunge (1980)](./cunge_80.md) | 1 | Lois d'ouvrages, Cloisons, Cloison aval |
+| [Seuil épais / orifice (Cemagref-D)](./cem_88_d.md) | 0.4 | Lois d'ouvrages |
+| [Seuil épais / vanne de fond (Cemagref-V)](./cem_88_v.md) | 0.6 | Lois d'ouvrages |
+| [Seuil épais / orifice (Cunge)](./cunge_80.md) | 1 | Lois d'ouvrages, Cloisons, Cloison aval |
 | [Vanne dénoyée](./vanne_denoyee.md) | 0.6 | Lois d'ouvrages |
 | [Vanne noyée](./vanne_noyee.md) | 0.6 | Lois d'ouvrages |
-| [Seuil dénoyé](./seuil_denoye.md) | 0.4 | Lois d'ouvrages, Lois de déversoirs dénoyés |
-| [Seuil noyé](./seuil_noye.md) | 0.9 | Lois d'ouvrages |
-| [Fente noyée (Larinier 1992)](./fente_noyee.md) | 0.75 | Lois d'ouvrages, Cloisons, Cloison aval |
+| [Seuil mince dénoyé (Poleni)](./seuil_denoye.md) | 0.4 | Lois d'ouvrages, Lois de déversoirs dénoyés |
+| [Seuil mince noyé (Rajaratnam)](./seuil_noye.md) | 0.9 | Lois d'ouvrages |
+| [Fente noyée (Larinier)](./fente_noyee.md) | 0.75 | Lois d'ouvrages, Cloisons, Cloison aval |
 | [Kindsvater-Carter et Villemonte](./kivi.md) | \(\alpha\)=0.4, \(\beta\)=0.001 | Lois d'ouvrages |
-| [Déversoir triangulaire (Villemonte)](./dever_triang.md) | 1.36 | Lois d'ouvrages, Lois de déversoirs dénoyés, Cloisons, Cloison aval |
-| [Déversoir triangulaire tronqué (Villemonte)](./dever_triang_tronque.md) | 1.36 | Lois d'ouvrages, Lois de déversoirs dénoyés, Cloisons, Cloison aval |
-| [Orifice noyé](./orifice_noye.md) | 0.7 | Lois d'ouvrages, Cloisons, Cloison aval |
-| [Orifice dénoyé](./orifice_denoye.md) | 0.7 | Lois d'ouvrages |
-| [Villemonte 1947](./villemonte_1947.md) | 0.4 | Lois d'ouvrages, Cloisons, Cloison aval |
-| [Échancrure régulée (Villemonte 1957)](../pab/pab.md#la-cloison-aval) | 0.4 | Cloison aval |
-| [Fente noyée régulée (Larinier 1992)](../pab/pab.md#la-cloison-aval) | 0.75 | Cloison aval |
+| [Seuil triangulaire mince (Villemonte) et épais (Bos)](./dever_triang.md) | 1.36 | Lois d'ouvrages, Lois de déversoirs dénoyés, Cloisons, Cloison aval |
+| [Seuil triangulaire tronqué (Villemonte)](./dever_triang_tronque.md) | 1.36 | Lois d'ouvrages, Lois de déversoirs dénoyés, Cloisons, Cloison aval |
+| [Orifice noyé (Bernoulli)](./orifice_noye.md) | 0.7 | Lois d'ouvrages, Cloisons, Cloison aval |
+| [Orifice dénoyé (Bernoulli)](./orifice_denoye.md) | 0.7 | Lois d'ouvrages |
+| [Seuil mince (Villemonte)](./villemonte_1947.md) | 0.4 | Lois d'ouvrages, Cloisons, Cloison aval |
+| [Échancrure régulée (Villemonte)](../pab/pab.md#la-cloison-aval) | 0.4 | Cloison aval |
+| [Fente noyée régulée (Larinier)](../pab/pab.md#la-cloison-aval) | 0.75 | Cloison aval |
 
 Table: Liste des équations d'ouvrages
diff --git a/jalhyd_branch b/jalhyd_branch
index 39c03dc433d0c7cf64e390a53c9ba5966aad2fc1..7d5e368047604366794fd836686569b8373d9cfc 100644
--- a/jalhyd_branch
+++ b/jalhyd_branch
@@ -1 +1,2 @@
-220-loi-d-ouvrage-cunge80-mettre-le-coefficient-de-debit-par-defaut-a-1
+master
+
diff --git a/src/app/calculators/bief/en.json b/src/app/calculators/bief/en.json
index 772347ac1f48280ec7f13918b61819abcacc1835..30465b07a001799b439f37cbd77f79b5c55a469c 100644
--- a/src/app/calculators/bief/en.json
+++ b/src/app/calculators/bief/en.json
@@ -2,16 +2,16 @@
     "fs_water_line": "Type of water line",
     "select_regime": "Regime",
 
-    "select_regime_0": "Fluvial",
-    "select_regime_1": "Torrential",
+    "REGIME_0": "Fluvial",
+    "REGIME_1": "Torrential",
 
     "fs_section": "Type of section",
     "select_section": "Choice of section type",
 
-    "select_section_2": "Trapezoidal",
-    "select_section_1": "Rectangular",
-    "select_section_0": "Circular",
-    "select_section_3": "Parabolic",
+    "SECTION_2": "Trapezoidal",
+    "SECTION_1": "Rectangular",
+    "SECTION_0": "Circular",
+    "SECTION_3": "Parabolic",
 
     "LargeurFond": "Width at bottom",
     "Fruit": "Bank slope",
diff --git a/src/app/calculators/bief/fr.json b/src/app/calculators/bief/fr.json
index a8f1f5489da3ea14cd4348509ef742608b90787c..e2389fae1c101e88fafc12a363a007e4be48cd4b 100644
--- a/src/app/calculators/bief/fr.json
+++ b/src/app/calculators/bief/fr.json
@@ -2,16 +2,16 @@
     "fs_water_line": "Type de ligne d'eau",
     "select_regime": "Régime",
 
-    "select_regime_0": "Fluvial",
-    "select_regime_1": "Torrentiel",
+    "REGIME_0": "Fluvial",
+    "REGIME_1": "Torrentiel",
 
     "fs_section": "Type de section",
     "select_section": "Choix du type de section",
 
-    "select_section_2": "Trapézoïdale",
-    "select_section_1": "Rectangulaire",
-    "select_section_0": "Circulaire",
-    "select_section_3": "Parabolique",
+    "SECTION_2": "Trapézoïdale",
+    "SECTION_1": "Rectangulaire",
+    "SECTION_0": "Circulaire",
+    "SECTION_3": "Parabolique",
 
     "LargeurFond": "Largeur au fond",
     "Fruit": "Fruit des berges",
diff --git a/src/app/calculators/cloisons/en.json b/src/app/calculators/cloisons/en.json
index 2a41cd7cf134e047a9369211cb88e120b0f95bf6..04c177e8de12de77d697868a1924473b415a023d 100644
--- a/src/app/calculators/cloisons/en.json
+++ b/src/app/calculators/cloisons/en.json
@@ -6,26 +6,6 @@
     "PB": "Pool mean depth",
     "h1": "Head",
 
-    "select_structure_SeuilTriangulaire": "Triangular weir",
-    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
-    "select_structure_Orifice": "Orifice",
-    "select_structure_SeuilRectangulaire": "Rectangular weir",
-    "select_structure_VanneRectangulaire": "Rectangular gate",
-
-    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
-
-    "select_loidebit_Orifice_OrificeSubmerged": "Submerged orifice",
-    "select_loidebit_Orifice_OrificeFree": "Free orifice",
-
-    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
-    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1947",
-    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge (1980)",
-
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
-
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
-
 	"UNIT_PV": "W/m³",
 	"UNIT_Q": "m³/s",
     "UNIT_YMOY": "m",
diff --git a/src/app/calculators/cloisons/fr.json b/src/app/calculators/cloisons/fr.json
index bf30fb990e193a7ab9ee85903d74e85db7d313e8..ec7b047726bd0e962c3bbfd59578330922535922 100644
--- a/src/app/calculators/cloisons/fr.json
+++ b/src/app/calculators/cloisons/fr.json
@@ -3,26 +3,6 @@
     "P": "Pelle",
     "W": "Ouverture de vanne",
 
-    "select_structure_SeuilTriangulaire": "Seuil triangulaire",
-    "select_structure_SeuilTriangulaireTrunc": "Seuil triangulaire tronqué",
-    "select_structure_Orifice": "Orifice",
-    "select_structure_SeuilRectangulaire": "Seuil rectangulaire",
-    "select_structure_VanneRectangulaire": "Vanne rectangulaire",
-
-    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
-
-    "select_loidebit_Orifice_OrificeSubmerged": "Orifice noyé",
-    "select_loidebit_Orifice_OrificeFree": "Orifice dénoyé",
-
-    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Fente noyée (Larinier 1992)",
-    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1947",
-    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge (1980)",
-
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire mince (Villemonte)",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "Déversoir triangulaire épais (Bos)",
-
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué (Villemonte)",
-
 	"UNIT_PV": "W/m³",
 	"UNIT_Q": "m³/s",
     "UNIT_YMOY": "m",
diff --git a/src/app/calculators/courberemous/en.json b/src/app/calculators/courberemous/en.json
index cb5166fe0c34681d594ae8ce8f72eaa854b23064..f3d964669d796c959eb00a274e760dfd9728db58 100644
--- a/src/app/calculators/courberemous/en.json
+++ b/src/app/calculators/courberemous/en.json
@@ -2,10 +2,10 @@
     "fs_section": "Type of section",
     "select_section": "Choice of section type",
 
-    "select_section_2": "Trapezoidal",
-    "select_section_1": "Rectangular",
-    "select_section_0": "Circular",
-    "select_section_3": "Parabolic",
+    "SECTION_2": "Trapezoidal",
+    "SECTION_1": "Rectangular",
+    "SECTION_0": "Circular",
+    "SECTION_3": "Parabolic",
 
     "LargeurFond": "Width at bottom",
     "Fruit": "Bank slope",
@@ -43,27 +43,27 @@
     "UNIT_IMP": "N",
     "UNIT_TAU0": "Pa",
 
-    "select_resolution_0": "Integration by trapezoid",
-    "select_resolution_1": "Runge Kutta fourth order",
-    "select_resolution_2": "Explicit Euler",
+    "RESOLUTION_0": "Integration by trapezoid",
+    "RESOLUTION_1": "Runge Kutta fourth order",
+    "RESOLUTION_2": "Explicit Euler",
 
     "fs_target_data": "Data to compute",
     "select_target": "Choice of the data to compute",
-    "select_target_none": "None",
-    "select_target_Hs": "Head (m)",
-    "select_target_Hsc": "Critical head (m)",
-    "select_target_B": "Surface width (m)",
-    "select_target_P": "Wetted perimeter (m)",
-    "select_target_S": "Wetted area (m2)",
-    "select_target_R": "Hydraulic radius (m)",
-    "select_target_V": "Average speed (m/s)",
-    "select_target_Fr": "Froude number",
-    "select_target_Yc": "Critical depth (m)",
-    "select_target_Yn": "Normal depth (m)",
-    "select_target_Ycor": "Corresponding depth (m)",
-    "select_target_Ycon": "Conjugate depth (m)",
-    "select_target_J": "Head loss (m)",
-    "select_target_I-J": "Linear variation of specific head (m/m)",
-    "select_target_Imp": "Impulse (N)",
-    "select_target_Tau0": "Tractive force (Pa)"
+    "TARGET_none": "None",
+    "TARGET_Hs": "Head (m)",
+    "TARGET_Hsc": "Critical head (m)",
+    "TARGET_B": "Surface width (m)",
+    "TARGET_P": "Wetted perimeter (m)",
+    "TARGET_S": "Wetted area (m2)",
+    "TARGET_R": "Hydraulic radius (m)",
+    "TARGET_V": "Average speed (m/s)",
+    "TARGET_Fr": "Froude number",
+    "TARGET_Yc": "Critical depth (m)",
+    "TARGET_Yn": "Normal depth (m)",
+    "TARGET_Ycor": "Corresponding depth (m)",
+    "TARGET_Ycon": "Conjugate depth (m)",
+    "TARGET_J": "Head loss (m)",
+    "TARGET_I-J": "Linear variation of specific head (m/m)",
+    "TARGET_Imp": "Impulse (N)",
+    "TARGET_Tau0": "Tractive force (Pa)"
 }
\ No newline at end of file
diff --git a/src/app/calculators/courberemous/fr.json b/src/app/calculators/courberemous/fr.json
index 3d9bfd7ee8898c11806a7e2b600ae6f96d8b033c..3c84085311c6e37a869ee147787790da653b15d4 100644
--- a/src/app/calculators/courberemous/fr.json
+++ b/src/app/calculators/courberemous/fr.json
@@ -2,10 +2,10 @@
     "fs_section": "Type de section",
     "select_section": "Choix du type de section",
 
-    "select_section_2": "Trapézoïdale",
-    "select_section_1": "Rectangulaire",
-    "select_section_0": "Circulaire",
-    "select_section_3": "Parabolique",
+    "SECTION_2": "Trapézoïdale",
+    "SECTION_1": "Rectangulaire",
+    "SECTION_0": "Circulaire",
+    "SECTION_3": "Parabolique",
 
     "LargeurFond": "Largeur au fond",
     "Fruit": "Fruit des berges",
@@ -42,27 +42,27 @@
     "UNIT_IMP": "N",
     "UNIT_TAU0": "Pa",
 
-    "select_resolution_0": "Intégration par trapèzes",
-    "select_resolution_1": "Runge Kutta d'ordre 4",
-    "select_resolution_2": "Euler explicite",
+    "RESOLUTION_0": "Intégration par trapèzes",
+    "RESOLUTION_1": "Runge Kutta d'ordre 4",
+    "RESOLUTION_2": "Euler explicite",
 
     "fs_target_data": "Donnée à calculer",
     "select_target": "Choix de la donnée à calculer",
-    "select_target_none": "Aucune",
-    "select_target_Hs": "La charge (m)",
-    "select_target_Hsc": "La charge critique (m)",
-    "select_target_B": "La largeur au miroir (m)",
-    "select_target_P": "Le périmètre mouillé (m)",
-    "select_target_S": "La surface mouillée (m2)",
-    "select_target_R": "Le rayon hydraulique (m)",
-    "select_target_V": "La vitesse moyenne (m/s)",
-    "select_target_Fr": "Le Froude",
-    "select_target_Yc": "Le tirant d'eau critique (m)",
-    "select_target_Yn": "Le tirant d'eau normal (m)",
-    "select_target_Ycor": "Le tirant d'eau correspondant (m)",
-    "select_target_Ycon": "Le tirant d'eau conjugué (m)",
-    "select_target_J": "La perte de charge (m)",
-    "select_target_I-J": "La variation linéaire de l'énergie spécifique (m/m)",
-    "select_target_Imp": "L'impulsion (N)",
-    "select_target_Tau0": "La force tractrice (Pa)"
+    "TARGET_none": "Aucune",
+    "TARGET_Hs": "La charge (m)",
+    "TARGET_Hsc": "La charge critique (m)",
+    "TARGET_B": "La largeur au miroir (m)",
+    "TARGET_P": "Le périmètre mouillé (m)",
+    "TARGET_S": "La surface mouillée (m2)",
+    "TARGET_R": "Le rayon hydraulique (m)",
+    "TARGET_V": "La vitesse moyenne (m/s)",
+    "TARGET_Fr": "Le Froude",
+    "TARGET_Yc": "Le tirant d'eau critique (m)",
+    "TARGET_Yn": "Le tirant d'eau normal (m)",
+    "TARGET_Ycor": "Le tirant d'eau correspondant (m)",
+    "TARGET_Ycon": "Le tirant d'eau conjugué (m)",
+    "TARGET_J": "La perte de charge (m)",
+    "TARGET_I-J": "La variation linéaire de l'énergie spécifique (m/m)",
+    "TARGET_Imp": "L'impulsion (N)",
+    "TARGET_Tau0": "La force tractrice (Pa)"
 }
\ No newline at end of file
diff --git a/src/app/calculators/dever/en.json b/src/app/calculators/dever/en.json
index 3f6315e256439b80ca2eff760bb4a93a5ba518b8..4e82de4dd58b9d7081698655d69d81f7983df335 100644
--- a/src/app/calculators/dever/en.json
+++ b/src/app/calculators/dever/en.json
@@ -5,14 +5,6 @@
     "L": "Width of the weir",
     "Cd": "Discharge coefficient",
 
-    "select_structure_SeuilRectangulaire": "Rectangular weir",
-    "select_structure_SeuilTriangulaire": "Triangular weir",
-    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
-
-    "select_loidebit_SeuilRectangulaire_WeirFree": "Free flow rectangular weir",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Triangular weir (Villemonte)",
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
-
 	"UNIT_Q": "m³/s",
     "UNIT_EC": "m",
     "UNIT_V": "m/s"
diff --git a/src/app/calculators/dever/fr.json b/src/app/calculators/dever/fr.json
index a550e3b5e961bccdd8d66aa6204800861f871ad0..78cdc5ad68c7b9a5984218cc452647ad1978c0d4 100644
--- a/src/app/calculators/dever/fr.json
+++ b/src/app/calculators/dever/fr.json
@@ -5,14 +5,6 @@
     "L": "Largeur du déversoir",
     "Cd": "Coefficient de débit",
 
-    "select_structure_SeuilRectangulaire": "Déversoir rectangulaire",
-    "select_structure_SeuilTriangulaire": "Déversoir triangulaire",
-    "select_structure_SeuilTriangulaireTrunc": "Déversoir triangulaire tronqué",
-
-    "select_loidebit_SeuilRectangulaire_WeirFree": "Déversoir rectangulaire dénoyé",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire (Villemonte)",
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué (Villemonte)",
-
 	"UNIT_Q": "m³/s",
     "UNIT_EC": "m",
     "UNIT_V": "m/s"
diff --git a/src/app/calculators/grille/config.json b/src/app/calculators/grille/config.json
index c19b2bb123e368ec9c50826a4df578d1e72cff56..c6c10b5a2835e74bbb141886681065a941a46fa3 100644
--- a/src/app/calculators/grille/config.json
+++ b/src/app/calculators/grille/config.json
@@ -19,7 +19,7 @@
         "type": "fieldset",
         "fields": [
             {
-                "id": "select_grid_type",
+                "id": "select_gridtype",
                 "type": "select",
                 "property": "gridType",
                 "default": "Conventional",
@@ -46,7 +46,7 @@
         "type": "fieldset",
         "fields": [
             {
-                "id": "select_grid_profile",
+                "id": "select_gridprofile",
                 "type": "select",
                 "property": "gridProfile",
                 "default": "Rectangular",
@@ -91,7 +91,7 @@
     },
     {
         "type": "options",
-        "selectIds": [ "select_grid_type", "select_grid_profile" ],
+        "selectIds": [ "select_gridtype", "select_gridprofile" ],
         "help": "devalaison/grille.html",
         "resultsHelp": {
             "VAPDG": "devalaison/grille.html#vitesse-dapproche-moyenne-pour-le-debit-maximum-turbine-en-soustrayant-la-partie-superieure-eventuellement-obturee",
diff --git a/src/app/calculators/grille/en.json b/src/app/calculators/grille/en.json
index 0da9b3a88edccb16daafa9087bc4f0f77c3196d8..5b57793c079011e7055cfa75107ea1a8e1d60d7b 100644
--- a/src/app/calculators/grille/en.json
+++ b/src/app/calculators/grille/en.json
@@ -19,16 +19,16 @@
     "OEntH": "Effective obstruction due to spacers and transversal elements",
     "cIncl": "Average shape coefficient of spacers and transversal elements",
 
-    "select_grid_type": "Grid type",
-    "select_grid_profile": "Bars profile",
+    "select_gridtype": "Grid type",
+    "select_gridprofile": "Bars profile",
 
-    "select_grid_type_0": "Conventional",
-    "select_grid_type_1": "Oriented",
-    "select_grid_type_2": "Inclined",
+    "GRIDTYPE_0": "Conventional",
+    "GRIDTYPE_1": "Oriented",
+    "GRIDTYPE_2": "Inclined",
 
-    "select_grid_profile_0": "Rectangular",
-    "select_grid_profile_1": "Hydrodynamic",
-    "select_grid_profile_2": "Custom",
+    "GRIDPROFILE_0": "Rectangular",
+    "GRIDPROFILE_1": "Hydrodynamic",
+    "GRIDPROFILE_2": "Custom",
 
     "H": "Water height",
     "HG": "Grid  height",
diff --git a/src/app/calculators/grille/fr.json b/src/app/calculators/grille/fr.json
index c62ddaca80f1a0ddaf0d49d9af91a5fee3a67dfb..f575fc88ee6a158e36ecc0507abe9b8b6ed29c93 100644
--- a/src/app/calculators/grille/fr.json
+++ b/src/app/calculators/grille/fr.json
@@ -19,16 +19,16 @@
     "OEntH": "Obstruction effective due aux entretoises et éléments transversaux",
     "cIncl": "Coefficient de forme moyen des entretoises et éléments transversaux",
 
-    "select_grid_type": "Type de grille",
-    "select_grid_profile": "Profil des barreaux",
+    "select_gridtype": "Type de grille",
+    "select_gridprofile": "Profil des barreaux",
 
-    "select_grid_type_0": "Conventionnelle",
-    "select_grid_type_1": "Orientée",
-    "select_grid_type_2": "Inclinée",
+    "GRIDTYPE_0": "Conventionnelle",
+    "GRIDTYPE_1": "Orientée",
+    "GRIDTYPE_2": "Inclinée",
 
-    "select_grid_profile_0": "Rectangulaire",
-    "select_grid_profile_1": "Hydrodynamique",
-    "select_grid_profile_2": "Personnalisé",
+    "GRIDPROFILE_0": "Rectangulaire",
+    "GRIDPROFILE_1": "Hydrodynamique",
+    "GRIDPROFILE_2": "Personnalisé",
 
     "H": "Hauteur d'eau",
     "HG": "Hauteur de grille",
diff --git a/src/app/calculators/lechaptcalmon/en.json b/src/app/calculators/lechaptcalmon/en.json
index 4f54a2db54b68005c4e481d26f9cd370d754e7c1..0e0b0798c73c0110466290d20c5656645b20d698 100644
--- a/src/app/calculators/lechaptcalmon/en.json
+++ b/src/app/calculators/lechaptcalmon/en.json
@@ -1,16 +1,15 @@
 {
     "fs_materiau": "Type of material",
     "select_material": "Choice of material",
-    "select_material_0": "",
-    "select_material_1": "Unlined cast iron - Coarse concrete (corrosive water)",
-    "select_material_2": "Cast steel or uncoated - Coarse concrete (somewhat corrosive water)",
-    "select_material_3": "Cast steel or cement coating",
-    "select_material_4": "Cast iron or steel coating bitumen - Centrifuged concrete ",
-    "select_material_5": "Rolled steel - Smooth concrete",
-    "select_material_6": "Cast iron or steel coating centrifuged",
-    "select_material_7": "PVC - Polyethylene",
-    "select_material_8": "Hydraulically smooth pipe - 0.05 ≤ D ≤ 0.2",
-    "select_material_9": "Hydraulically smooth pipe - 0.25 ≤ D ≤ 1",
+    "MATERIAL_0": "Unlined cast iron - Coarse concrete (corrosive water)",
+    "MATERIAL_1": "Cast steel or uncoated - Coarse concrete (somewhat corrosive water)",
+    "MATERIAL_2": "Cast steel or cement coating",
+    "MATERIAL_3": "Cast iron or steel coating bitumen - Centrifuged concrete ",
+    "MATERIAL_4": "Rolled steel - Smooth concrete",
+    "MATERIAL_5": "Cast iron or steel coating centrifuged",
+    "MATERIAL_6": "PVC - Polyethylene",
+    "MATERIAL_7": "Hydraulically smooth pipe - 0.05 ≤ D ≤ 0.2",
+    "MATERIAL_8": "Hydraulically smooth pipe - 0.25 ≤ D ≤ 1",
     "L": "L",
     "M": "M",
     "N": "N",
diff --git a/src/app/calculators/lechaptcalmon/fr.json b/src/app/calculators/lechaptcalmon/fr.json
index 734557c79a01bf97b7e7814f5ae4b1d72632cafc..0ce375bc6bfb74389554e1b65d75ed100e5daa0a 100644
--- a/src/app/calculators/lechaptcalmon/fr.json
+++ b/src/app/calculators/lechaptcalmon/fr.json
@@ -1,16 +1,15 @@
 {
     "fs_materiau": "Type du matériau",
     "select_material": "Choix du matériau",
-    "select_material_0": "",
-    "select_material_1": "Fonte ou acier non revêtus - Béton grossier (eau corrosive)",
-    "select_material_2": "Fonte ou acier non revêtus - Béton grossier (eau peu corrosive)",
-    "select_material_3": "Fonte ou acier revêtement ciment",
-    "select_material_4": "Fonte ou acier revêtement bitume - Béton centrifugé",
-    "select_material_5": "Acier laminé - Béton lisse",
-    "select_material_6": "Fonte ou acier revêtement centrifugé",
-    "select_material_7": "PVC - Polyéthylène",
-    "select_material_8": "Tuyau hydrauliquement lisse - 0.05 ≤ D ≤ 0.2",
-    "select_material_9": "Tuyau hydrauliquement lisse - 0.25 ≤ D ≤ 1",
+    "MATERIAL_0": "Fonte ou acier non revêtus - Béton grossier (eau corrosive)",
+    "MATERIAL_1": "Fonte ou acier non revêtus - Béton grossier (eau peu corrosive)",
+    "MATERIAL_2": "Fonte ou acier revêtement ciment",
+    "MATERIAL_3": "Fonte ou acier revêtement bitume - Béton centrifugé",
+    "MATERIAL_4": "Acier laminé - Béton lisse",
+    "MATERIAL_5": "Fonte ou acier revêtement centrifugé",
+    "MATERIAL_6": "PVC - Polyéthylène",
+    "MATERIAL_7": "Tuyau hydrauliquement lisse - 0.05 ≤ D ≤ 0.2",
+    "MATERIAL_8": "Tuyau hydrauliquement lisse - 0.25 ≤ D ≤ 1",
     "L": "L",
     "M": "M",
     "N": "N",
diff --git a/src/app/calculators/macrorugocompound/config.json b/src/app/calculators/macrorugocompound/config.json
index 537212cd0c90a8c790895b331771e2d6c5984226..545f893452dde6be361c89b9ab5ec06d58dfd46c 100644
--- a/src/app/calculators/macrorugocompound/config.json
+++ b/src/app/calculators/macrorugocompound/config.json
@@ -33,7 +33,7 @@
         "type": "fieldset",
         "fields": [
             {
-                "id": "select_pass_type",
+                "id": "select_passtype",
                 "type": "select",
                 "property": "inclinedApron"
             },
@@ -61,7 +61,7 @@
     {
         "type": "options",
         "idCal": "Q",
-        "selectIds": [ "select_pass_type" ],
+        "selectIds": [ "select_passtype" ],
         "help": "pam/macrorugo_complexe.html"
     }
 ]
\ No newline at end of file
diff --git a/src/app/calculators/macrorugocompound/en.json b/src/app/calculators/macrorugocompound/en.json
index 683533dec944ce6792205bf4511cb75d5fb52e69..4c2a222131c5f7447775d72a2c872a718c1bc6e1 100644
--- a/src/app/calculators/macrorugocompound/en.json
+++ b/src/app/calculators/macrorugocompound/en.json
@@ -6,7 +6,7 @@
     "macrorugo_container": "Aprons",
     "fs_macrorugo": "Apron",
 
-    "select_pass_type": "Pass type",
+    "select_passtype": "Pass type",
     "If": "Slope",
     "Ks": "Bottom roughness",
     "C": "Block concentration",
@@ -21,8 +21,8 @@
     "Y": "Water depth",
     "xCenter": "Mid-apron abscissa",
 
-    "select_pass_type_0": "Multiple aprons",
-    "select_pass_type_1": "Inclined apron",
+    "PASSTYPE_0": "Multiple aprons",
+    "PASSTYPE_1": "Inclined apron",
 
     "UNIT_Q": "m³/s",
     "UNIT_PV": "W/m³",
diff --git a/src/app/calculators/macrorugocompound/fr.json b/src/app/calculators/macrorugocompound/fr.json
index 455b4aa008d2543bb323f1a74b1ee59ff7de9f19..d72e543e693597baa988550b2587bc853e5bb86d 100644
--- a/src/app/calculators/macrorugocompound/fr.json
+++ b/src/app/calculators/macrorugocompound/fr.json
@@ -6,7 +6,7 @@
     "macrorugo_container": "Radiers",
     "fs_macrorugo": "Radier",
 
-    "select_pass_type": "Type de passe",
+    "select_passtype": "Type de passe",
     "If": "Pente",
     "Ks": "Rugosité de fond",
     "C": "Concentration de blocs",
@@ -21,8 +21,8 @@
     "Y": "Profondeur",
     "xCenter": "Abscisse du milieu du radier",
 
-    "select_pass_type_0": "Radiers multiples",
-    "select_pass_type_1": "Radier incliné",
+    "PASSTYPE_0": "Radiers multiples",
+    "PASSTYPE_1": "Radier incliné",
 
     "UNIT_Q": "m³/s",
     "UNIT_PV": "W/m³",
diff --git a/src/app/calculators/parallelstructure/config.json b/src/app/calculators/parallelstructure/config.json
index 804ee1c9142522f75565cadc47423d90dec79721..9f3553940b5930db91ba79c00aab52cfcc2e2520 100644
--- a/src/app/calculators/parallelstructure/config.json
+++ b/src/app/calculators/parallelstructure/config.json
@@ -28,22 +28,22 @@
                 "property": "loiDebit",
                 "source": "device_loi_debit",
                 "help": {
-                    "SeuilRectangulaire_KIVI": "structures/kivi.html",
-                    "SeuilRectangulaire_WeirVillemonte": "structures/kivi.html",
-                    "SeuilRectangulaire_WeirCem88d": "structures/cem_88_d.html",
-                    "SeuilRectangulaire_WeirCem88v": "structures/cem_88_v.html",
-                    "SeuilRectangulaire_WeirCunge80": "structures/cunge_80.html",
-                    "VanneRectangulaire_GateCem88d": "structures/cem_88_d.html",
-                    "VanneRectangulaire_GateCem88v": "structures/cem_88_v.html",
-                    "VanneRectangulaire_GateCunge80": "structures/cunge_80.html",
-                    "Orifice_OrificeSubmerged": "structures/orifice_noye.html",
-                    "Orifice_OrificeFree": "structures/orifice_denoye.html",
-                    "SeuilRectangulaire_WeirSubmergedLarinier": "structures/fente_noyee.html",
-                    "SeuilRectangulaire_WeirSubmerged": "structures/seuil_noye.html",
-                    "SeuilRectangulaire_WeirFree": "structures/seuil_denoye.html",
-                    "SeuilTriangulaire_TriangularWeirFree": "structures/dever_triang.html",
-                    "SeuilTriangulaire_TriangularWeirBroad": "structures/dever_triang.html",
-                    "SeuilTriangulaireTrunc_TriangularTruncWeirFree": "structures/dever_triang_tronque.html"
+                    "KIVI": "structures/kivi.html",
+                    "WeirVillemonte": "structures/kivi.html",
+                    "WeirCem88d": "structures/cem_88_d.html",
+                    "WeirCem88v": "structures/cem_88_v.html",
+                    "WeirCunge80": "structures/cunge_80.html",
+                    "GateCem88d": "structures/cem_88_d.html",
+                    "GateCem88v": "structures/cem_88_v.html",
+                    "GateCunge80": "structures/cunge_80.html",
+                    "OrificeSubmerged": "structures/noye.html",
+                    "OrificeFree": "structures/denoye.html",
+                    "WeirSubmergedLarinier": "structures/fente_noyee.html",
+                    "WeirSubmerged": "structures/seuil_noye.html",
+                    "WeirFree": "structures/seuil_denoye.html",
+                    "TriangularWeirFree": "structures/dever_triang.html",
+                    "TriangularWeirBroad": "structures/dever_triang.html",
+                    "TriangularTruncWeirFree": "structures/dever_triang_tronque.html"
                 }
             },
             "S",
diff --git a/src/app/calculators/parallelstructure/en.json b/src/app/calculators/parallelstructure/en.json
index 9b4431705381ed425ee37be97281ca9c40386aa1..8d322cbd9c6bb8c4d421135439e37a465671312e 100644
--- a/src/app/calculators/parallelstructure/en.json
+++ b/src/app/calculators/parallelstructure/en.json
@@ -2,34 +2,5 @@
     "Q": "Total Flow",
     "W": "Gate opening",
 
-    "select_structure_Orifice": "Orifice",
-    "select_structure_VanneRectangulaire": "Rectangular gate",
-    "select_structure_SeuilRectangulaire": "Rectangular weir",
-    "select_structure_SeuilTriangulaire": "Triangular weir",
-    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
-
-    "select_loidebit_Orifice_OrificeSubmerged": "Submerged orifice",
-    "select_loidebit_Orifice_OrificeFree": "Free orifice",
-
-    "select_loidebit_VanneRectangulaire_GateCem88d": "Weir/Orifice Cemagref 88",
-    "select_loidebit_VanneRectangulaire_GateCem88v": "Weir/Undershot gate Cemagref 88",
-    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
-    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Free flow gate",
-    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Submerged gate",
-
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
-
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
-
-    "select_loidebit_SeuilRectangulaire_WeirCem88d": "Weir/Orifice Cemagref 88",
-    "select_loidebit_SeuilRectangulaire_WeirCem88v": "Weir/Undershot gate Cemagref 88",
-    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
-    "select_loidebit_SeuilRectangulaire_WeirSubmerged": "Submerged weir",
-    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1957",
-    "select_loidebit_SeuilRectangulaire_WeirFree": "Free flow weir",
-    "select_loidebit_SeuilRectangulaire_KIVI": "Kindsvater-Carter and Villemonte",
-    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge (1980)",
-
 	"UNIT_Q": "m³/s"
 }
diff --git a/src/app/calculators/parallelstructure/fr.json b/src/app/calculators/parallelstructure/fr.json
index e4cf67bfbf17624610fe95049186489bbba52f0d..f3332bbb2ea9c3dfd894468eb83651cfd58ce582 100644
--- a/src/app/calculators/parallelstructure/fr.json
+++ b/src/app/calculators/parallelstructure/fr.json
@@ -2,34 +2,5 @@
     "Q": "Débit total",
     "W": "Ouverture de vanne",
 
-    "select_structure_Orifice": "Orifice",
-    "select_structure_SeuilRectangulaire": "Seuil rectangulaire",
-    "select_structure_SeuilTriangulaire": "Seuil triangulaire",
-    "select_structure_SeuilTriangulaireTrunc": "Seuil triangulaire tronqué",
-    "select_structure_VanneRectangulaire": "Vanne rectangulaire",
-
-    "select_loidebit_Orifice_OrificeSubmerged": "Orifice noyé",
-    "select_loidebit_Orifice_OrificeFree": "Orifice dénoyé",
-
-    "select_loidebit_VanneRectangulaire_GateCem88d": "Déversoir/Orifice Cemagref 88",
-    "select_loidebit_VanneRectangulaire_GateCem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
-    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Vanne dénoyée",
-    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Vanne noyée",
-
-    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire mince (Villemonte)",
-    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "Déversoir triangulaire épais (Bos)",
-
-    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué (Villemonte)",
-
-    "select_loidebit_SeuilRectangulaire_WeirCem88d": "Déversoir/Orifice Cemagref 88",
-    "select_loidebit_SeuilRectangulaire_WeirCem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Fente noyée (Larinier 1992)",
-    "select_loidebit_SeuilRectangulaire_WeirSubmerged": "Seuil noyé",
-    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1957",
-    "select_loidebit_SeuilRectangulaire_WeirFree": "Seuil dénoyé",
-    "select_loidebit_SeuilRectangulaire_KIVI": "Kindsvater-Carter et Villemonte",
-    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge (1980)",
-
 	"UNIT_Q": "m³/s"
 }
diff --git a/src/app/calculators/regimeuniforme/en.json b/src/app/calculators/regimeuniforme/en.json
index 9ecd418c4909d5fdbe4f515bbe8b2d836c52c45e..88f2143d81e9e05fd796f32df2ba10e9d8897c2a 100644
--- a/src/app/calculators/regimeuniforme/en.json
+++ b/src/app/calculators/regimeuniforme/en.json
@@ -2,10 +2,10 @@
     "fs_section": "Type of section",
     "select_section": "Choice of section type",
 
-    "select_section_2": "Trapezoidal",
-    "select_section_1": "Rectangular",
-    "select_section_0": "Circular",
-    "select_section_3": "Parabolic",
+    "SECTION_2": "Trapezoidal",
+    "SECTION_1": "Rectangular",
+    "SECTION_0": "Circular",
+    "SECTION_3": "Parabolic",
 
     "LargeurFond": "Width at bottom",
     "Fruit": "Bank slope",
diff --git a/src/app/calculators/regimeuniforme/fr.json b/src/app/calculators/regimeuniforme/fr.json
index 297cf402a8d978cad4e248dd412a6cb2791400e6..84787f04e74b6b8c1ba9ee9ce3053dc47f3cad14 100644
--- a/src/app/calculators/regimeuniforme/fr.json
+++ b/src/app/calculators/regimeuniforme/fr.json
@@ -2,10 +2,10 @@
     "fs_section": "Type de section",
     "select_section": "Choix du type de section",
 
-    "select_section_2": "Trapézoïdale",
-    "select_section_1": "Rectangulaire",
-    "select_section_0": "Circulaire",
-    "select_section_3": "Parabolique",
+    "SECTION_2": "Trapézoïdale",
+    "SECTION_1": "Rectangulaire",
+    "SECTION_0": "Circulaire",
+    "SECTION_3": "Parabolique",
 
     "LargeurFond": "Largeur au fond",
     "Fruit": "Fruit des berges",
diff --git a/src/app/calculators/sectionparametree/en.json b/src/app/calculators/sectionparametree/en.json
index 29699a3a182172df3639c08693104b739e84453d..8e5b6226c30dfca094878fb18041a7d038321406 100644
--- a/src/app/calculators/sectionparametree/en.json
+++ b/src/app/calculators/sectionparametree/en.json
@@ -2,10 +2,10 @@
     "fs_section": "Type of section",
     "select_section": "Choice of section type",
 
-    "select_section_2": "Trapezoidal",
-    "select_section_1": "Rectangular",
-    "select_section_0": "Circular",
-    "select_section_3": "Parabolic",
+    "SECTION_2": "Trapezoidal",
+    "SECTION_1": "Rectangular",
+    "SECTION_0": "Circular",
+    "SECTION_3": "Parabolic",
 
     "LargeurFond": "Width at bottom",
     "Fruit": "Bank slope",
diff --git a/src/app/calculators/sectionparametree/fr.json b/src/app/calculators/sectionparametree/fr.json
index 12e0163632b0951d44b779a185526a0979f2c4f3..2615fd823301a458f6c5fdaa07d80889c2d22b9d 100644
--- a/src/app/calculators/sectionparametree/fr.json
+++ b/src/app/calculators/sectionparametree/fr.json
@@ -2,10 +2,10 @@
     "fs_section": "Type de section",
     "select_section": "Choix du type de section",
 
-    "select_section_2": "Trapézoïdale",
-    "select_section_1": "Rectangulaire",
-    "select_section_0": "Circulaire",
-    "select_section_3": "Parabolique",
+    "SECTION_2": "Trapézoïdale",
+    "SECTION_1": "Rectangulaire",
+    "SECTION_0": "Circulaire",
+    "SECTION_3": "Parabolique",
 
     "LargeurFond": "Largeur au fond",
     "Fruit": "Fruit des berges",
diff --git a/src/app/calculators/spp/config.json b/src/app/calculators/spp/config.json
index 1a20f3cf15e242a781d2d3a06713eaf5cfa9937e..04a567ebbe34cce6e982fa107870ac539b5aec4c 100644
--- a/src/app/calculators/spp/config.json
+++ b/src/app/calculators/spp/config.json
@@ -4,7 +4,7 @@
         "type": "fieldset",
         "fields": [
             {
-                "id": "select_spp_operation",
+                "id": "select_sppoperation",
                 "type": "select",
                 "property": "sppOperation",
                 "default": "SUM"
@@ -32,7 +32,7 @@
     {
         "type": "options",
         "idCal": "Y",
-        "selectIds": [ "select_spp_operation" ],
+        "selectIds": [ "select_sppoperation" ],
         "_help": "util/spp.html"
     }
 ]
\ No newline at end of file
diff --git a/src/app/calculators/spp/en.json b/src/app/calculators/spp/en.json
index cbc4a10f3562024223f4537006b243e6b316b3ec..faa569be485addfc746f3128fd709fb6aec4e252 100644
--- a/src/app/calculators/spp/en.json
+++ b/src/app/calculators/spp/en.json
@@ -1,9 +1,9 @@
 {
     "fs_spp": "Parameters",
 
-    "select_spp_operation": "Operation",
-    "select_spp_operation_0": "Sum",
-    "select_spp_operation_1": "Product",
+    "select_sppoperation": "Operation",
+    "SPPOPERATION_0": "Sum",
+    "SPPOPERATION_1": "Product",
 
     "Y": "Y",
 
diff --git a/src/app/calculators/spp/fr.json b/src/app/calculators/spp/fr.json
index dd2ae4c5b2f68fead14d3e1e64e0ec221cdd1237..f4de7fb40a80758a0acea18c589a56a87bf9edff 100644
--- a/src/app/calculators/spp/fr.json
+++ b/src/app/calculators/spp/fr.json
@@ -1,9 +1,9 @@
 {
     "fs_spp": "Paramètres",
 
-    "select_spp_operation": "Opération",
-    "select_spp_operation_0": "Somme",
-    "select_spp_operation_1": "Produit",
+    "select_sppoperation": "Opération",
+    "SPPOPERATION_0": "Somme",
+    "SPPOPERATION_1": "Produit",
 
     "Y": "Y",
 
diff --git a/src/app/calculators/trigo/en.json b/src/app/calculators/trigo/en.json
index 9208d6dcaed2d4670e24fe0729678c00fac881dc..90e4f849eb92cc299d4c622e35c27b5c503044c0 100644
--- a/src/app/calculators/trigo/en.json
+++ b/src/app/calculators/trigo/en.json
@@ -2,16 +2,16 @@
     "fs_trigo": "Trigonometric parameters",
 
     "select_operation": "Operation",
-    "select_operation_0": "cos",
-    "select_operation_1": "sin",
-    "select_operation_2": "tan",
-    "select_operation_3": "cosh",
-    "select_operation_4": "sinh",
-    "select_operation_5": "tanh",
+    "OPERATION_0": "cos",
+    "OPERATION_1": "sin",
+    "OPERATION_2": "tan",
+    "OPERATION_3": "cosh",
+    "OPERATION_4": "sinh",
+    "OPERATION_5": "tanh",
 
     "select_unit": "Unit",
-    "select_unit_0": "Degrees",
-    "select_unit_1": "Radians",
+    "UNIT_0": "Degrees",
+    "UNIT_1": "Radians",
 
     "fs_params": "Equation parameters",
 
diff --git a/src/app/calculators/trigo/fr.json b/src/app/calculators/trigo/fr.json
index 15c5a8a4eaaeb08f0ba37d9cc332e6e2c8a4b52d..2135546caa42d5b026125a2fac09630fb124c117 100644
--- a/src/app/calculators/trigo/fr.json
+++ b/src/app/calculators/trigo/fr.json
@@ -2,16 +2,16 @@
     "fs_trigo": "Paramètres trigonométriques",
 
     "select_operation": "Opération",
-    "select_operation_0": "cos",
-    "select_operation_1": "sin",
-    "select_operation_2": "tan",
-    "select_operation_3": "cosh",
-    "select_operation_4": "sinh",
-    "select_operation_5": "tanh",
+    "OPERATION_0": "cos",
+    "OPERATION_1": "sin",
+    "OPERATION_2": "tan",
+    "OPERATION_3": "cosh",
+    "OPERATION_4": "sinh",
+    "OPERATION_5": "tanh",
 
     "select_unit": "Unité",
-    "select_unit_0": "Degrés",
-    "select_unit_1": "Radians",
+    "UNIT_0": "Degrés",
+    "UNIT_1": "Radians",
 
     "fs_params": "Paramètres de l'équation",
 
diff --git a/src/app/components/pab-table/pab-table.component.ts b/src/app/components/pab-table/pab-table.component.ts
index a73cac1dd232653f79e953b51306026c5f001fc7..286cf39b140bc0ba1082c9a5331eaf0d4177a204 100644
--- a/src/app/components/pab-table/pab-table.component.ts
+++ b/src/app/components/pab-table/pab-table.component.ts
@@ -1,5 +1,7 @@
 import { Component, Input, Output, EventEmitter, OnInit, AfterViewInit } from "@angular/core";
 
+import { LoiDebit } from "jalhyd";
+
 import { MatDialog } from "@angular/material/dialog";
 
 import {
@@ -527,7 +529,7 @@ export class PabTableComponent implements AfterViewInit, OnInit {
             // admissible LoiDebit
             const loisCloisons = cloison.getLoisAdmissiblesArray().map(l => { // @TODO move up ? (same for all cloisons)
                 return {
-                    label: this.i18nService.localizeLoiDebit(l),
+                    label: this.localizeLoiDebit(l),
                     value: l
                 };
             });
@@ -662,7 +664,7 @@ export class PabTableComponent implements AfterViewInit, OnInit {
         // admissible LoiDebit
         const loisAval = this.model.downWall.getLoisAdmissiblesArray().map(l => {
             return {
-                label: this.i18nService.localizeLoiDebit(l),
+                label: this.localizeLoiDebit(l),
                 value: l
             };
         });
@@ -761,6 +763,13 @@ export class PabTableComponent implements AfterViewInit, OnInit {
         this.updateValidity();
     }
 
+    /**
+     * Finds the localized title for a LoiDebit item
+     */
+    private localizeLoiDebit(l: LoiDebit) {
+        return this.i18nService.localizeText("INFO_PAB_LOIDEBIT_" + LoiDebit[l].toUpperCase());
+    }
+
     private findMaxNumberOfDevices(): number {
         let maxNbDevices = 1;
         for (const w of this.model.children) {
diff --git a/src/app/formulaire/elements/formulaire-element.ts b/src/app/formulaire/elements/formulaire-element.ts
index 19b0d58276670c7833b9c6a8129c76af7d3538c5..ae565987e01e88268b738794de0e47c727d8fffc 100644
--- a/src/app/formulaire/elements/formulaire-element.ts
+++ b/src/app/formulaire/elements/formulaire-element.ts
@@ -75,12 +75,7 @@ export abstract class FormulaireElement extends FormulaireNode {
         if (!key) {
             key = this._confId;
         }
-        if (loc[key] !== undefined) {
-            this._label = this.intlService.localizeText(key, loc);
-        } else {
-            // Recherche du code dans locale/message.xx.json
-            this._label = this.intlService.localizeText("INFO_LIB_" + key.toLocaleUpperCase());
-        }
+        this._label = this.intlService.localizeText(key, loc);
         for (const f of this.getKids()) {
             f.updateLocalisation(loc);
         }
diff --git a/src/app/formulaire/elements/pab-table.ts b/src/app/formulaire/elements/pab-table.ts
index aea39c56e070c4123365d0e40345562572ac0dfd..3601cf19b5ee2e7a4e6569ce6f6b2551e9122ed8 100644
--- a/src/app/formulaire/elements/pab-table.ts
+++ b/src/app/formulaire/elements/pab-table.ts
@@ -12,10 +12,6 @@ import { FormulairePab } from "../definition/form-pab";
  */
 export class PabTable extends FormulaireElement {
 
-    constructor(parent: FormulaireNode) {
-        super(parent);
-    }
-
     public parseConfig(json: {}) {
         this._confId = json["id"];
     }
diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts
index d92d48f46e9517e0227398100f0f1e6c8a9578c4..220fc7e2d473621b7dfd91742a9751b2732e6df9 100644
--- a/src/app/formulaire/elements/select-field.ts
+++ b/src/app/formulaire/elements/select-field.ts
@@ -128,7 +128,8 @@ export class SelectField extends Field {
         for (const e of this._entries) {
             // some Select fields already have a translated label at this time; translate others
             if (e.label === undefined) {
-                e.label = ServiceFactory.instance.i18nService.localizeText(e.id, loc);
+                const aId = e.id.split("_");
+                e.label = ServiceFactory.instance.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`, loc);
             }
         }
     }
@@ -195,7 +196,7 @@ export class SelectField extends Field {
                 const la = (nub as ParallelStructure).getLoisAdmissibles();
                 const stName = StructureType[cst];
                 for (const ld of la[stName]) {
-                    const e: SelectEntry = new SelectEntry(this._entriesBaseId + stName + "_" + LoiDebit[ld], ld);
+                    const e: SelectEntry = new SelectEntry(this._entriesBaseId + LoiDebit[ld], ld);
                     this.addEntry(e);
                 }
                 break;
diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts
index c8e35a07e64775931f34bb29996cd8d1b7f1d723..8cdb16d87e44b3b127f9292c98741dd495e152c2 100644
--- a/src/app/services/internationalisation.service.ts
+++ b/src/app/services/internationalisation.service.ts
@@ -1,6 +1,6 @@
 import { Injectable, isDevMode } from "@angular/core";
 
-import { Message, MessageCode, Observable, Observer, LoiDebit, Nub } from "jalhyd";
+import { Message, MessageCode, Observable, Observer, Nub } from "jalhyd";
 
 import { StringMap } from "../stringmap";
 import { ApplicationSetupService } from "./app-setup.service";
@@ -113,37 +113,24 @@ export class I18nService extends Observable implements Observer {
      * @param textKey id du texte (ex: "ERROR_PARAM_NULL")
      */
     public localizeText(textKey: string, msg?: StringMap) {
-        if (isDevMode()) {
-            // expose missing translations
-            if (msg) {
-                if (msg[textKey] === undefined) {
-                    return `*** message not found: ${textKey} ***`;
-                }
-                return msg[textKey];
-            } else {
-                if (! this._Messages) {
-                    return `*** messages not loaded: ${this._currentLanguage} ***`;
-                }
-                if (this._Messages[textKey] === undefined) {
-                    return `*** message not found: ${textKey} ***`;
-                }
-                return this._Messages[textKey];
-            }
+        const messages = msg || this._Messages;
+        if (! messages) {
+            return `*** messages not loaded: ${this._currentLanguage} ***`;
+        }
+        if (messages[textKey] !== undefined) {
+            return messages[textKey];
         } else {
-            const messages = msg || this._Messages;
-            if (! messages) {
-                return `*** messages not loaded: ${this._currentLanguage} ***`;
+            // try general message
+            if(msg !== undefined && this._Messages["INFO_LIB_"+textKey.toUpperCase()] !== undefined) {
+                return this._Messages["INFO_LIB_"+textKey.toUpperCase()];
             }
-            if (messages[textKey] === undefined) {
+            if (!isDevMode()) {
                 // try fallback language before giving up
-                if (this._fallbackMessages[textKey] === undefined) {
-                    return `*** message not found: ${textKey} ***`;
-                } else {
+                if (this._fallbackMessages[textKey] !== undefined) {
                     return this._fallbackMessages[textKey];
                 }
-            } else {
-                return messages[textKey];
             }
+            return `*** message not found: ${textKey} ***`;
         }
     }
 
@@ -171,13 +158,6 @@ export class I18nService extends Observable implements Observer {
         return m;
     }
 
-    /**
-     * Finds the localized title for a LoiDebit item
-     */
-    public localizeLoiDebit(l: LoiDebit) {
-        return this.localizeText("INFO_LOIDEBIT_" + LoiDebit[l]);
-    }
-
     private replaceAll(str: string, find: string, replace: string) {
         return str.replace(new RegExp(find, "g"), replace);
     }
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 7fb9569d91eef3e7edd1a49288a21c9ac0daf6b9..45b8d3ba29cc05763a956a034c327a8335c0aff1 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -213,7 +213,6 @@
     "INFO_LIB_BB": "Pool width",
     "INFO_LIB_BETA": "Beta coefficient",
     "INFO_LIB_BT": "Half opening of the triangle",
-    "INFO_LIB_CD": "Discharge coefficient",
     "INFO_LIB_CDGR": "Discharge coefficient gate",
     "INFO_LIB_CDCUNGE": "Discharge coefficient",
     "INFO_LIB_CDWR": "Discharge coefficient weir",
@@ -244,6 +243,25 @@
     "INFO_LIB_J": "Head loss",
     "INFO_LIB_L": "Weir width",
     "INFO_LIB_LB": "Pool length",
+    "INFO_LIB_LOIDEBIT_KIVI": "Sharp-crested weir (Kindsvater-Carter + Villemonte)",
+    "INFO_LIB_LOIDEBIT_WEIRSUBMERGEDLARINIER": "Submerged slot (Larinier)",
+    "INFO_LIB_LOIDEBIT_ORIFICESUBMERGED": "Submerged orifice (Bernoulli)",
+    "INFO_LIB_LOIDEBIT_ORIFICEFREE": "Free flow orifice (Bernoulli)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARWEIRBROAD": "Broad-crested weir (Bos)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARWEIRFREE": "Sharp-crested weir (Villemonte)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARTRUNCWEIRFREE": "Sharp-crested weir (Villemonte)",
+    "INFO_LIB_LOIDEBIT_GATECEM88D": "Broad-crested weir / Orifice (Cemagref)",
+    "INFO_LIB_LOIDEBIT_GATECEM88V": "Broad-crested weir / sluice gate (Cemagref)",
+    "INFO_LIB_LOIDEBIT_WEIRCEM88D": "Broad-crested weir (Cemagref-D)",
+    "INFO_LIB_LOIDEBIT_WEIRCEM88V": "Broad-crested weir (Cemagref-V)",
+    "INFO_LIB_LOIDEBIT_CUNGE80": "Broad-crested weir / orifice (Cunge)",
+    "INFO_LIB_LOIDEBIT_WEIRCUNGE80": "Broad-crested weir (Cunge)",
+    "INFO_LIB_LOIDEBIT_GATECUNGE80": "Broad-crested weir / orifice (Cunge)",
+    "INFO_LIB_LOIDEBIT_RECTANGULARORIFICEFREE": "Free flow sluice gate",
+    "INFO_LIB_LOIDEBIT_RECTANGULARORIFICESUBMERGED": "Submerged sluice gate",
+    "INFO_LIB_LOIDEBIT_WEIRFREE": "Free flow sharp-crested weir (Poleni)",
+    "INFO_LIB_LOIDEBIT_WEIRSUBMERGED": "Deeply submerged sharp-crested weir (Rajaratnam)",
+    "INFO_LIB_LOIDEBIT_WEIRVILLEMONTE": "Sharp-crested weir (Villemonte)",
     "INFO_LIB_Y": "Water line",
     "INFO_LIB_MINZDV": "Minimal crest elevation",
     "INFO_LIB_MAXZDV": "Maximal crest elevation",
@@ -265,14 +283,13 @@
     "INFO_LIB_RADIER_N_COURT": "A",
     "INFO_LIB_S": "Orifice area",
     "INFO_LIB_SELECT_LOIDEBIT": "Stage-discharge law",
-    "INFO_LIB_SELECT_LOIDEBIT1_KIVI": "Kindsvater-Carter and Villemonte",
-    "INFO_LIB_SELECT_LOIDEBIT1": "Stage-discharge law",
-    "INFO_LIB_SELECT_LOIDEBIT2": "Stage-discharge law",
-    "INFO_LIB_SELECT_LOIDEBIT3": "Stage-discharge law",
-    "INFO_LIB_SELECT_LOIDEBIT4": "Stage-discharge law",
-    "INFO_LIB_SELECT_STRUCTURE_SEUIL_RECT": "Rectangular weir",
     "INFO_LIB_SELECT_STRUCTURE": "Device",
     "INFO_LIB_STRUCT_CONTAINER": "Devices",
+    "INFO_LIB_STRUCTURE_ORIFICE": "Orifice",
+    "INFO_LIB_STRUCTURE_SEUILRECTANGULAIRE": "Rectangular weir",
+    "INFO_LIB_STRUCTURE_SEUILTRIANGULAIRE": "Triangular weir",
+    "INFO_LIB_STRUCTURE_SEUILTRIANGULAIRETRUNC": "Truncated triangular weir",
+    "INFO_LIB_STRUCTURE_VANNERECTANGULAIRE": "Rectangular gate",
     "INFO_LIB_TAU0": "Tractive force",
     "INFO_LIB_TOR": "Supercritical water line",
     "INFO_LIB_TOTAL": "Total",
@@ -303,26 +320,6 @@
     "INFO_LINKED_VALUE_RESULT": "%s (%s)",
     "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)",
     "INFO_LINKED_VALUE_SECTION": "%s (%s, section)",
-    "INFO_LOIDEBIT_KIVI": "Kindsvater-Carter and Villemonte",
-    "INFO_LOIDEBIT_WeirSubmergedLarinier": "Submerged slot (Larinier)",
-    "INFO_LOIDEBIT_OrificeSubmerged": "Submerged orifice",
-    "INFO_LOIDEBIT_OrificeFree": "Free orifice",
-    "INFO_LOIDEBIT_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
-    "INFO_LOIDEBIT_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
-    "INFO_LOIDEBIT_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
-    "INFO_LOIDEBIT_GateCem88d": "Weir/Orifice Cemagref 88",
-    "INFO_LOIDEBIT_GateCem88v": "Weir/Undershot gate Cemagref 88",
-    "INFO_LOIDEBIT_WeirCem88d": "Weir/Orifice Cemagref 88",
-    "INFO_LOIDEBIT_WeirCem88v": "Weir/Undershot gate Cemagref 88",
-    "INFO_LOIDEBIT_Cunge80": "Cunge (1980)",
-    "INFO_LOIDEBIT_WeirCunge80": "Broad weir / orifice (Cunge)",
-    "INFO_LOIDEBIT_GateCunge80": "Broad weir (Cunge)",
-    "INFO_LOIDEBIT_RectangularOrificeFree": "Free flow gate",
-    "INFO_LOIDEBIT_RectangularOrificeSubmerged": "Submerged gate",
-    "INFO_LOIDEBIT_VanLevLarinier": "Regulated submerged slot (Larinier)",
-    "INFO_LOIDEBIT_VanLevVillemonte": "Regulated notch (Villemonte)",
-    "INFO_LOIDEBIT_WeirFree": "Free flow weir",
-    "INFO_LOIDEBIT_WeirVillemonte": "Notch (Villemonte)",
     "INFO_MACRORUGO_TITRE_COURT": "Rock-ramp",
     "INFO_MACRORUGO_TITRE": "Rock-ramp fishpasses",
     "INFO_MENU_DIAGRAM_TITLE": "Modules diagram",
@@ -366,6 +363,16 @@
     "INFO_PAB_HEADER_PARAMETERS": "Parameters",
     "INFO_PAB_HEADER_VALUES": "Values",
     "INFO_PAB_CLOISON_OUVRAGE_N": "Wall : device #%s",
+    "INFO_PAB_LOIDEBIT_WEIRSUBMERGEDLARINIER": "Submerged slot (Larinier)",
+    "INFO_PAB_LOIDEBIT_ORIFICESUBMERGED": "Submerged orifice (Bernoulli)",
+    "INFO_PAB_LOIDEBIT_TRIANGULARWEIRBROAD": "V-notch broad-crested weir (Bos)",
+    "INFO_PAB_LOIDEBIT_TRIANGULARWEIRFREE": "V-notch sharp-crested weir (Villemonte)",
+    "INFO_PAB_LOIDEBIT_TRIANGULARTRUNCWEIRFREE": "Truncated triangular weir (Villemonte)",
+    "INFO_PAB_LOIDEBIT_WEIRCUNGE80": "Broad weir / orifice (Cunge)",
+    "INFO_PAB_LOIDEBIT_GATECUNGE80": "Broad weir (Cunge)",
+    "INFO_PAB_LOIDEBIT_VANLEVLARINIER": "Regulated submerged slot (Larinier)",
+    "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Regulated notch (Villemonte)",
+    "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Notch (Villemonte)",
     "INFO_PARAMETRES_FIXES": "All parameters must be fixed",
     "INFO_PAB_TITRE_COURT": "Fish ladder",
     "INFO_PAB_TITRE": "Fish ladder",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index a46fe1ad2f282f5d1cee978e28c6289af47697e7..d4ab0c5fe06a652ebdc264de39979cf7cc9faca8 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -186,11 +186,11 @@
     "INFO_WALL_REMOVED": "Cloison n°%s supprimée",
     "INFO_WALLS_AND_DEVICES_REMOVED": "%s cloison(s) et %s ouvrage(s) supprimé(s)",
     "INFO_WALLS_REMOVED": "%s cloison(s) supprimée(s)",
-    "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.",
-    "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon",
     "INFO_JET_TITRE_TRAJECTOIRE": "Trajectoire",
     "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectoire et cote de l'eau",
     "INFO_JET_FOND": "Fond",
+    "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.",
+    "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon",
     "INFO_LIB_ABSCISSE": "Abscisse (m)",
     "INFO_LIB_ALTITUDE": "Altitude (m)",
     "INFO_LIB_LENGTHS": "Toutes les longueurs",
@@ -243,6 +243,25 @@
     "INFO_LIB_J": "Perte de charge",
     "INFO_LIB_L": "Largeur du déversoir",
     "INFO_LIB_LB": "Longueur du bassin",
+    "INFO_LIB_LOIDEBIT_KIVI": "Seuil mince (Kindsvater-Carter + Villemonte)",
+    "INFO_LIB_LOIDEBIT_WEIRSUBMERGEDLARINIER": "Fente noyée (Larinier)",
+    "INFO_LIB_LOIDEBIT_ORIFICESUBMERGED": "Orifice noyé (Bernoulli)",
+    "INFO_LIB_LOIDEBIT_ORIFICEFREE": "Orifice dénoyé (Bernoulli)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARWEIRBROAD": "Seuil épais (Bos)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARWEIRFREE": "Seuil mince (Villemonte)",
+    "INFO_LIB_LOIDEBIT_TRIANGULARTRUNCWEIRFREE": "Seuil mince (Villemonte)",
+    "INFO_LIB_LOIDEBIT_GATECEM88D": "Seuil épais / Orifice (Cemagref)",
+    "INFO_LIB_LOIDEBIT_GATECEM88V": "Seuil épais / Vanne de fond (Cemagref)",
+    "INFO_LIB_LOIDEBIT_WEIRCEM88D": "Seuil épais (Cemagref-D)",
+    "INFO_LIB_LOIDEBIT_WEIRCEM88V": "Seuil épais (Cemagref-V)",
+    "INFO_LIB_LOIDEBIT_CUNGE80": "Seuil épais / orifice (Cunge)",
+    "INFO_LIB_LOIDEBIT_WEIRCUNGE80": "Seuil épais (Cunge)",
+    "INFO_LIB_LOIDEBIT_GATECUNGE80": "Seuil épais / orifice (Cunge)",
+    "INFO_LIB_LOIDEBIT_RECTANGULARORIFICEFREE": "Vanne de fond dénoyée",
+    "INFO_LIB_LOIDEBIT_RECTANGULARORIFICESUBMERGED": "Vanne de fond noyée",
+    "INFO_LIB_LOIDEBIT_WEIRFREE": "Seuil mince dénoyé (Poleni)",
+    "INFO_LIB_LOIDEBIT_WEIRSUBMERGED": "Seuil mince fortement noyé (Rajaratnam)",
+    "INFO_LIB_LOIDEBIT_WEIRVILLEMONTE": "Seuil mince (Villemonte)",
     "INFO_LIB_Y": "Ligne d'eau",
     "INFO_LIB_MINZDV": "Cote minimale de la crête",
     "INFO_LIB_MAXZDV": "Cote maximale de la crête",
@@ -264,14 +283,13 @@
     "INFO_LIB_RADIER_N_COURT": "R",
     "INFO_LIB_S": "Surface de l'orifice",
     "INFO_LIB_SELECT_LOIDEBIT": "Loi de débit",
-    "INFO_LIB_SELECT_LOIDEBIT1_KIVI": "Kindsvater-Carter et Villemonte",
-    "INFO_LIB_SELECT_LOIDEBIT1": "Loi de débit",
-    "INFO_LIB_SELECT_LOIDEBIT2": "Loi de débit",
-    "INFO_LIB_SELECT_LOIDEBIT3": "Loi de débit",
-    "INFO_LIB_SELECT_LOIDEBIT4": "Loi de débit",
-    "INFO_LIB_SELECT_STRUCTURE_SEUIL_RECT": "Seuil rectangulaire",
     "INFO_LIB_SELECT_STRUCTURE": "Ouvrage",
     "INFO_LIB_STRUCT_CONTAINER": "Ouvrages",
+    "INFO_LIB_STRUCTURE_ORIFICE": "Orifice",
+    "INFO_LIB_STRUCTURE_SEUILRECTANGULAIRE": "Seuil rectangulaire",
+    "INFO_LIB_STRUCTURE_SEUILTRIANGULAIRE": "Seuil triangulaire",
+    "INFO_LIB_STRUCTURE_SEUILTRIANGULAIRETRUNC": "Seuil triangulaire tronqué",
+    "INFO_LIB_STRUCTURE_VANNERECTANGULAIRE": "Vanne rectangulaire",
     "INFO_LIB_TAU0": "Force tractrice",
     "INFO_LIB_TOR": "Ligne d'eau torrentielle",
     "INFO_LIB_TOTAL": "Total",
@@ -302,26 +320,6 @@
     "INFO_LINKED_VALUE_RESULT": "%s (%s)",
     "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)",
     "INFO_LINKED_VALUE_SECTION": "%s (%s, section)",
-    "INFO_LOIDEBIT_KIVI": "Kindsvater-Carter et Villemonte",
-    "INFO_LOIDEBIT_WeirSubmergedLarinier": "Fente noyée (Larinier)",
-    "INFO_LOIDEBIT_OrificeSubmerged": "Orifice noyé",
-    "INFO_LOIDEBIT_OrificeFree": "Orifice dénoyé",
-    "INFO_LOIDEBIT_TriangularWeirBroad": "Déversoir triangulaire épais (Bos)",
-    "INFO_LOIDEBIT_TriangularWeirFree": "Déversoir triangulaire mince (Villemonte)",
-    "INFO_LOIDEBIT_TriangularTruncWeirFree": "Déversoir triangulaire tronqué (Villemonte)",
-    "INFO_LOIDEBIT_GateCem88d": "Déversoir/Orifice Cemagref 88",
-    "INFO_LOIDEBIT_GateCem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "INFO_LOIDEBIT_WeirCem88d": "Déversoir/Orifice Cemagref 88",
-    "INFO_LOIDEBIT_WeirCem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "INFO_LOIDEBIT_Cunge80": "Cunge (1980)",
-    "INFO_LOIDEBIT_WeirCunge80": "Seuil épais / orifice (Cunge)",
-    "INFO_LOIDEBIT_GateCunge80": "Seuil épais (Cunge)",
-    "INFO_LOIDEBIT_RectangularOrificeFree": "Vanne dénoyé",
-    "INFO_LOIDEBIT_RectangularOrificeSubmerged": "Vanne noyé",
-    "INFO_LOIDEBIT_VanLevLarinier": "Fente noyée régulée (Larinier)",
-    "INFO_LOIDEBIT_VanLevVillemonte": "Échancrure régulée (Villemonte)",
-    "INFO_LOIDEBIT_WeirFree": "Seuil dénoyé",
-    "INFO_LOIDEBIT_WeirVillemonte": "Échancrure (Villemonte)",
     "INFO_MACRORUGO_TITRE_COURT": "Macro-rugo.",
     "INFO_MACRORUGO_TITRE": "Passe à macro-rugosités",
     "INFO_MENU_DIAGRAM_TITLE": "Diagramme des modules",
@@ -365,6 +363,16 @@
     "INFO_PAB_HEADER_PARAMETERS": "Paramètres",
     "INFO_PAB_HEADER_VALUES": "Valeurs",
     "INFO_PAB_CLOISON_OUVRAGE_N": "Cloison : ouvrage n° %s",
+    "INFO_PAB_LOIDEBIT_WEIRSUBMERGEDLARINIER": "Fente noyée (Larinier)",
+    "INFO_PAB_LOIDEBIT_ORIFICESUBMERGED": "Orifice noyé",
+    "INFO_PAB_LOIDEBIT_TRIANGULARWEIRBROAD": "Déversoir triangulaire épais (Bos)",
+    "INFO_PAB_LOIDEBIT_TRIANGULARWEIRFREE": "Déversoir triangulaire mince (Villemonte)",
+    "INFO_PAB_LOIDEBIT_TRIANGULARTRUNCWEIRFREE": "Déversoir triangulaire tronqué (Villemonte)",
+    "INFO_PAB_LOIDEBIT_GATECUNGE80": "Seuil épais / orifice (Cunge)",
+    "INFO_PAB_LOIDEBIT_WEIRCUNGE80": "Seuil épais (Cunge)",
+    "INFO_PAB_LOIDEBIT_VANLEVLARINIER": "Fente noyée régulée (Larinier)",
+    "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Échancrure régulée (Villemonte)",
+    "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Échancrure (Villemonte)",
     "INFO_PARAMETRES_FIXES": "Tous les paramètres doivent être fixés",
     "INFO_PAB_TITRE_COURT": "PAB",
     "INFO_PAB_TITRE": "Passe à bassins",