patch 9.1.1494: runtime(tutor): no French translation for Chapter 2

Problem:  runtime(tutor): no French translation for Chapter 2
Solution: add and refine French translation of tutor2, update French
          vimtutor manpage (Damien Lejay)

- Add runtime/tutor/tutor2.fr.utf-8
- Improve translation based on review
- Update references in tutor1.fr and vimtutor-fr.1
- Adjust MAINTAINERS accordingly

closes: #17546

Co-authored-by: Gabriel Dupras <57042631+gdupras@users.noreply.github.com>
Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS
index 1dea262..6d24811 100644
--- a/.github/MAINTAINERS
+++ b/.github/MAINTAINERS
@@ -664,6 +664,7 @@
 runtime/tutor/tutor1.eo					@dpelle
 runtime/tutor/tutor1.fr					@dpelle
 runtime/tutor/tutor1.ru					@RestorerZ
+runtime/tutor/tutor2.fr					@dlejay
 src/iscygpty.*						@k-takata
 src/libvterm/						@leonerd
 src/po/ca.po						@nfdisco
diff --git a/runtime/doc/vimtutor-fr.1 b/runtime/doc/vimtutor-fr.1
index 06e03fb..cda02c6 100644
--- a/runtime/doc/vimtutor-fr.1
+++ b/runtime/doc/vimtutor-fr.1
@@ -1,60 +1,119 @@
-.TH VIMTUTOR 1 "2 avril 2001"
+.TH VIMTUTOR 1 "3 décembre 2024"
 .SH NAME
 vimtutor \- tutoriel Vim
 .SH SYNOPSIS
 .br
-.B vimtutor [\-g] [langue]
+.B vimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter NUMÉRO] [\-g | \-\-gui] [ISO639]
+.br
+.B vimtutor [\-h | \-\-help]
+.br
+.B vimtutor [\-\-list]
 .SH DESCRIPTION
-.B Vimtutor
+.B vimtutor
 lance le tutoriel
-.B Vim
-\.
-Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier
-sans altérer le fichier original.
+.BR "Vim" "."
 .PP
-.B Vimtutor
-est utile pour les personnes souhaitant apprendre leurs premières commandes
-.B Vim
-\.
+.B vimtutor
+est utile pour les personnes souhaitant apprendre leurs premières
+commandes
+.BR "Vim" "."
 .PP
-L'argument optionnel \-g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM
-graphique de vim est disponible, ou le lance avec vim si gvim n'est pas
-disponible.
+L'argument optionel [ISO639] correspond aux deux ou trois lettres qui identifient
+une langue, comme par exemple "it" ou "es".
 .PP
-L'argument optionnel [langue] est le nom d'une langue, spécifiée par son
-symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis,
-la langue de la région linguistique actuelle sera retenue. Si le tutoriel est
-disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise
-qui est proposée.
+.B vimtutor
+ne fait qu'ouvrir une copie temporaire des fichiers du tutoriel, il n'y
+a donc aucun risque d'écraser les leçons.
 .PP
 .B Vim
-est toujours lancé en mode Compatible Vi.
+est toujours lancé en mode
+.B Vi
+compatible.
+.PP
+.SH OPTIONS
+.TP
+.BR \-l ", " \-\-language\ \fIISO639\fR
+Les deux ou trois lettres qui déterminent la langue, comme
+par exemple 'it', 'es' ou 'bar'.
+Par défaut, la langue locale du système est utilisée,
+ou l'anglais sinon.
+.TP
+.BR \-c ", " \-\-chapter\ \fINUMÉRO\fR
+Sélectionne le chapitre désiré. Par défaut, c'est le premier chapitre.
+.TP
+.BR \-g ", " \-\-gui
+Lance
+.B vimtutor
+avec une interface graphique de
+.B Vim
+si possible; sinon, revient à la version console.
+.TP
+.BR \-h ", " \-\-help
+Affiche les informations d'usage.
+.TP
+.BR \-\-list
+Affiche la liste des chapitres et des langues.
+.SH EXEMPLES
+Pour démarrer
+.B vimtutor
+en français au premier chapitre:
+.PP
+.nf
+.RS
+vimtutor fr
+.RE
+.fi
+.PP
+En anglais au chapitre deux:
+.PP
+.nf
+.RS
+vimtutor -c2
+.RE
+.fi
+.PP
+Pour lancer (avec les commandes en format long) l'interface graphique,
+pour le bavarois, au premier chapitre:
+.PP
+.nf
+.RS
+vimtutor --language bar --chapter 1 --gui
+.RE
+.fi
 .SH FICHIERS
 .TP 15
-/usr/local/lib/vim/tutor/tutor[.langue]
-Les fichiers textes de
-.B Vimtutor
+/usr/local/share/vim/vim??/tutor/tutor1[.language]
+Les fichiers du premier chapitre du
+.B vimtutor
 \.
 .TP 15
-/usr/local/lib/vim/tutor/tutor.vim
-Le script Vim utilisé pour copier les fichiers texte de
-.B Vimtutor
+/usr/local/share/vim/vim??/tutor/tutor2[.language]
+Les fichiers du deuxième chapitre du
+.B vimtutor
+\.
+.TP 15
+/usr/local/share/vim/vim??/tutor/tutor.vim
+Le script
+.B Vim
+utilisé pour copier les fichier du
+.B vimtutor
 \.
 .SH AUTEUR
 .B Vimtutor
 a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la
 Colorado School of Mines, en reprenant des idées émises par Charles Smith, de
 la Colorado State University.
-E-mail : bware@mines.colorado.edu.
+Courriel: bware@mines.colorado.edu (ne fonctionne plus).
 .br
 Il a été modifié pour
 .B Vim
 par Bram Moolenaar.
-Pour connaître le nom des traducteurs, consultez les fichiers textes du
+Pour connaitre le nom des traducteurs, consultez les fichiers textes du
 tutoriel.
 .SH VOIR AUSSI
 vim(1)
 .SH TRADUCTION
 Cette page de manuel a été traduite par David Blanchet
 <david.blanchet@free.fr> 2004-12-27.
-Mise à jour 2012-05-06, Dominique Pellé <dominique.pelle@gmail.com>
+Mise à jour 2012-05-06, Dominique Pellé <dominique.pelle@gmail.com>.
+Mise à jour 2025-06-16, Damien Lejay <damien@lejay.be>.
diff --git a/runtime/tutor/tutor1.fr b/runtime/tutor/tutor1.fr
index f479cd2..217d63f 100644
--- a/runtime/tutor/tutor1.fr
+++ b/runtime/tutor/tutor1.fr
@@ -1009,10 +1009,13 @@
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
-  l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
-  relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
-  plus de commandes. Un Manuel de l'utilisateur est disponible en anglais :
+  Voilà, c'est la fin du chapitre 1 de ce tutoriel. Vous pouvez maintenant
+  passer au chapitre 2.
+
+  Le but était de vous donner un bref aperçu de l'éditeur Vim, juste assez pour
+  vous permettre d'utiliser l'éditeur relativement facilement.
+  Il est loin d'être complet, vu que Vim a beaucoup plus de commandes.
+  Un Manuel de l'utilisateur est disponible en anglais :
     :help user-manual
 
   Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
diff --git a/runtime/tutor/tutor2.fr b/runtime/tutor/tutor2.fr
new file mode 100644
index 0000000..42114b6
--- /dev/null
+++ b/runtime/tutor/tutor2.fr
@@ -0,0 +1,213 @@
+===============================================================================
+=    B i e n v e n u e  dans  l e  T u t o r i e l  de  VIM   –   Version 1.7 =
+===============================================================================
+=			    C H A P I T R E   DEUX			      =
+===============================================================================
+
+     Hic sunt dracones : si cʼest la première fois que vous utilisez Vim
+     et que vous souhaitez accéder au tutoriel dʼintroduction, tapez
+     les trois touches  :q!  puis la touche <ENTRÉE> et recommencez.
+
+     Il vous faudra entre 8 et 10 minutes pour terminer ce chapitre, selon
+     que vous passiez plus ou moins de temps à expérimenter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leçon 2.1.1 : REGISTRES NOMMÉS
+
+
+         ** Conserver deux mots copiés en parallèle, puis les coller **
+
+  1. Déplacez le curseur sur la ligne ci-dessous commençant par : --->
+
+  2. Placez-vous nʼimporte où dans le mot 'Édouard' et tapez   "ayiw
+
+AIDE MNÉMOTECHNIQUE :	dans le registre(") nommé (a) (y)ank la portion
+	(i)nterne du (w)ord sous-jacent
+
+  3. Avancez jusquʼau mot 'chouquettes' (fq ou 2fc ou $ ou /ch<ENTRÉE>)
+     et tapez   "byiw
+
+  4. Rendez-vous sur le mot 'Vincent' et tapez   ciw<CTRL-R>a<ÉCHAP>
+
+AIDE MNÉMOTECHNIQUE :	é(c)hange la partie (i)nterne du (w)ord sous-jacent
+	avec le <contenu du (r)egistre> nommé (a)
+
+  5. Rendez-vous sur le mot 'croissant' et tapez   ciw<CTRL-R>b<ÉCHAP>
+
+--->  a) Édouard aura toute autorité sur le contingentement des chouquettes
+      b) À ce titre, Vincent exercera seul le pouvoir discrétionnaire sur
+         lʼattribution des croissants.
+
+NOTE : On peut aussi utiliser les registres avec la commande de suppression.
+       Taper  "sdiw supprimera le mot sous-jacent et en conservera une copie
+       dans le registre (s).
+
+RÉFÉRENCES: 	Registres 		:h registers
+		Registres nommés	:h quotea
+		Mouvements 		:h motion.txt<ENTRÉE> /inner<ENTRÉE>
+		CTRL-R			:h insert<ENTRÉE> /CTRL-R<ENTRÉE>
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+		     Leçon 2.1.2 : LE REGISTRE DʼEXPRESSIONS
+
+
+	     ** Insérer à la volée le résultat dʼun calcul **
+
+  1. Déplacez le curseur sur la ligne ci-dessous commençant par : --->
+
+  2. Placez-vous sur le nombre
+
+  3. Tapez  ciw<CTRL-R> suivi de  =60*60*24<ENTRÉE>
+
+  4. Sur la ligne suivante, en mode Insertion, ajoutez la date du jour avec
+     <CTRL-R> suivi de  =system('date')<ENTRÉE>
+
+NOTE : Tous les appels système dépendent de votre système dʼexploitation. Par
+      exemple sur MS-Windows, utilisez plutôt
+      system('date /t')   ou  :r!date /t
+
+---> Dans une journée, il y a 100 secondes.
+     Aujourdʼhui, nous sommes :
+
+NOTE: on arrive au même résultat avec  :pu=system('date')
+      ou, plus court  :r!date
+
+RÉFÉRENCE : 	Registre dʼexpressions 	:h quote=
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+		      Leçon 2.1.3 : LES REGISTRES NUMÉROTÉS
+
+
+	** Tapez  yy et dd afin de contempler leur effet sur les registres **
+
+  1. Déplacez le curseur sur la ligne ci-dessous commençant par : --->
+
+  2. Copiez (yy) la ligne 0, puis inspectez les registres avec  :reg<ENTRÉE>
+
+  3. Supprimez la ligne 0 avec  "cdd, puis inspectez les registres
+     (Où pensez-vous retrouver la ligne 0 ?)
+
+  4. Continuez à supprimer chaque ligne successivement (avec dd), tout en
+     regardant le résultat au passage avec  :reg.
+
+NOTE : Vous devriez remarquer que les anciennes lignes supprimées descendent
+       dans la liste des registres au fur et à mesure que vous supprimez de
+       nouvelles lignes.
+
+  5. Maintenant collez le contenu des registres suivant, dans cet ordre :
+     c, 7, 4, 2, 8. i.e collez avec  "cp puis "7p puis etc. 
+
+---> 0. Ceci
+     9. zigzag
+     8. secret
+     7. est
+     6. on
+     5. axe
+     4. un
+     3. guerre
+     2. message
+     1. hommage 
+
+NOTE : Les lignes entièrement supprimées (via dd) restent beaucoup plus
+       longtemps dans les registres numérotés que les lignes copiées (via yy)
+       ou les suppressions impliquant des mouvements plus courts.
+
+RÉFÉRENCE : 	Registres numérotés 	:h quote0
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+		      Leçon 2.1.4 : LʼÉLÉGANCE DES MARQUES
+
+
+		** Lʼart dʼéviter les calculs pour le codeur décérébré **
+
+NOTE : En programmation, déplacer de gros blocs de code est souvent une vraie
+       corvée. Le souci nʼest pas la difficulté de lʼopération, mais la
+       gymnastique mentale quʼimposent les calculs de numéros de ligne — une
+       tâche fastidieuse et source dʼerreurs.
+       La technique qui suit vous épargne justement ce tracas pour des
+       opérations comme   "a147d   ou   :945,1091d a   ou pire encore
+       i<CTRL-R> suivi de  =1091-945<ENTRÉE>
+
+  1. Déplacez le curseur sur la ligne ci-dessous commençant par : --->
+
+  2. Placez-vous sur la première ligne de la fonction et placez une marque (a)
+     avec   ma
+
+NOTE : peu importe la position exacte sur la ligne.
+
+  3. Allez à la fin de la ligne, puis à la fin du bloc de code avec  $%
+
+  4. Supprimez le bloc et conservez-le dans le registre (a) avec  "ad'a
+
+AIDE MNÉMOTECHNIQUE :	demande au registre(") nommé (a) de conserver la
+	(d)élétion effectuée depuis le curseur jusquʼà la LIGNE contenant la
+	marque(') (a)
+
+  5. Collez le bloc entre BBB et CCC avec  "ap
+
+NOTE : exercez-vous plusieurs fois pour que ça devienne naturel   ma$%"ad'a
+
+---> AAA
+     function itGotRealBigRealFast() {
+       if ( somethingIsTrue ) {
+         doIt()
+       }
+       // the taxonomy of our function has changed and it
+       // no longer makes alphabetical sense in its current position
+
+       // imagine hundreds of lines of code
+
+       // naively you could navigate to the start and end and record or
+       // remember each line number
+     }
+     BBB
+     CCC
+
+NOTE : les marques et les registres ne partagent pas leur espace de noms,
+       le registre (a) est complètement indépendant de la marque (a).
+       On ne peut pas en dire autant des registres et des macros.
+
+RÉFÉRENCES :	Marques		:h marks
+				:h mark-motions  (différence entre ' et ` )
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+			       Leçon 2.1 RÉSUMÉ
+
+
+  1. Utiliser lʼun des 26 registres nommés (a-z) pour conserver
+     (copier/supprimer) et coller du texte.
+  2. Copier un mot entier en plaçant le curseur sur le mot :   yiw
+  3. Changer un mot entier en plaçant le curseur sur le mot :   ciw
+  4. Insérer du texte directement depuis un registre, en mode Insertion :
+     <CTRL-R>a
+
+  5. Insérer le résultat dʼune opération arithmétique simple :
+     <CTRL-R> suivi de  =60*60<ENTRÉE> en mode Insertion
+  6. Insérer le résultat dʼun appel système : <CTRL-R> suivi de
+     =system('ls -1')<ENTRÉE>
+     en mode Insertion
+
+  7. Inspecter les registres avec   :reg
+  8. Apprendre pourquoi les suppressions de lignes entières (dd) sont
+     préservées plus longtemps : elles bénéficient des registres 1 à 9 et sont
+     préservées plus longtemps que toute autre opération
+  9. Apprendre la destination finale de toutes les copies dans les registres
+     numérotés et à quel point elles sont éphémères
+
+ 10. Placer des marques depuis le mode Normal   m[a-zA-Z0-9]
+ 11. Se déplacer ligne par ligne jusquʼà une marque avec  '
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Voilà, vous êtes arrivé à la fin du chapitre deux du tutoriel de Vim. Il est
+  encore en chantier.
+
+  Ce chapitre a été écrit par Paul D. Parker,
+  il a été traduit en français par Damien Lejay.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/version.c b/src/version.c
index 90d999a..f74b97b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1494,
+/**/
     1493,
 /**/
     1492,
diff --git a/src/vimtutor b/src/vimtutor
index 1d530d4..beb95f0 100755
--- a/src/vimtutor
+++ b/src/vimtutor
@@ -68,7 +68,8 @@
 
     echo "Chapter: 2"
     printf "\tLang: %-3s => %s\n" \
-en English\(default\)
+en English\(default\) \
+fr French
     echo "================================================================================================"
 }