Skip to content
Snippets Groups Projects
Commit 748cdc08 authored by David Dorchies's avatar David Dorchies
Browse files

New translations on structure stage discharge laws

- Refactor translation on structures (French OK, still English to do)

Refs #419
parent a08d52a0
No related branches found
No related tags found
1 merge request!97Resolve "Renommer les lois d'ouvrage"
Pipeline #138147 failed
Showing with 109 additions and 166 deletions
......@@ -12,19 +12,19 @@
"select_structure_SeuilRectangulaire": "Rectangular weir",
"select_structure_VanneRectangulaire": "Rectangular gate",
"select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
"select_loidebit_GateCunge80": "Cunge (1980)",
"select_loidebit_Orifice_OrificeSubmerged": "Submerged orifice",
"select_loidebit_Orifice_OrificeFree": "Free orifice",
"select_loidebit_OrificeSubmerged": "Submerged orifice",
"select_loidebit_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_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
"select_loidebit_WeirVillemonte": "Villemonte 1947",
"select_loidebit_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_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
"select_loidebit_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
"select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
"select_loidebit_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
"UNIT_PV": "W/m³",
"UNIT_Q": "m³/s",
......
......@@ -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",
......
......@@ -9,9 +9,9 @@
"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)",
"select_loidebit_WeirFree": "Free flow rectangular weir",
"select_loidebit_TriangularWeirFree": "Triangular weir (Villemonte)",
"select_loidebit_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
"UNIT_Q": "m³/s",
"UNIT_EC": "m",
......
......@@ -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"
......
......@@ -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",
......
......@@ -8,28 +8,28 @@
"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_OrificeSubmerged": "Submerged orifice",
"select_loidebit_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_GateCem88d": "Weir/Orifice Cemagref 88",
"select_loidebit_GateCem88v": "Weir/Undershot gate Cemagref 88",
"select_loidebit_GateCunge80": "Cunge (1980)",
"select_loidebit_RectangularOrificeFree": "Free flow gate",
"select_loidebit_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_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
"select_loidebit_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
"select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
"select_loidebit_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)",
"select_loidebit_WeirCem88d": "Weir/Orifice Cemagref 88",
"select_loidebit_WeirCem88v": "Weir/Undershot gate Cemagref 88",
"select_loidebit_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
"select_loidebit_WeirSubmerged": "Submerged weir",
"select_loidebit_WeirVillemonte": "Villemonte 1957",
"select_loidebit_WeirFree": "Free flow weir",
"select_loidebit_KIVI": "Kindsvater-Carter and Villemonte",
"select_loidebit_WeirCunge80": "Cunge (1980)",
"UNIT_Q": "m³/s"
}
......@@ -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"
}
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) {
......
......@@ -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);
}
......
......@@ -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;
......
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);
}
......
......@@ -243,6 +243,26 @@
"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é",
"INFO_LIB_LOIDEBIT_ORIFICEFREE": "Orifice dénoyé",
"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)",
"INFO_LIB_LOIDEBIT_WEIRCEM88V": "Seuil épais (Cemagref)",
"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_VANLEVLARINIER": "Fente noyée régulée (Larinier)",
"INFO_LIB_LOIDEBIT_VANLEVVILLEMONTE": "Échancrure régulée (Villemonte)",
"INFO_LIB_LOIDEBIT_WEIRFREE": "Seuil dénoyé",
"INFO_LIB_LOIDEBIT_WEIRVILLEMONTE": "Échancrure (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",
......@@ -272,6 +292,11 @@
"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 +327,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 +370,16 @@
"INFO_PAB_HEADER_PARAMETERS": "Paramètres",
"INFO_PAB_HEADER_VALUES": "Valeurs",
"INFO_PAB_CLOISON_OUVRAGE_N": "Cloison : ouvrage n° %s",
"INFO_PAB_LOIDEBIT_KIVI": "Kindsvater-Carter et Villemonte",
"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_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",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment