From a372c81bdb04d88c177383603681bab39d3f8000 Mon Sep 17 00:00:00 2001
From: Pierre-Jean CHANCELLIER <paidge_cs@hotmail.com>
Date: Sat, 22 Jan 2022 14:02:38 +0100
Subject: [PATCH] Mise en place du lexique

---
 components/member/Card.vue             |  6 +-
 components/navigation/menu/Sidebar.vue |  9 +--
 i18n/locales/en.json                   | 81 ++++++++++++++++++++---
 i18n/locales/es.json                   | 81 ++++++++++++++++++++---
 i18n/locales/fr.json                   | 81 ++++++++++++++++++++---
 layouts/default.vue                    |  7 +-
 pages/lexique.vue                      | 89 ++++++++++++++++++++++++++
 pages/membres/_hash.vue                |  4 +-
 pages/parametres.vue                   |  5 +-
 pages/previsions/futurs_membres.vue    |  2 +-
 10 files changed, 326 insertions(+), 39 deletions(-)
 create mode 100644 pages/lexique.vue

diff --git a/components/member/Card.vue b/components/member/Card.vue
index df50275..442ce2f 100644
--- a/components/member/Card.vue
+++ b/components/member/Card.vue
@@ -12,7 +12,7 @@
 					v-if="hash.status != 'REVOKED'">
 					<tbody>
 						<tr v-if="hash.status == 'MEMBER'">
-							<th scope="row">{{ $t("membre.referent") }}&nbsp;:</th>
+							<th scope="row">{{ $t("membre.referent.title") }}&nbsp;:</th>
 							<td
 								:class="{
 									'list-group-item-success': hash.sentry,
@@ -22,7 +22,7 @@
 							</td>
 						</tr>
 						<tr v-if="hash.status != 'NEWCOMER'">
-							<th scope="row">{{ $t("membre.qualite") }}&nbsp;:</th>
+							<th scope="row">{{ $t("membre.qualite.title") }}&nbsp;:</th>
 							<td
 								:class="{
 									'list-group-item-success': hash.quality.ratio >= 80,
@@ -32,7 +32,7 @@
 							</td>
 						</tr>
 						<tr>
-							<th scope="row">{{ $t("membre.distance") }}&nbsp;:</th>
+							<th scope="row">{{ $t("membre.distance.title") }}&nbsp;:</th>
 							<td
 								:class="{
 									'list-group-item-success':
diff --git a/components/navigation/menu/Sidebar.vue b/components/navigation/menu/Sidebar.vue
index 0a3974f..1130884 100644
--- a/components/navigation/menu/Sidebar.vue
+++ b/components/navigation/menu/Sidebar.vue
@@ -12,10 +12,11 @@
 				class="d-flex text-info justify-content-between align-items-baseline mt-3 mx-2">
 				<div class="">v0.02</div>
 				<div class="small" v-if="countMax">
-					Bloc n°<span class="font-weight-bold">{{ countMax.number }}</span> ({{
-						$d(new Date(countMax.utc0 * 1000), "short")
-					}}
-					{{ $t("time.a") }} {{ $d(new Date(countMax.utc0 * 1000), "time") }})
+					{{ $t("bloc.title") }} n°<span class="font-weight-bold">{{
+						countMax.number
+					}}</span>
+					({{ $d(new Date(countMax.utc0 * 1000), "short") }} {{ $t("time.a") }}
+					{{ $d(new Date(countMax.utc0 * 1000), "time") }})
 				</div>
 			</div>
 			<button
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index 1658d61..5741347 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -1,32 +1,79 @@
 {
 	"accueil": "Home",
+	"adhesion": {
+		"desc": "Inscription dans la toile de confiance",
+		"title": "Membership"
+	},
 	"aurevoir": "Goodbye to",
 	"bienvenue": "Welcome to",
-	"bloc": "Block",
-	"certifications": {
+	"bloc": {
+		"desc": "",
+		"title": "Block"
+	},
+	"blockchain": {
+		"desc": "",
+		"title": "Blockchain"
+	},
+	"centralite": {
+		"desc": "",
+		"title": "Centrality"
+	},
+	"certification": {
+		"desc": "Lien de reconnaissance entre un individu et un autre",
 		"envoyees": "Certificates sent",
-		"recues": "Certificates received "
+		"interne": {
+			"desc": "",
+			"title": "Certification interne"
+		},
+		"recues": "Certificates received ",
+		"title": "Certification"
 	},
 	"chargement": "Loading",
 	"copie": "Copied",
 	"description": "Description",
 	"dev": "In development",
+	"dividende": {
+		"desc": "Part de monnaie produite par tous les membres de la toile de confiance calculée pour respecter la symétrie spatiale et temporelle.",
+		"title": "Universal Dividend"
+	},
+	"dossier": {
+		"attente": "No pending files | 1 pending file | {n} pending files",
+		"desc": "Demande d'adhésion en cours de traitement",
+		"title": "File"
+	},
 	"expire": "Expires",
 	"futuremembers": "Future members",
 	"infos": "Informations",
 	"inout": "Entries and exits of the web of trust for the last 2 days",
 	"inpreparation": "In preparation",
+	"lexique": "Lexicon",
+	"mot": "Word or expression",
 	"membre": {
+		"calculant": {
+			"desc": "Membre utilisant ses clés privées pour forger des blocks grâce à Duniter.",
+			"title": "Calculating member"
+		},
 		"datelimadhesion": "Membership deadline",
 		"datelimrevoc": "Deadline before revocation ",
 		"datemanquecertifs": "Date before running out of certs",
+		"desc": "Individu dont l'adhésion est en cours et faisant donc partie de la toile de confiance",
 		"dispo": "Available",
 		"dispocertif": "Available to certify",
-		"distance": "Distance",
+		"distance": {
+			"desc": "% des membres référents atteignables en 5 sauts ou moins dans la toile de confiance",
+			"title": "Distance"
+		},
 		"nb_certifs": "Nb of available certs",
 		"nodispo": "Unavailable",
-		"qualite": "Quality",
-		"referent": "Referent"
+		"qualite": {
+			"desc": "% des membres référents atteignables en moins de 4 sauts dans la toile de confiance",
+			"title": "Quality"
+		},
+		"referent": {
+			"desc": "Membre ayant émis ET reçu un certain nombre de certifications, variable en fonction du nombre de membres total.",
+			"title": "Referring member"
+		},
+		"title": "Member"
 	},
 	"membres": "Members",
 	"nom": "Name",
@@ -61,9 +108,20 @@
 		},
 		"title": "Blockchain parameters"
 	},
+	"permutation": {
+		"desc": "",
+		"title": "Permutation"
+	},
+	"piscine": {
+		"desc": "",
+		"title": "Pool"
+	},
+	"pow": {
+		"desc": "",
+		"title": "Proof of Work"
+	},
 	"previsions": {
 		"certificationsinternes": "No internal certification | 1 internal certification | {n} internal certifications",
-		"dossiersattente": "No pending files | 1 pending file | {n} pending files",
 		"pardate": "Forecasts by dates",
 		"parmembre": "Forecasts by members",
 		"permutations": "No permutation | 1 permutation | {n} permutations",
@@ -73,6 +131,10 @@
 		"desc": "Enter the start of a nickname or public key",
 		"title": "Your search"
 	},
+	"revocation": {
+		"desc": "",
+		"title": "Revocation"
+	},
 	"revoila": "Here they are again",
 	"slogan": "The Web of Trust’s wizard",
 	"statut": {
@@ -94,5 +156,8 @@
 	},
 	"type": "Type",
 	"valeur": "Value",
-	"wot": "Web of trust"
+	"wot": {
+		"desc": "Ensemble des individus reconnus comme tels par leurs pairs et des liens qui les relient entre eux par les certifications",
+		"title": "Web of trust"
+	}
 }
diff --git a/i18n/locales/es.json b/i18n/locales/es.json
index 295186d..ea46b15 100644
--- a/i18n/locales/es.json
+++ b/i18n/locales/es.json
@@ -1,32 +1,79 @@
 {
 	"accueil": "Página principal",
+	"adhesion": {
+		"desc": "Inscription dans la toile de confiance",
+		"title": "Membresía"
+	},
 	"aurevoir": "Salen",
 	"bienvenue": "Entran",
-	"bloc": "Bloque",
-	"certifications": {
+	"bloc": {
+		"desc": "",
+		"title": "Bloque"
+	},
+	"blockchain": {
+		"desc": "",
+		"title": "Blockchain"
+	},
+	"centralite": {
+		"desc": "",
+		"title": "Centralidad"
+	},
+	"certification": {
+		"desc": "Lien de reconnaissance entre un individu et un autre",
 		"envoyees": "Certificaciones enviadas",
-		"recues": "Certificaciones recibidas "
+		"interne": {
+			"desc": "",
+			"title": "Certification interne"
+		},
+		"recues": "Certificaciones recibidas ",
+		"title": "Certificacione"
 	},
 	"chargement": "Cargando",
 	"copie": "Copiada",
 	"description": "Descripción",
 	"dev": "En desarrollo",
+	"dividende": {
+		"desc": "Part de monnaie produite par tous les membres de la toile de confiance calculée pour respecter la symétrie spatiale et temporelle.",
+		"title": "Dividendo Universal"
+	},
+	"dossier": {
+		"attente": "No hay candidaturas pendientes | 1 candidatura pendiente | {n} candidaturas pendientes",
+		"desc": "Demande d'adhésion en cours de traitement",
+		"title": "Candidatura"
+	},
 	"expire": "Expira el",
 	"futuremembers": "Futuros miembros",
 	"infos": "Informaciones",
 	"inout": "Entradas y salidas de la red de confianza en los últimos 2 días",
 	"inpreparation": "En preparación",
+	"lexique": "Léxico",
+	"mot": "Palabra o expresión",
 	"membre": {
+		"calculant": {
+			"desc": "Membre utilisant ses clés privées pour forger des blocks grâce à Duniter.",
+			"title": "Miembro calculador"
+		},
 		"datelimadhesion": "Fecha límite de membresía",
 		"datelimrevoc": "Fecha límite de la autorevocación",
 		"datemanquecertifs": "Fecha antes de quedarse sin certificaciones",
+		"desc": "Individu dont l'adhésion est en cours et faisant donc partie de la toile de confiance",
 		"dispo": "Disponible",
 		"dispocertif": "Disponible para certificar",
-		"distance": "Distancia",
+		"distance": {
+			"desc": "% des membres référents atteignables en 5 sauts ou moins dans la toile de confiance",
+			"title": "Distancia"
+		},
 		"nb_certifs": "Núm. de certificaciones disponibles",
 		"nodispo": "Indisponible",
-		"qualite": "Calidad de enlace",
-		"referent": "Referente o de control"
+		"qualite": {
+			"desc": "% des membres référents atteignables en moins de 4 sauts dans la toile de confiance",
+			"title": "Calidad de enlace"
+		},
+		"referent": {
+			"desc": "Membre ayant émis ET reçu un certain nombre de certifications, variable en fonction du nombre de membres total.",
+			"title": "Miembrio referente"
+		},
+		"title": "Miembro"
 	},
 	"membres": "Miembros",
 	"nom": "Nombre",
@@ -61,9 +108,20 @@
 		},
 		"title": "Parámetros de la blockchain"
 	},
+	"permutation": {
+		"desc": "",
+		"title": "Permutation"
+	},
+	"piscine": {
+		"desc": "",
+		"title": "Piscina"
+	},
+	"pow": {
+		"desc": "",
+		"title": "Prueba de trabajo"
+	},
 	"previsions": {
 		"certificationsinternes": "Sin certificación interna | 1 certificación interna | {n} certificaciones internas",
-		"dossiersattente": "No hay candidaturas pendientes | 1 candidatura pendiente | {n} candidaturas pendientes",
 		"pardate": "Previsiones por fecha",
 		"parmembre": "Previsiones por miembros",
 		"permutations": "Sin permutación | 1 permutación | {n} permutaciones",
@@ -73,6 +131,10 @@
 		"desc": "Introduce el comienzo de un pseudónimo o llave pública",
 		"title": "Buscar"
 	},
+	"revocation": {
+		"desc": "",
+		"title": "Autorevocación"
+	},
 	"revoila": "Regresan",
 	"slogan": "El mago de la Red de Confianza",
 	"statut": {
@@ -94,5 +156,8 @@
 	},
 	"type": "Tipo",
 	"valeur": "Valor",
-	"wot": "Red de confianza"
+	"wot": {
+		"desc": "Ensemble des individus reconnus comme tels par leurs pairs et des liens qui les relient entre eux par les certifications",
+		"title": "Red de confianza"
+	}
 }
diff --git a/i18n/locales/fr.json b/i18n/locales/fr.json
index eb3969c..5baa90e 100644
--- a/i18n/locales/fr.json
+++ b/i18n/locales/fr.json
@@ -1,34 +1,81 @@
 {
 	"accueil": "Accueil",
+	"adhesion": {
+		"desc": "Inscription dans la toile de confiance",
+		"title": "Adhésion"
+	},
 	"aurevoir": "Au revoir à",
 	"bienvenue": "Bienvenue à",
-	"bloc": "Bloc",
-	"certifications": {
+	"bloc": {
+		"desc": "",
+		"title": "Bloc"
+	},
+	"blockchain": {
+		"desc": "",
+		"title": "Chaîne de blocs (Blockchain)"
+	},
+	"centralite": {
+		"desc": "",
+		"title": "Centralité"
+	},
+	"certification": {
+		"desc": "Lien de reconnaissance entre un individu et un autre",
 		"envoyees": "Certifications envoyées",
-		"recues": "Certifications reçues "
+		"interne": {
+			"desc": "",
+			"title": "Certification interne"
+		},
+		"recues": "Certifications reçues ",
+		"title": "Certification"
 	},
 	"chargement": "Chargement",
 	"copie": "Copiée",
 	"description": "Description",
 	"dev": "En Développement",
+	"dividende": {
+		"desc": "Part de monnaie produite par tous les membres de la toile de confiance calculée pour respecter la symétrie spatiale et temporelle.",
+		"title": "Dividende Universel"
+	},
+	"dossier": {
+		"attente": "Aucun dossier en attente | 1 dossier en attente | {n} dossiers en attente",
+		"desc": "Demande d'adhésion en cours de traitement",
+		"title": "Dossier"
+	},
 	"expire": "Expire le",
 	"futuremembers": "Futurs membres",
 	"infos": "Informations",
 	"inout": "Entrées et sorties de la toile de confiance des 2 derniers jours",
 	"inpreparation": "En préparation",
+	"lexique": "Lexique",
 	"membre": {
+		"calculant": {
+			"desc": "Membre utilisant ses clés privées pour forger des blocks grâce à Duniter.",
+			"title": "Membre calculant"
+		},
 		"datelimadhesion": "Date limite d'adhésion",
 		"datelimrevoc": "Date limite avant révocation ",
 		"datemanquecertifs": "Date avant de manquer de certifs",
+		"desc": "Individu dont l'adhésion est en cours et faisant donc partie de la toile de confiance",
 		"dispo": "Disponible",
 		"dispocertif": "Disponible pour certifier",
-		"distance": "Distance",
+		"distance": {
+			"desc": "% des membres référents atteignables en 5 sauts ou moins dans la toile de confiance",
+			"title": "Distance"
+		},
 		"nb_certifs": "Nbre de certifs disponibles",
 		"nodispo": "Indisponible",
-		"qualite": "Qualité",
-		"referent": "Référent"
+		"qualite": {
+			"desc": "% des membres référents atteignables en 4 sauts ou moins dans la toile de confiance",
+			"title": "Qualité"
+		},
+		"referent": {
+			"desc": "Membre ayant émis ET reçu un certain nombre de certifications, variable en fonction du nombre de membres total.",
+			"title": "Membre référent"
+		},
+		"title": "Membre"
 	},
 	"membres": "Membres",
+	"mot": "Mot ou expression",
 	"nom": "Nom",
 	"non": "Non",
 	"oui": "Oui",
@@ -61,9 +108,20 @@
 		},
 		"title": "Paramètres de la blockchain"
 	},
+	"permutation": {
+		"desc": "",
+		"title": "Permutation"
+	},
+	"piscine": {
+		"desc": "",
+		"title": "Piscine"
+	},
+	"pow": {
+		"desc": "",
+		"title": "Preuve de travail"
+	},
 	"previsions": {
 		"certificationsinternes": "Aucune certification interne | 1 certification interne | {n} certifications internes",
-		"dossiersattente": "Aucun dossier en attente | 1 dossier en attente | {n} dossiers en attente",
 		"pardate": "Prévisions par date",
 		"parmembre": "Prévisions par membres",
 		"permutations": "Aucune permutation | 1 permutation | {n} permutations",
@@ -73,6 +131,10 @@
 		"desc": "Saisissez le début d'un pseudo ou d'une clé publique",
 		"title": "Votre recherche"
 	},
+	"revocation": {
+		"desc": "",
+		"title": "Révocation"
+	},
 	"revoila": "Les revoilà",
 	"slogan": "Le magicien de la Toile de Confiance",
 	"statut": {
@@ -94,5 +156,8 @@
 	},
 	"type": "Type",
 	"valeur": "Valeur",
-	"wot": "Toile de confiance"
+	"wot": {
+		"desc": "Ensemble des individus reconnus comme tels par leurs pairs et des liens qui les relient entre eux par les certifications",
+		"title": "Toile de confiance"
+	}
 }
diff --git a/layouts/default.vue b/layouts/default.vue
index cc59e35..f42f2c7 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -13,7 +13,7 @@ export default {
 			// Les title correspondent aux chaînes de traduction dans /i18n/locales
 			menus: [
 				{
-					title: "wot",
+					title: "wot.title",
 					items: [{ path: "/membres", title: "membres" }]
 				},
 				{
@@ -24,7 +24,10 @@ export default {
 				},
 				{
 					title: "infos",
-					items: [{ path: "/parametres", title: "params.title" }]
+					items: [
+						{ path: "/lexique", title: "lexique" },
+						{ path: "/parametres", title: "params.title" }
+					]
 				}
 			]
 		}
diff --git a/pages/lexique.vue b/pages/lexique.vue
new file mode 100644
index 0000000..2619c37
--- /dev/null
+++ b/pages/lexique.vue
@@ -0,0 +1,89 @@
+<template>
+	<main class="container">
+		<h2 class="text-center mb-5 font-weight-light">{{ $t("lexique") }}</h2>
+		<div class="table-responsive">
+			<table class="table table-striped">
+				<thead>
+					<th>{{ $t("mot") }}</th>
+					<th>{{ $t("description") }}</th>
+				</thead>
+				<tbody>
+					<tr v-for="mot in listeMotsTrad" :key="mot.title">
+						<th scope="row">{{ mot.title }}</th>
+						<td>{{ mot.desc }}</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</main>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			breadcrumb: [
+				{
+					text: this.$t("accueil"),
+					to: "/"
+				},
+				{
+					text: this.$t("lexique"),
+					active: true
+				}
+			],
+			listeMots: [
+				"dossier",
+				"adhesion",
+				"certification",
+				"certification.interne",
+				"permutation",
+				"membre",
+				"membre.referent",
+				"membre.calculant",
+				"membre.qualite",
+				"membre.distance",
+				"revocation",
+				"piscine",
+				"wot",
+				"dividende",
+				"bloc",
+				"blockchain",
+				"pow",
+				"centralite"
+			]
+		}
+	},
+	nuxtI18n: {
+		paths: {
+			fr: "/lexique",
+			en: "/lexicon",
+			es: "/lexico"
+		}
+	},
+	computed: {
+		listeMotsTrad() {
+			let retour = []
+			this.listeMots.forEach((el) => {
+				retour.push({
+					desc: this.$t(el + ".desc"),
+					title: this.$t(el + ".title")
+				})
+			})
+			retour.sort((a, b) => {
+				if (a.title < b.title) {
+					return -1
+				}
+				if (a.title > b.title) {
+					return 1
+				}
+				return 0
+			})
+			return retour
+		}
+	},
+	mounted() {
+		$nuxt.$emit("changeRoute", this.breadcrumb)
+	}
+}
+</script>
diff --git a/pages/membres/_hash.vue b/pages/membres/_hash.vue
index d9402bc..c857e04 100644
--- a/pages/membres/_hash.vue
+++ b/pages/membres/_hash.vue
@@ -27,7 +27,7 @@
 										['NEWCOMER', 'MISSING'].includes(idFromHash.status) &&
 										idFromHash.received_certifications.certifications.length < 5
 								}">
-								{{ $t("certifications.recues") }} ({{ nbCertifs("received")
+								{{ $t("certification.recues") }} ({{ nbCertifs("received")
 								}}<span v-if="nbCertifsPending('received') != 0">{{
 									"&nbsp;+&nbsp;" + nbCertifsPending("received")
 								}}</span
@@ -44,7 +44,7 @@
 							class="col-sm-10 col-md-7 col-lg-5 mx-auto"
 							v-if="['MISSING', 'MEMBER'].includes(idFromHash.status)">
 							<h3 class="h4 text-center">
-								{{ $t("certifications.envoyees") }} ({{ nbCertifs("sent")
+								{{ $t("certification.envoyees") }} ({{ nbCertifs("sent")
 								}}<span v-if="nbCertifsPending('sent') != 0">{{
 									"&nbsp;+&nbsp;" + nbCertifsPending("sent")
 								}}</span
diff --git a/pages/parametres.vue b/pages/parametres.vue
index a7b0ddf..8c4e64d 100644
--- a/pages/parametres.vue
+++ b/pages/parametres.vue
@@ -17,12 +17,11 @@
 					<tbody>
 						<tr v-for="param in allParameters" :key="param.name">
 							<th scope="row">{{ param.name }}</th>
-							<td scope="row" class="d-none d-sm-table-cell">
+							<td class="d-none d-sm-table-cell">
 								{{ param.par_type }}
 							</td>
-							<td scope="row">{{ param.value }}</td>
+							<td>{{ param.value }}</td>
 							<td
-								scope="row"
 								class="d-none d-md-table-cell"
 								v-html="$t('params.name.' + param.name)"></td>
 						</tr>
diff --git a/pages/previsions/futurs_membres.vue b/pages/previsions/futurs_membres.vue
index c40b31e..4adc7d9 100644
--- a/pages/previsions/futurs_membres.vue
+++ b/pages/previsions/futurs_membres.vue
@@ -10,7 +10,7 @@
 					{{ $t("previsions.title") }}
 					<small
 						><span class="badge badge-secondary">{{
-							$tc("previsions.dossiersattente", wwResult.dossiers_nb)
+							$tc("dossier.attente", wwResult.dossiers_nb)
 						}}</span></small
 					>
 				</h2>
-- 
GitLab