git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] l10n: add framework for localizing the manpages
@ 2017-03-12 20:02 Jean-Noel Avila
  2017-03-12 20:02 ` Jean-Noel Avila
                   ` (2 more replies)
  0 siblings, 3 replies; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-12 20:02 UTC (permalink / raw)
  To: git


This is first attempt at starting the internationalisation of the git
man pages. For now, only man pages are generated, only for git-add and
only in french. The chosen tool for this is po4a (PO for anything)
which can ingest asciidoc files and spit po files for each structural
entity. Then from the translated po files, the translated asciidoc
files are merged.

The main advantage of po files over plain translated files is the
ability to track changes in the original version and the fact that
maybe the translators of git can more easily pick up the task with
tools they already know. Po4a is ready for the simple addition of new
languages.

The problem with po4a is that we don't know before hand how many files
are created (it depends on the percentage of translated strings). This
leads to invoke make recursively to have the list of available files
after running po4a to actually process the generated asciidoc files.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH] l10n: add framework for localizing the manpages
  2017-03-12 20:02 [PATCH] l10n: add framework for localizing the manpages Jean-Noel Avila
@ 2017-03-12 20:02 ` Jean-Noel Avila
  2017-03-12 20:36   ` Jean-Noël AVILA
  2017-03-13  0:01   ` Junio C Hamano
  2017-03-18 17:53 ` [PATCH v2 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
  2017-03-20 21:02 ` Rework manpage localisation Jean-Noel Avila
  2 siblings, 2 replies; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-12 20:02 UTC (permalink / raw)
  To: git; +Cc: Jean-Noel Avila

Providing git in localized version is a good step for general adoption
of the tool. But as of now, if one needs to refer to the manual pages,
they are still confronted to english. The aim is to provide
documentation to users in their own language.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/Makefile               |   23 +-
 Documentation/po/documentation.fr.po | 1095 ++++++++++++++++++++++++++++++++++
 Documentation/po/documentation.pot   |  787 ++++++++++++++++++++++++
 Documentation/po4a.conf              |    5 +
 4 files changed, 1908 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/po/documentation.fr.po
 create mode 100644 Documentation/po/documentation.pot
 create mode 100644 Documentation/po4a.conf

diff --git a/Documentation/Makefile b/Documentation/Makefile
index b5be2e2d3..630384354 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,4 +1,5 @@
 # Guard against environment variables
+MAN1_L10N_TXT =
 MAN1_TXT =
 MAN5_TXT =
 MAN7_TXT =
@@ -10,6 +11,7 @@ OBSOLETE_HTML =
 MAN1_TXT += $(filter-out \
 		$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
 		$(wildcard git-*.txt))
+MAN1_L10N_TXT += $(wildcard po/*/man1/git-*.txt)
 MAN1_TXT += git.txt
 MAN1_TXT += gitk.txt
 MAN1_TXT += gitremote-helpers.txt
@@ -86,6 +88,7 @@ DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
 DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
 DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
 DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
+DOC_MAN1_L10N = $(patsubst %.txt,%.1,$(MAN1_L10N_TXT))
 
 prefix ?= $(HOME)
 bindir ?= $(prefix)/bin
@@ -209,6 +212,7 @@ endif
 
 ifneq ($(findstring $(MAKEFLAGS),s),s)
 ifndef V
+	QUIET_PO4A      = @echo '   ' PO4A $@;
 	QUIET_ASCIIDOC	= @echo '   ' ASCIIDOC $@;
 	QUIET_XMLTO	= @echo '   ' XMLTO $@;
 	QUIET_DB2TEXI	= @echo '   ' DB2TEXI $@;
@@ -229,11 +233,20 @@ all: html man
 
 html: $(DOC_HTML)
 
-man: man1 man5 man7
+man: man1 man5 man7 man_l10n
 man1: $(DOC_MAN1)
 man5: $(DOC_MAN5)
 man7: $(DOC_MAN7)
 
+man_l10n: po4a man1_p_l10n
+po4a: po4a.conf
+	$(QUIET_PO4A)po4a po4a.conf
+
+man1_p_l10n: po4a
+	$(MAKE) man1_l10n
+
+man1_l10n: $(DOC_MAN1_L10N)
+
 info: git.info gitman.info
 
 pdf: user-manual.pdf
@@ -247,6 +260,11 @@ install-man: man
 	$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
 	$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
 	$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
+	$(MAKE) install-man-l10n
+
+install-man-l10n: $(DOC_MAN1_L10N)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(mandir)/$(firstword $(subst /man1/, ,$(subst po/,,$<)))/man1
+	$(INSTALL) -m 644 $< $(DESTDIR)$(mandir)$(subst po,,$<)
 
 install-info: info
 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
@@ -323,6 +341,7 @@ clean:
 	$(RM) technical/*.html technical/api-index.txt
 	$(RM) $(cmds_txt) $(mergetools_txt) *.made
 	$(RM) manpage-base-url.xsl
+	$(RM) po/*/*.1 po/*/*.txt 
 
 $(MAN_HTML): %.html : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@@ -339,7 +358,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
 
 %.1 %.5 %.7 : %.xml manpage-base-url.xsl
 	$(QUIET_XMLTO)$(RM) $@ && \
-	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) -o $(dir $<) man $<
 
 %.xml : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
diff --git a/Documentation/po/documentation.fr.po b/Documentation/po/documentation.fr.po
new file mode 100644
index 000000000..db23bd796
--- /dev/null
+++ b/Documentation/po/documentation.fr.po
@@ -0,0 +1,1095 @@
+# French translations for Git Manual Pages.
+# Copyright (C) 2017 Jean-Noël Avila <jn.avila@free.fr>
+# This file is distributed under the same license as the Git package.
+# Jean-Noël Avila <jn.avila@free.fr>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: git documentation\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: 2017-03-11 23:00+0100\n"
+"Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr "git-add(1)"
+
+#. type: Title -
+#: git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#
+#. type: Plain text
+#: git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr "git-add - Ajoute le contenu de fichiers à l'index"
+
+#. type: Title -
+#: git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+"'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--] [<chemin>...]\n"
+
+#. type: Title -
+#: git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#
+#. type: Plain text
+#: git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+"Cette commande met à jour l'index en utilisant le contenu actuel trouvé dans "
+"la copie de travail, pour préparer le contenu de la prochaine validation. "
+"Typiquement, elle ajoute intégralement le contenu actuel des chemins "
+"existant, mais peut aussi n'ajouter que certaines parties des modifications "
+"au moyen d'options ou soustraire certains chemins qui n'existent plus dans "
+"la copie de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+"L'« index » contient un instantané du contenu de la copie de travail et "
+"c'est cet instantané qui sera utilisé comme contenu du prochain commit.  "
+"Ainsi, après avoir réalisé des modifications dans la copie de travail, et "
+"avant de lancer la commande commit, vous devez utiliser la commande `add` "
+"pour ajouter tout fichier nouveau ou modifié à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+"Cette commande peut être effectuée plusieurs fois avant la validation.  Elle "
+"n'ajoute que le contenu des fichiers spécifiés au moment où la commande "
+"`add` est lancée ; si vous souhaitez inclure des modifications postérieures "
+"à un `add` dans la prochaine validation, vous devez alors lancer `git add` à "
+"nouveau pour ajouter le nouveau contenu à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+"La commande `git status` permet d'obtenir un résumé des fichiers modifiés "
+"qui sont préparés pour la prochaine validation."
+
+#
+#. type: Plain text
+#: git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+"Par défaut, la commande `git add` n'ajoute pas les fichiers ignorés.  Si des "
+"fichiers ignorés sont spécifiés explicitement en ligne de commande, `git "
+"add` échouera avec la liste des fichiers ignorés. Les fichiers ignorés "
+"atteint via la récursion de répertoires ou les patrons de fichiers gérés par "
+"Git (les patrons doivent alors être échappés du shell par des quotes)  "
+"seront ignorés silencieusement. La commande `git add` peut tout de même "
+"ajouter des fichiers ignorés avec l'option `-f` (force)."
+
+#
+#. type: Plain text
+#: git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+"Référez-vous linkgit:git-commit[1] pour des méthodes alternatives d'ajout de "
+"contenu à une validation."
+
+#. type: Title -
+#: git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONS"
+
+#. type: Plain text
+#: git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+"<chemin>...::\n"
+"\tFichiers dont le contenu doit être ajouté. Les patrons (ex : `*.c`)\n"
+"\tpermettent de restreindre à tous le fichiers correspondant. Un\n"
+"\tnom de répertoire (ex : `rep` pour ajouter `rep/fichier1` et\n"
+"\t`rep/fichier2`) permet d'ajouter récursivement tous les fichiers\n"
+"\td'un répertoire.\n"
+
+#. type: Plain text
+#: git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+"-n::\n"
+"--dry-run::\n"
+"\tN'ajoute pas réellement les fichiers. Montrer juste s'ils existent\n"
+"\tou seront ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+"-v::\n"
+"--verbose::\n"
+"        Mode bavard.\n"
+
+#. type: Plain text
+#: git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+"-f::\n"
+"--force::\n"
+"\tForce l'ajout de fichiers qui sont normalement ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+"-i::\n"
+"--interactive::\n"
+"\tAjoute le contenu modifié dans l'arbre de travail à l'index\n"
+"\tde manière interactive. Les arguments optionnels de chemin \n"
+"\tpermettent de limiter les opérations à un sous-ensemble de la\n"
+"\tcopie de travail. Référez-vous à « Mode interactif » pour plus\n"
+"\tde détails.\n"
+
+#. type: Plain text
+#: git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+"-p::\n"
+"--patch::\n"
+"\tChoisit de manière interactive les sections de patch entre l'index\n"
+"\tet la copie de travail et les ajouter à l'index. Cela permet à\n"
+"\tl'utilisateur de réviser les différences avec d'ajouter le contenu\n"
+"\tmodifié à l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+"Cela lance effectivement `add --interactive` mais court-circuite\n"
+"le menu initial et saute directement à la sous-commande `patch`.\n"
+"Référez-vous à ``Mode interactif'' pour plus de détails.\n"
+
+#. type: Plain text
+#: git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+"-e::\n"
+"--edit::\n"
+"\tOuvre les différences avec l'index dans un éditeur et laisser\n"
+"\tl'utilisateur les éditer. Après la fermeture de l'éditeur, ajuster\n"
+"\tles entêtes de sections et appliquer le patch dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+"L'objectif de cette option est de permettre de choisir et retenir les\n"
+"lignes du patch à appliquer, ou même de modifier le contenu des lignes\n"
+"à indexer. Cela peut être plus rapide et plus flexible que l'utilisation\n"
+"du sélecteur interactif. Cependant, il plus facile de se \n"
+"tromper et de créer un patch qui ne s'applique pas. Référez-vous à\n"
+"ÉDITER LES PATCHS ci-dessous.\n"
+
+#. type: Plain text
+#: git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+"-u::\n"
+"--update::\n"
+"\tMet à jour l'index sur les seuls fichiers déjà présents et\n"
+"\tcorrespondant à <chemin>. Cela retire ou modifie les entrées\n"
+"\td'index pour correspondre à la copie de travail, mais n'ajoute\n"
+"\tpas de fichier.\n"
+
+#. type: Plain text
+#: git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié, quand l'option `-u` est utilisée,\n"
+"tous les fichiers suivis dans la totalité de la copie de travail sont\n"
+"mis à jour (les version anciennes de Git limitaient la mise à jour au\n"
+"répertoire courant et ses sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tMet à jour l'index non seulement pour tous les fichiers de\n"
+"\tla copie de travail correspondant à <chemin> mais aussi pour\n"
+"\ttoutes les entrées existant déjà dans l'index. Ceci ajoute,\n"
+"\tmodifie et retire des entrées d'index pour correspondre à\n"
+"\tla copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié quand l'option `-A` est utilisée,\n"
+"tous le fichiers de l'arbre de travail sont mis à jour (les versions\n"
+"anciennes de Git utilisaient le répertoire courant et ses\n"
+"sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tMet à jour l'index en ajoutant dans l'index les nouveaux\n"
+"\tfichiers qui sont inconnus et les fichiers modifiés dans la\n"
+"\tcopie de travail, mais ignore les fichiers qui ont été\n"
+"\teffacés de la copie de travail. Cette option ne fait rien\n"
+"\tquand aucun <chemin> n'est utilisé.\n"
+
+#. type: Plain text
+#: git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+"Cette option sert principalement à aider les utilisateurs de versions\n"
+"anciennes de Git pour lesquels « git add <chemin>... » était synonyme\n"
+"de « git add --no-all <chemin>... », c'est-à-dire qui ignorait les\n"
+"fichiers effacés.\n"
+
+#. type: Plain text
+#: git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tN'enregistre que le fait que le chemin sera ajouté plus tard. Une\n"
+"\tentrée pour le chemin est placée en index sans contenu. C'est\n"
+"\tparticulièrement utile pour, entre autres choses, montrer le\n"
+"\tcontenu non indexé de ces fichiers avec `git diff` et les valider\n"
+"\tavec `git commit -a`.\n"
+
+#. type: Plain text
+#: git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+"--refresh::\n"
+"\tN'ajoute pas les fichiers mais rafraîchit seulement leur\n"
+"\tinformation de stat() dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+"--ignore-errors::\n"
+"\tSi des fichiers n'ont pu être ajoutés à cause d'erreurs lors\n"
+"\tde leur indexation, n'annule pas l'opération mais continue\n"
+"\tl'ajout des autres fichiers. La commande se terminera tout de\n"
+"\tmême avec un code d'erreur non nul. Le paramètre\n"
+"\tde configuration `add.ignoreErrors` peut être positionné à\n"
+"\ttrue pour que ce comportement soit celui par défaut.\n"
+
+#. type: Plain text
+#: git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+"--ignore-missing::\n"
+"\tCette option ne peut être utilisée que couplée avec --dry-run.\n"
+"\tL'utilisation de cette option permet à l'utilisateur de vérifier\n"
+"\tsi un des fichiers indiqués serait ignoré, qu'il soit présent\n"
+"\tou non dans la copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+"--chmod=(+|-)x::\n"
+"\tForce le bit exécutable des fichiers ajoutés. Le bit\n"
+"\texécutable n'est modifié que dans l'index, les fichiers de la\n"
+"\tcopie de travail ne sont pas modifiés.\n"
+
+#. type: Plain text
+#: git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+"\\--::\n"
+"\tCette option permet de séparer les options de la ligne de commande\n"
+"\tde la liste des fichiers (utile si certains noms de fichiers\n"
+"\tpeuvent être confondus avec des options).\n"
+
+#. type: Title -
+#: git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr "Configuration"
+
+#
+#. type: Plain text
+#: git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+"Le paramètre de configuration optionnel `core.excludesFile` indique un "
+"chemin vers un fichier contenant les patrons des noms de fichier à exclure "
+"de git-add, similaire à $GIT_DIR/info/exclude. Les patrons dans le fichier "
+"d'exclusion sont additionnés à ceux de info/exclude. Référez-vous à linkgit:"
+"gitignore[5]."
+
+#. type: Title -
+#: git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "EXEMPLES"
+
+#
+#. type: Plain text
+#: git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+"Ajouter le contenu de tous le fichiers `*.txt` sous le répertoire "
+"`Documentation` et ses sous répertoires."
+
+#. type: delimited block -
+#: git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr "$ git add Documentation/\\*.txt\n"
+
+#
+#. type: Plain text
+#: git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+"Remarquez que l'astérisque `*` est échappé du shell dans cet exemple ; cela "
+"permet d'inclure les fichiers dans les sous-répertoires du Répertoire "
+"`Documentation/`."
+
+#
+#. type: Plain text
+#: git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr "Ajouter le contenu de tous les scripts git-*.sh :"
+
+#. type: delimited block -
+#: git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr "$ git add git-*.sh\n"
+
+#
+#. type: Plain text
+#: git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+"Comme cet exemple laisse le shell réaliser l'expansion de l'astérisque "
+"(c'est-à-dire que vous listez explicitement les fichiers du répertoire), il "
+"ne traite pas `subdir/git-foo.sh`."
+
+#. type: Title -
+#: git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr "Mode interactif"
+
+#
+#. type: Plain text
+#: git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+"Quand la commande entre en mode interactif, elle affiche le résultat de la "
+"sous-commande 'status', puis entre en boucle de commande interactive."
+
+#
+#. type: Plain text
+#: git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+"La boucle de commande affiche la liste des sous-commandes disponibles et "
+"affiche le prompt \"What now>\" (Que faire maintenant). En général, lorsque "
+"le prompt se termine par un '>' unique, vous ne pouvez choisir qu'une seule "
+"des propositions et appuyer Entrée, comme cela :"
+
+#. type: delimited block -
+#: git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+
+#
+#. type: Plain text
+#: git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+"Vous pouvez indiquer `s` ou `sta` ou `status` dans le cas si dessus, à "
+"condition que le choix soit unique."
+
+#
+#. type: Plain text
+#: git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+"La boucle de commande principale propose 6 sous-commandes (plus help (aide)  "
+"et quit (quitter))."
+
+#. type: Labeled list
+#: git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr "status"
+
+#
+#. type: Plain text
+#: git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+"Affiche les modifications entre HEAD et l'index (c-à-d ce qui serait validé "
+"si vous lanciez `git commit`), et entre l'index et les fichiers de la copie "
+"de travail (c-à-d ce que vous pourriez indexer au moyen de `git add` avant "
+"de lancer `git commit`) pour chaque chemin. Un exemple d'affichage ressemble "
+"à ceci :"
+
+#. type: delimited block -
+#: git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, git-"
+"add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if you "
+"commit what is in the index, but working tree file has further modifications "
+"(one addition and one deletion)."
+msgstr ""
+"foo.png contient de différences avec HEAD (mais c'est un format binaire donc "
+"le nombre de lignes ne peut pas être affiché) et il n'y a pas différence "
+"entre la copie indexée et la copie de travail (si la copie de travail avait "
+"été aussi différente, 'binary' aurait été affiché à la place de 'nothing'). "
+"L'autre fichier, git-add{litdd}interactive.perl, a 430 lignes ajoutées et 35 "
+"effacées si vous validez ce qui est dans l'index, mais la copie de travail "
+"contient d'autres modifications (un ajout et un retrait)."
+
+#. type: Labeled list
+#: git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr "update"
+
+#
+#. type: Plain text
+#: git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+"Affiche l'information d'état et un prompt \"Update>>\". Quand le prompt se "
+"termine par un double '>', vous pouvez sélectionner plus d'une option, "
+"concaténées avec des espaces ou des virgules. Vous pouvez aussi indiquer des "
+"intervalles.  Par exemple \"2-5 7,9\" pour choisir 2, 3, 4, 5, 7 et 9 dans "
+"la liste. Si le second nombre d'un intervalle est absent, tous les patchs "
+"restants sont sélectionnés. Par ex. \"7-\" choisit 7, 8 et 9 dans la liste. "
+"'*' permet de tout sélectionner."
+
+#
+#. type: Plain text
+#: git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr "Tout ce qui a été sélectionné est indiqué par une '*', comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr "Pour retirer une sélection, préfixez-la avec `-` comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr "Update>> -2\n"
+
+#
+#. type: Plain text
+#: git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+"Après sélection, répondez avec une ligne vide pour indexer le contenu des "
+"fichiers sélectionnés de la copie de travail."
+
+#. type: Labeled list
+#: git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr "revert"
+
+#
+#. type: Plain text
+#: git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+"Ceci présente une interface d'utilisation similaire à 'update', et le "
+"contenu indexé des chemins sélectionnés sont ramenés à la version HEAD. "
+"Inverser des chemins nouveau les rend non-suivis."
+
+#. type: Labeled list
+#: git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr "add untracked"
+
+#
+#. type: Plain text
+#: git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+"Ceci présente une interface d'utilisation très similaire à 'update' et "
+"'revert' et permet d'ajouter des chemins non-suivis à l'index."
+
+#. type: Labeled list
+#: git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr "patch"
+
+#
+#. type: Plain text
+#: git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+"Ceci permet de choisir un chemin depuis une sélection similaire à 'status'. "
+"Après le choix du chemin, la différence entre l'index et le fichier dans "
+"l'arbre de travail est présenté et vous demande si vous souhaiter indexer "
+"chaque section de modification. Vous pouvez sélectionner une des options "
+"suivantes et taper entréé :"
+
+#
+#. type: Plain text
+#: git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+"y - indexer cette section\n"
+"n - ne pas indexer cette section\n"
+"q - quitter ; ne pas indexer cette section ni les autres restantes\n"
+"a - indexer cette section et toutes les suivantes de ce fichier\n"
+"d - ne pas indexer cette section ni les suivantes de ce fichier\n"
+"g - selectionner une section et s'y rendre\n"
+"/ - rechercher une section correspondant à une regex donnée\n"
+"j - laisser cette section non décidée et aller à la suivante non-décidée\n"
+"J - laisser cette section non décidée et aller à la suivante\n"
+"k - laisser cette section non décidée et aller à la précédente non-décidée\n"
+"K - laisser cette section non décidée et aller à la précédente\n"
+"s - découper la section en sections plus petites\n"
+"e - éditer manuellement la section actuelle\n"
+"? - afficher l'aide\n"
+
+#
+#. type: Plain text
+#: git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+"Après avoir décidé du devenir de chaque section, l'index est mis à jour avec "
+"les sections sélectionnées."
+
+#
+#. type: Plain text
+#: git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+"Vous pouvez vous éviter de taper entrée ici, en mettant la variable de "
+"configuration `interactive.singlekey` à `true`."
+
+#. type: Labeled list
+#: git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr "diff"
+
+#
+#. type: Plain text
+#: git-add.txt:332
+msgid ""
+"This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+"Ceci permet de faire une revue de ce qui sera validé (c'est une différence "
+"entre HEAD et index)."
+
+#. type: Title -
+#: git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr "EDITER LES PATCHES"
+
+#
+#. type: Plain text
+#: git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+"Invoquer `git add -e` ou selectionner `e` depuis le sélecteur interactif de "
+"sections ouvre un patch dans votre éditeur ; après avoir quitté l'éditeur, "
+"le résultat est appliqué à l'index. Vous êtes libre de modifier en tout "
+"point le patch, mais notez cependant que certaines modifications provoquent "
+"des résultats inattendus ou même créent des patchs inapplicables. Si vous "
+"souhaitez abandonner complètement l'opération (c'est-à-dire ne rien ajouter "
+"à l'index), effacez toutes les lignes du patch. La liste ci-dessous décrit "
+"des formes habituelles dans les patchs et quelles opérations d'édition "
+"peuvent être réalisées."
+
+#. type: Labeled list
+#: git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr "contenu ajouté"
+
+#
+#. type: Plain text
+#: git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+"Le contenu ajouté est représentés par des lignes commençant par un "
+"\"{plus}\". Vous pouvez empêcher l'indexation de lignes ajoutées en les "
+"supprimant."
+
+#. type: Labeled list
+#: git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr "contenu supprimé"
+
+#
+#. type: Plain text
+#: git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+"Le contenu supprimé est représenté par des lignes commençant par \"-\". Vous "
+"pouvez empêcher l'indexation de ces suppression en convertissant le \"-\" en "
+"\" \" (espace)."
+
+#. type: Labeled list
+#: git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr "contenu modifié"
+
+#
+#. type: Plain text
+#: git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+"Le contenu modifié est représenté par des lignes \"-\" (supprimant l'ancien "
+"contenu) suivies de lignes \"{plus}\" (ajoutant le nouveau contenu). Vous "
+"pouvez empêcher l'indexation de ces modifications en convertissant les "
+"lignes \"_\" en ligne \" \" et en supprimant les lignes \"{plus}\". Méfiez-"
+"vous : ne modifier que la moitié de la paire de lignes a de fortes chances "
+"de créer des modifications inattendues dans l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+"Il existe aussi des opérations plus complexes. Méfiez-vous : quand le patch "
+"n'est appliqué que dans l'index et pas dans l'arbre de travail, l'arbre de "
+"travail semblera « défaire » les modifications de l'index. Par exemple, "
+"l'introduction dans l'index d'une nouvelle ligne qui n'apparait ni dans HEAD "
+"ni dans l'arbre de travail indexera la nouvelle ligne pour validation, mais "
+"cette ligne semblera être supprimée dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+"Évitez d'utiliser ces constructions, ou faites le avec une extrême "
+"précaution."
+
+#. type: Labeled list
+#: git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr "suppression de contenu intact"
+
+#
+#. type: Plain text
+#: git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+"Le contenu qui ne diffère pas entre l'index et l'arbre de travail peut être "
+"visible dans des lignes de contexte commençant par un \" \" (espace). Vous "
+"pouvez indexer l'élimination de lignes de contexte en convertissant l'espace "
+"en \"-\". Le fichier dans l'arbre de travail semblera ré-ajouter le contenu."
+
+#. type: Labeled list
+#: git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr "modification de contenu existant"
+
+#
+#. type: Plain text
+#: git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+"On peut aussi modifier le contenu de lignes de contexte en indexant leur "
+"suppression (en convertissant \" \" en \"-\") et en ajoutant dessous une "
+"ligne \"{plus}\" avec le nouveau contenu. On peut modifier des lignes "
+"\"{plus}\" dans des ajouts ou des modifications de contenu. Dans tous les "
+"cas, la nouvelle modification indexée semblera être annulée dans l'arbre de "
+"travail."
+
+#. type: Labeled list
+#: git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr "contenu nouveau"
+
+#
+#. type: Plain text
+#: git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+"Vous pouvez aussi ajouter du contenu nouveau qui n'existe pas dans le "
+"patch ; ajoutez simplement des nouvelles lignes, chacune commençant avec "
+"\"{plus}\". L'ajout semblera annulé dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+"Il existe aussi quelques opération à éviter complètement car celles-ci "
+"rendent le patch inapplicable :"
+
+#
+#. type: Plain text
+#: git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr "ajout de context (\" \") ou lignes de suppression (\"-\")"
+
+#
+#. type: Plain text
+#: git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr "suppression de contexte ou de lignes supprimées"
+
+#
+#. type: Plain text
+#: git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr "modification de contenu de contexte ou de lignes supprimées"
+
+#. type: Title -
+#: git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#
+#. type: Plain text
+#: git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+
+#. type: Title -
+#: git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr "GIT"
+
+#
+#. type: Plain text
+#: git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr "Fait partie de la suite linkgit:git[1]"
diff --git a/Documentation/po/documentation.pot b/Documentation/po/documentation.pot
new file mode 100644
index 000000000..46c590bea
--- /dev/null
+++ b/Documentation/po/documentation.pot
@@ -0,0 +1,787 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: ./git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | "
+"-i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] "
+"[--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, "
+"git-add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if "
+"you commit what is in the index, but working tree file has further "
+"modifications (one addition and one deletion)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:332
+msgid "This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] "
+"linkgit:git-mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr ""
diff --git a/Documentation/po4a.conf b/Documentation/po4a.conf
new file mode 100644
index 000000000..b6ee8b4a6
--- /dev/null
+++ b/Documentation/po4a.conf
@@ -0,0 +1,5 @@
+[po4a_langs] fr
+[po4a_paths] po/documentation.pot $lang:po/documentation.$lang.po
+[options] opt: " -k 80"
+
+[type: asciidoc] ./git-add.txt $lang:./po/$lang/man1/git-add.txt
-- 
2.12.0


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-12 20:02 ` Jean-Noel Avila
@ 2017-03-12 20:36   ` Jean-Noël AVILA
  2017-03-13  0:01   ` Junio C Hamano
  1 sibling, 0 replies; 37+ messages in thread
From: Jean-Noël AVILA @ 2017-03-12 20:36 UTC (permalink / raw)
  To: git

This patch is only a preview and a request for comment. The tool used to 
perform the localization of manpages is po4a (po for anything). This tool 
digests the asciidoc source files and writes a pot file, and then merges back 
the po files into translated asciidoc files, for further processing.

The choice of this workflow is driven by two concerns: manage the tracking of 
the changes in the original files and provide the translators with a format of 
file that they already use. Moreover, I plan to upload the po files to web 
translation platforms such as transifex or weblate to take advantage of crowd 
translation.

In this patch, only one manpage is generated for the git-add command in 
french. po4a already supports extending to other languages, and merges all the 
strings from multiple source manpages into one big pot file. In the next 
version, two files will be included so that the sharing of common strings is 
shown. There are some enhancement needed for better support of other output 
formats.

One problem with this setup is that we don't know before hand which files will 
be generated from the po files and the source files. This depends on the level 
of completion of translation for each language and each target file. To 
circumvent this, the makefile calls itself recursively after running po4a, so 
that the generated files can be enumerated in the downstream targets.

It would be understandable that the git devel list would not like to be 
spammed by the traffic generated by this new activity.If the present proposition 
is accepted,  I'm open to any modus operandi for submitting the changes.

Thanks for reading.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-12 20:02 ` Jean-Noel Avila
  2017-03-12 20:36   ` Jean-Noël AVILA
@ 2017-03-13  0:01   ` Junio C Hamano
  2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
  2017-03-15  7:58     ` Jean-Noël Avila
  1 sibling, 2 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-13  0:01 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Jean-Noel Avila <jn.avila@free.fr> writes:

> +#. type: Title =
> +#: git-add.txt:2
> +#, no-wrap
> +msgid "git-add(1)"
> +msgstr "git-add(1)"
> +
> +#. type: Title -
> +#: git-add.txt:5
> +#, no-wrap
> +msgid "NAME"
> +msgstr "NOM"
> +
> +#
> +#. type: Plain text
> +#: git-add.txt:7
> +msgid "git-add - Add file contents to the index"
> +msgstr "git-add - Ajoute le contenu de fichiers à l'index"
> +
> +#. type: Title -
> +#: git-add.txt:9
> +#, no-wrap
> +msgid "SYNOPSIS"
> +msgstr "SYNOPSIS"

It is a wonderful goal to make localized manpages and corresponding
HTMLized documents available, and the above might look reasonable,
but other parts of what the translaters need to do we see below
makes me wonder if this is a sensible approach.

> +#. type: Plain text
> +#: git-add.txt:15
> +#, no-wrap
> +msgid ""
> +"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
> +"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
> +msgstr ""
> +"'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]\n"
> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
> +"\t  [--] [<chemin>...]\n"

This shows that even after adding just _one_ new option to the
command, the whole thing need to be re-translated (the SYNOPSIS
section may be a bad example, as not much is subject to i18n,
though).  If each paragraph of the description section becomes a
single string that need to be re-translated, as we can see below, I
am not sure if it really helps the translators.  A mere single
rephrasing of a word in a large paragraph would have to result in
the entire paragraph to be translated again?

> +#. type: Title -
> +#: git-add.txt:17
> +#, no-wrap
> +msgid "DESCRIPTION"
> +msgstr "DESCRIPTION"
> +
> +#
> +#. type: Plain text
> +#: git-add.txt:24
> +msgid ""
> +"This command updates the index using the current content found in the "
> +"working tree, to prepare the content staged for the next commit.  It "
> +"typically adds the current content of existing paths as a whole, but with "
> +"some options it can also be used to add content with only part of the "
> +"changes made to the working tree files applied, or remove paths that do not "
> +"exist in the working tree anymore."
> +msgstr ""
> +"Cette commande met à jour l'index en utilisant le contenu actuel trouvé dans "
> +"la copie de travail, pour préparer le contenu de la prochaine validation. "
> +"Typiquement, elle ajoute intégralement le contenu actuel des chemins "
> +"existant, mais peut aussi n'ajouter que certaines parties des modifications "
> +"au moyen d'options ou soustraire certains chemins qui n'existent plus dans "
> +"la copie de travail."

It almost makes me suggest that a totally different approach might
be more manageable.  For example, we can pick one version of a
source file (say, "v2.12.0:Documentation/git-add.txt"), have it
fully translated to the target languages, _and_ make it a convention
to record the original blob object name at the end of the translated
file.  Perhaps "Documentation/l10n/fr/git-add.txt" may record the
result of such translation effort.

And then, when somebody wants to update the translation for v2.13.0,
perhaps 

    git diff --color-words $old_blob v2.13.0:Documentation/git-add.txt

(where $old_blob is taken from Documentation/l10n/fr/git-add.txt)
can be examined and then Documentation/l10n/fr/git-add.txt can be
adjusted to match the changes between the two versions.  After that,
update the "source" blob object name in the translation.

So, I dunno.  I like the goal and appreciate the effort to get to
that goal.  I am not sure what the best approach would be and the
sample translation mechanism I see in this patch makes me doubt that
it is the best approach.

Thanks.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-13  0:01   ` Junio C Hamano
@ 2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
  2017-03-14 21:13       ` Junio C Hamano
  2017-03-15  8:11       ` Jean-Noël Avila
  2017-03-15  7:58     ` Jean-Noël Avila
  1 sibling, 2 replies; 37+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2017-03-14 21:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jean-Noel Avila, Git Mailing List

On Mon, Mar 13, 2017 at 1:01 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Jean-Noel Avila <jn.avila@free.fr> writes:

Jean: Comments on the patch:

- Firstly thanks for working on this. When I hacked up the initial po
support in v1.7.8-rc2-1-g5e9637c629 I always meant to try out po4a,
but never got around to it. It's much easier than I thought.
- Consider submitting a more minimal patch that doesn't have the giant
fr.po (or just some minor cut version) as the tip of the series, to
make this easier to review
- The git-add.txt file is hardcoded in po4a.conf, won't this file need
to be generated in some final version of this series?

> This shows that even after adding just _one_ new option to the
> command, the whole thing need to be re-translated (the SYNOPSIS
> section may be a bad example, as not much is subject to i18n,
> though).  If each paragraph of the description section becomes a
> single string that need to be re-translated, as we can see below, I
> am not sure if it really helps the translators.  A mere single
> rephrasing of a word in a large paragraph would have to result in
> the entire paragraph to be translated again?
>
> [...]
>
> It almost makes me suggest that a totally different approach might
> be more manageable.  For example, we can pick one version of a
> source file (say, "v2.12.0:Documentation/git-add.txt"), have it
> fully translated to the target languages, _and_ make it a convention
> to record the original blob object name at the end of the translated
> file.  Perhaps "Documentation/l10n/fr/git-add.txt" may record the
> result of such translation effort.
>
> And then, when somebody wants to update the translation for v2.13.0,
> perhaps
>
>     git diff --color-words $old_blob v2.13.0:Documentation/git-add.txt
>
> (where $old_blob is taken from Documentation/l10n/fr/git-add.txt)
> can be examined and then Documentation/l10n/fr/git-add.txt can be
> adjusted to match the changes between the two versions.  After that,
> update the "source" blob object name in the translation.
>
> So, I dunno.  I like the goal and appreciate the effort to get to
> that goal.  I am not sure what the best approach would be and the
> sample translation mechanism I see in this patch makes me doubt that
> it is the best approach.

Junio: The concerns about long strings being altered & needing to be
translated is something already addressed by the gettext toolchain.
Your existing translations turn "fuzzy", and you can see a
before/after version of what changed in popular tools.

The proposal to do something like "git diff --words" is suboptimal
because it just gives you the same things these gettext tools give
you, but more importantly even though it's pretty feature similar in
theory you lose the advantage of plug-in integration with any
arbitrary gettext tool, e.g. the transifex or weblate tools Jean
mentioned.

Also, having done a lot of translations myself (although not for Git,
just the translation infra), it's a huge advantage to be able to
partially translate certain things out of order (e.g. parts of
git-add.txt), and even have different people do different parts. This
is trivial and you get out of the box support for it with the gettext
tooling, but not if we just have git-add.txt translated in its
entirety to e.g. French & record what the blob sha1 was.

I think this series is on the right track, and that po4a is the right
tool for the job.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
@ 2017-03-14 21:13       ` Junio C Hamano
  2017-03-15  8:11       ` Jean-Noël Avila
  1 sibling, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-14 21:13 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason; +Cc: Jean-Noel Avila, Git Mailing List

Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:

> I think this series is on the right track, and that po4a is the right
> tool for the job.

OK, thanks for the input.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-13  0:01   ` Junio C Hamano
  2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
@ 2017-03-15  7:58     ` Jean-Noël Avila
  2017-03-15 16:07       ` Junio C Hamano
  2017-03-15 18:28       ` Stefan Beller
  1 sibling, 2 replies; 37+ messages in thread
From: Jean-Noël Avila @ 2017-03-15  7:58 UTC (permalink / raw)
  To: git

Le 13/03/2017 à 01:01, Junio C Hamano a écrit :
> +#. type: Plain text
>> +#: git-add.txt:15
>> +#, no-wrap
>> +msgid ""
>> +"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
>> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
>> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
>> +"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
>> +msgstr ""
>> +"'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]\n"
>> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
>> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
>> +"\t  [--] [<chemin>...]\n"
> This shows that even after adding just _one_ new option to the
> command, the whole thing need to be re-translated (the SYNOPSIS
> section may be a bad example, as not much is subject to i18n,
> though).  If each paragraph of the description section becomes a
> single string that need to be re-translated, as we can see below, I
> am not sure if it really helps the translators.  A mere single
> rephrasing of a word in a large paragraph would have to result in
> the entire paragraph to be translated again?

I'm not sure to clearly understand your point: if there is the
introduction of a new option, there is a need to update the translation
for sure.

 

The use of po files introduces tools to automatically mark the
paragraphs that need to be retranslated or if the translation was near
enough to be reviewed (entries are translated with the approaching
translation and marked as "fuzzy"). Using po, it is also possible to use
translation memories (such as the po file for the programs).

 

Now the choice of segmentation of the text might be discussed, but
usually, the translators prefer to keep a paragraph level, because
that's the range that can span an idea and allows shuffling the
sentences if needed. If a finer grain can be used, that's usually at the
step of writing the original text that the decision is taken to ease the
translation burden.

>> +#. type: Title -
>> +#: git-add.txt:17
>> +#, no-wrap
>> +msgid "DESCRIPTION"
>> +msgstr "DESCRIPTION"
>> +
>> +#
>> +#. type: Plain text
>> +#: git-add.txt:24
>> +msgid ""
>> +"This command updates the index using the current content found in the "
>> +"working tree, to prepare the content staged for the next commit.  It "
>> +"typically adds the current content of existing paths as a whole, but with "
>> +"some options it can also be used to add content with only part of the "
>> +"changes made to the working tree files applied, or remove paths that do not "
>> +"exist in the working tree anymore."
>> +msgstr ""
>> +"Cette commande met à jour l'index en utilisant le contenu actuel trouvé dans "
>> +"la copie de travail, pour préparer le contenu de la prochaine validation. "
>> +"Typiquement, elle ajoute intégralement le contenu actuel des chemins "
>> +"existant, mais peut aussi n'ajouter que certaines parties des modifications "
>> +"au moyen d'options ou soustraire certains chemins qui n'existent plus dans "
>> +"la copie de travail."
> It almost makes me suggest that a totally different approach might
> be more manageable.  For example, we can pick one version of a
> source file (say, "v2.12.0:Documentation/git-add.txt"), have it
> fully translated to the target languages, _and_ make it a convention
> to record the original blob object name at the end of the translated
> file.  Perhaps "Documentation/l10n/fr/git-add.txt" may record the
> result of such translation effort.
>
> And then, when somebody wants to update the translation for v2.13.0,
> perhaps 
>
>     git diff --color-words $old_blob v2.13.0:Documentation/git-add.txt
>
> (where $old_blob is taken from Documentation/l10n/fr/git-add.txt)
> can be examined and then Documentation/l10n/fr/git-add.txt can be
> adjusted to match the changes between the two versions.  After that,
> update the "source" blob object name in the translation.

That's the whole point of using po files which embed the management of
change (the original strings) independently from git, compared to
diffing between revisions of the original file and applying the
translations of the changes into the translated ones.



>
> So, I dunno.  I like the goal and appreciate the effort to get to
> that goal.  I am not sure what the best approach would be and the
> sample translation mechanism I see in this patch makes me doubt that
> it is the best approach.

That may sound like an authority argument, the po4a was specifically
developped and used for the translation of man pages (in debian for
instance), with success.

 

Anyway, we can manage the po4a workflow outside of the git repo and only
push the end results (the asciidoc files). The initial proposition was
also aimed at putting in common the tools for other translators (CC'ed),
to the expense of yet another dependency.


Thanks




^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
  2017-03-14 21:13       ` Junio C Hamano
@ 2017-03-15  8:11       ` Jean-Noël Avila
  2017-03-15  9:01         ` Ævar Arnfjörð Bjarmason
  1 sibling, 1 reply; 37+ messages in thread
From: Jean-Noël Avila @ 2017-03-15  8:11 UTC (permalink / raw)
  To: git

Le 14/03/2017 à 22:00, Ævar Arnfjörð Bjarmason a écrit :
> On Mon, Mar 13, 2017 at 1:01 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Jean-Noel Avila <jn.avila@free.fr> writes:
> Jean: Comments on the patch:
>
> - Firstly thanks for working on this. When I hacked up the initial po
> support in v1.7.8-rc2-1-g5e9637c629 I always meant to try out po4a,
> but never got around to it. It's much easier than I thought.

Well, that's only the simplest setup I could come up with :-). I'm
discovering the tool and it seems that can go quite hairy, depending on
where we want to go.

> - Consider submitting a more minimal patch that doesn't have the giant
> fr.po (or just some minor cut version) as the tip of the series, to
> make this easier to review

OK. Will split in po4a.conf + Makefile changes, then pot and po files.
The point is that as long as the po files are not translated at a
minimum level, po4a does not generate the target files. Right now, the
threshold is 80% of translated strings (no fuzzy).

> - The git-add.txt file is hardcoded in po4a.conf, won't this file need
> to be generated in some final version of this series?

If all the translation string are harvested automatically from the
source files, the resulting po file will be huge. For the moment, I
prefered to manually select the files and check that po4a behaves correctly.




^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-15  8:11       ` Jean-Noël Avila
@ 2017-03-15  9:01         ` Ævar Arnfjörð Bjarmason
  0 siblings, 0 replies; 37+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2017-03-15  9:01 UTC (permalink / raw)
  To: Jean-Noël Avila; +Cc: git

On Wed, Mar 15, 2017 at 9:11 AM, Jean-Noël Avila <jn.avila@free.fr> wrote:
> Le 14/03/2017 à 22:00, Ævar Arnfjörð Bjarmason a écrit :
>> On Mon, Mar 13, 2017 at 1:01 AM, Junio C Hamano <gitster@pobox.com> wrote:
>>> Jean-Noel Avila <jn.avila@free.fr> writes:
>> Jean: Comments on the patch:
>>
>> - Firstly thanks for working on this. When I hacked up the initial po
>> support in v1.7.8-rc2-1-g5e9637c629 I always meant to try out po4a,
>> but never got around to it. It's much easier than I thought.
>
> Well, that's only the simplest setup I could come up with :-). I'm
> discovering the tool and it seems that can go quite hairy, depending on
> where we want to go.
>
>> - Consider submitting a more minimal patch that doesn't have the giant
>> fr.po (or just some minor cut version) as the tip of the series, to
>> make this easier to review
>
> OK. Will split in po4a.conf + Makefile changes, then pot and po files.
> The point is that as long as the po files are not translated at a
> minimum level, po4a does not generate the target files. Right now, the
> threshold is 80% of translated strings (no fuzzy).

Right, I don't mean don't include it, just add the *.pot and *.po file
in a subsequent patch, so reviewers focusing just on the translation
infra changes have a ~100-200 line patch to look at instead of 10x
that.

>> - The git-add.txt file is hardcoded in po4a.conf, won't this file need
>> to be generated in some final version of this series?
>
> If all the translation string are harvested automatically from the
> source files, the resulting po file will be huge. For the moment, I
> prefered to manually select the files and check that po4a behaves correctly.

Yeah, makes sense, we can just start with git-add.txt and add more files later.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-15  7:58     ` Jean-Noël Avila
@ 2017-03-15 16:07       ` Junio C Hamano
  2017-03-15 18:28       ` Stefan Beller
  1 sibling, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-15 16:07 UTC (permalink / raw)
  To: Jean-Noël Avila; +Cc: git

Jean-Noël Avila <jn.avila@free.fr> writes:

> Le 13/03/2017 à 01:01, Junio C Hamano a écrit :
>> +#. type: Plain text
>>> +#: git-add.txt:15
>>> +#, no-wrap
>>> +msgid ""
>>> +"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
>>> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
>>> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
>>> +"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
>>> +msgstr ""
>>> +"'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]\n"
>>> +"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
>>> +"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
>>> +"\t  [--] [<chemin>...]\n"
>> This shows that even after adding just _one_ new option to the
>> ...  A mere single
>> rephrasing of a word in a large paragraph would have to result in
>> the entire paragraph to be translated again?
>
> I'm not sure to clearly understand your point: if there is the
> introduction of a new option, there is a need to update the translation
> for sure.

You probably are used to po4a well enough to accept "the smallest
unit of translation is paragraph" as a natural given, and it may be
an acceptable way to work for those who actually do the translation.

Because I am not used to po4a and I don't do translation, "why I
have to update the above translation of the whole paragraph, in
response to a patch to rename just a single option", e.g.

	-	[--edit | -e] [--no-]all | --[no-]ignore-removal | [--update | -u]]
	+	[--edit | -e] [--no-]all | --[no-]ignore-removal | [--modify | -m]]

was a natural reaction for me.  In any case, I won't be doing the
translations, and those who work with po4a are happy with the tool,
that is fine by me.


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH] l10n: add framework for localizing the manpages
  2017-03-15  7:58     ` Jean-Noël Avila
  2017-03-15 16:07       ` Junio C Hamano
@ 2017-03-15 18:28       ` Stefan Beller
  1 sibling, 0 replies; 37+ messages in thread
From: Stefan Beller @ 2017-03-15 18:28 UTC (permalink / raw)
  To: Jean-Noël Avila; +Cc: git

On Wed, Mar 15, 2017 at 12:58 AM, Jean-Noël Avila <jn.avila@free.fr> wrote:

> The use of po files introduces tools to automatically mark the
> paragraphs that need to be retranslated or if the translation was near
> enough to be reviewed (entries are translated with the approaching
> translation and marked as "fuzzy"). Using po, it is also possible to use
> translation memories (such as the po file for the programs).
>

Well for writing code exactly, we often rely on commit messages
of the past, which is not available to users of the po tool IIUC.
Sometimes we have commits rewording the Documentation to
point out a subtle detail. Specifically for these changes
it would be good to have the reason for the change in Documentation
available for translators.

(Just a passerby note)

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-12 20:02 [PATCH] l10n: add framework for localizing the manpages Jean-Noel Avila
  2017-03-12 20:02 ` Jean-Noel Avila
@ 2017-03-18 17:53 ` Jean-Noel Avila
  2017-03-18 17:53   ` [PATCH v2 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
  2017-03-18 19:41   ` [PATCH v2 1/2] l10n: Introduce framework for localizing " Junio C Hamano
  2017-03-20 21:02 ` Rework manpage localisation Jean-Noel Avila
  2 siblings, 2 replies; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-18 17:53 UTC (permalink / raw)
  To: git; +Cc: Jean-Noel Avila

Providing git in localized version is a good step for general adoption
of the tool. But as of now, if one needs to refer to the manual pages,
they are still confronted to english. The aim is to provide
documentation to users in their own language.

signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/Makefile  | 23 +++++++++++++++++++++--
 Documentation/po4a.conf |  5 +++++
 2 files changed, 26 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/po4a.conf

diff --git a/Documentation/Makefile b/Documentation/Makefile
index b5be2e2d3..1f71c0b80 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,4 +1,5 @@
 # Guard against environment variables
+MAN1_L10N_TXT =
 MAN1_TXT =
 MAN5_TXT =
 MAN7_TXT =
@@ -10,6 +11,7 @@ OBSOLETE_HTML =
 MAN1_TXT += $(filter-out \
 		$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
 		$(wildcard git-*.txt))
+MAN1_L10N_TXT += $(wildcard po/*/man1/git-*.txt)
 MAN1_TXT += git.txt
 MAN1_TXT += gitk.txt
 MAN1_TXT += gitremote-helpers.txt
@@ -86,6 +88,7 @@ DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
 DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
 DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
 DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
+DOC_MAN1_L10N = $(patsubst %.txt,%.1,$(MAN1_L10N_TXT))
 
 prefix ?= $(HOME)
 bindir ?= $(prefix)/bin
@@ -209,6 +212,7 @@ endif
 
 ifneq ($(findstring $(MAKEFLAGS),s),s)
 ifndef V
+	QUIET_PO4A      = @echo '   ' PO4A $@;
 	QUIET_ASCIIDOC	= @echo '   ' ASCIIDOC $@;
 	QUIET_XMLTO	= @echo '   ' XMLTO $@;
 	QUIET_DB2TEXI	= @echo '   ' DB2TEXI $@;
@@ -229,11 +233,20 @@ all: html man
 
 html: $(DOC_HTML)
 
-man: man1 man5 man7
+man: man1 man5 man7 man_l10n
 man1: $(DOC_MAN1)
 man5: $(DOC_MAN5)
 man7: $(DOC_MAN7)
 
+man_l10n: po4a man1_p_l10n
+po4a: po4a.conf
+	$(QUIET_PO4A)po4a po4a.conf
+
+man1_p_l10n: po4a
+	$(MAKE) man1_l10n
+
+man1_l10n: $(DOC_MAN1_L10N)
+
 info: git.info gitman.info
 
 pdf: user-manual.pdf
@@ -247,6 +260,11 @@ install-man: man
 	$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
 	$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
 	$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
+	$(MAKE) install-man-l10n
+
+install-man-l10n: $(DOC_MAN1_L10N)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(mandir)/$(firstword $(subst /man1/, ,$(subst po/,,$<)))/man1
+	$(INSTALL) -m 644 $< $(DESTDIR)$(mandir)$(subst po,,$<)
 
 install-info: info
 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
@@ -323,6 +341,7 @@ clean:
 	$(RM) technical/*.html technical/api-index.txt
 	$(RM) $(cmds_txt) $(mergetools_txt) *.made
 	$(RM) manpage-base-url.xsl
+	$(RM) po/*/*.1 po/*/*.txt
 
 $(MAN_HTML): %.html : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@@ -339,7 +358,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
 
 %.1 %.5 %.7 : %.xml manpage-base-url.xsl
 	$(QUIET_XMLTO)$(RM) $@ && \
-	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) -o $(dir $<) man $<
 
 %.xml : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
diff --git a/Documentation/po4a.conf b/Documentation/po4a.conf
new file mode 100644
index 000000000..b6ee8b4a6
--- /dev/null
+++ b/Documentation/po4a.conf
@@ -0,0 +1,5 @@
+[po4a_langs] fr
+[po4a_paths] po/documentation.pot $lang:po/documentation.$lang.po
+[options] opt: " -k 80"
+
+[type: asciidoc] ./git-add.txt $lang:./po/$lang/man1/git-add.txt
-- 
2.12.0


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-18 17:53 ` [PATCH v2 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
@ 2017-03-18 17:53   ` Jean-Noel Avila
  2017-03-18 19:41   ` [PATCH v2 1/2] l10n: Introduce framework for localizing " Junio C Hamano
  1 sibling, 0 replies; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-18 17:53 UTC (permalink / raw)
  To: git; +Cc: Jean-Noel Avila

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/po/documentation.fr.po | 1095 ++++++++++++++++++++++++++++++++++
 Documentation/po/documentation.pot   |  787 ++++++++++++++++++++++++
 2 files changed, 1882 insertions(+)
 create mode 100644 Documentation/po/documentation.fr.po
 create mode 100644 Documentation/po/documentation.pot

diff --git a/Documentation/po/documentation.fr.po b/Documentation/po/documentation.fr.po
new file mode 100644
index 000000000..3017da0c9
--- /dev/null
+++ b/Documentation/po/documentation.fr.po
@@ -0,0 +1,1095 @@
+# French translations for Git Manual Pages.
+# Copyright (C) 2017 Jean-Noël Avila <jn.avila@free.fr>
+# This file is distributed under the same license as the Git package.
+# Jean-Noël Avila <jn.avila@free.fr>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: git documentation\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: 2017-03-15 21:42+0100\n"
+"Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr "git-add(1)"
+
+#. type: Title -
+#: git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#
+#. type: Plain text
+#: git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr "git-add - Ajoute le contenu de fichiers à l'index"
+
+#. type: Title -
+#: git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<spécification de chemin>...]\n"
+
+#. type: Title -
+#: git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#
+#. type: Plain text
+#: git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+"Cette commande met à jour l'index en utilisant le contenu actuel trouvé dans "
+"la copie de travail, pour préparer le contenu de la prochaine validation. "
+"Typiquement, elle ajoute intégralement le contenu actuel des chemins "
+"existant, mais peut aussi n'ajouter que certaines parties des modifications "
+"au moyen d'options ou soustraire certains chemins qui n'existent plus dans "
+"la copie de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+"L'« index » contient un instantané du contenu de la copie de travail et "
+"c'est cet instantané qui sera utilisé comme contenu du prochain commit.  "
+"Ainsi, après avoir réalisé des modifications dans la copie de travail, et "
+"avant de lancer la commande commit, vous devez utiliser la commande `add` "
+"pour ajouter tout fichier nouveau ou modifié à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+"Cette commande peut être effectuée plusieurs fois avant la validation.  Elle "
+"n'ajoute que le contenu des fichiers spécifiés au moment où la commande "
+"`add` est lancée ; si vous souhaitez inclure des modifications postérieures "
+"à un `add` dans la prochaine validation, vous devez alors lancer `git add` à "
+"nouveau pour ajouter le nouveau contenu à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+"La commande `git status` permet d'obtenir un résumé des fichiers modifiés "
+"qui sont préparés pour la prochaine validation."
+
+#
+#. type: Plain text
+#: git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+"Par défaut, la commande `git add` n'ajoute pas les fichiers ignorés.  Si des "
+"fichiers ignorés sont spécifiés explicitement en ligne de commande, `git "
+"add` échouera avec la liste des fichiers ignorés. Les fichiers ignorés "
+"atteint via la récursion de répertoires ou les patrons de fichiers gérés par "
+"Git (les patrons doivent alors être échappés du shell par des quotes)  "
+"seront ignorés silencieusement. La commande `git add` peut tout de même "
+"ajouter des fichiers ignorés avec l'option `-f` (force)."
+
+#
+#. type: Plain text
+#: git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+"Référez-vous linkgit:git-commit[1] pour des méthodes alternatives d'ajout de "
+"contenu à une validation."
+
+#. type: Title -
+#: git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONS"
+
+#. type: Plain text
+#: git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+"<chemin>...::\n"
+"\tFichiers dont le contenu doit être ajouté. Les patrons (ex : `*.c`)\n"
+"\tpermettent de restreindre à tous le fichiers correspondant. Un\n"
+"\tnom de répertoire (ex : `rep` pour ajouter `rep/fichier1` et\n"
+"\t`rep/fichier2`) permet d'ajouter récursivement tous les fichiers\n"
+"\td'un répertoire.\n"
+
+#. type: Plain text
+#: git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+"-n::\n"
+"--dry-run::\n"
+"\tN'ajoute pas réellement les fichiers. Montrer juste s'ils existent\n"
+"\tou seront ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+"-v::\n"
+"--verbose::\n"
+"        Mode bavard.\n"
+
+#. type: Plain text
+#: git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+"-f::\n"
+"--force::\n"
+"\tForce l'ajout de fichiers qui sont normalement ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+"-i::\n"
+"--interactive::\n"
+"\tAjoute le contenu modifié dans l'arbre de travail à l'index\n"
+"\tde manière interactive. Les arguments optionnels de chemin \n"
+"\tpermettent de limiter les opérations à un sous-ensemble de la\n"
+"\tcopie de travail. Référez-vous à « Mode interactif » pour plus\n"
+"\tde détails.\n"
+
+#. type: Plain text
+#: git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+"-p::\n"
+"--patch::\n"
+"\tChoisit de manière interactive les sections de patch entre l'index\n"
+"\tet la copie de travail et les ajouter à l'index. Cela permet à\n"
+"\tl'utilisateur de réviser les différences avec d'ajouter le contenu\n"
+"\tmodifié à l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+"Cela lance effectivement `add --interactive` mais court-circuite\n"
+"le menu initial et saute directement à la sous-commande `patch`.\n"
+"Référez-vous à ``Mode interactif'' pour plus de détails.\n"
+
+#. type: Plain text
+#: git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+"-e::\n"
+"--edit::\n"
+"\tOuvre les différences avec l'index dans un éditeur et laisser\n"
+"\tl'utilisateur les éditer. Après la fermeture de l'éditeur, ajuster\n"
+"\tles entêtes de sections et appliquer le patch dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+"L'objectif de cette option est de permettre de choisir et retenir les\n"
+"lignes du patch à appliquer, ou même de modifier le contenu des lignes\n"
+"à indexer. Cela peut être plus rapide et plus flexible que l'utilisation\n"
+"du sélecteur interactif. Cependant, il plus facile de se \n"
+"tromper et de créer un patch qui ne s'applique pas. Référez-vous à\n"
+"ÉDITER LES PATCHS ci-dessous.\n"
+
+#. type: Plain text
+#: git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+"-u::\n"
+"--update::\n"
+"\tMet à jour l'index sur les seuls fichiers déjà présents et\n"
+"\tcorrespondant à <chemin>. Cela retire ou modifie les entrées\n"
+"\td'index pour correspondre à la copie de travail, mais n'ajoute\n"
+"\tpas de fichier.\n"
+
+#. type: Plain text
+#: git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié, quand l'option `-u` est utilisée,\n"
+"tous les fichiers suivis dans la totalité de la copie de travail sont\n"
+"mis à jour (les version anciennes de Git limitaient la mise à jour au\n"
+"répertoire courant et ses sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tMet à jour l'index non seulement pour tous les fichiers de\n"
+"\tla copie de travail correspondant à <chemin> mais aussi pour\n"
+"\ttoutes les entrées existant déjà dans l'index. Ceci ajoute,\n"
+"\tmodifie et retire des entrées d'index pour correspondre à\n"
+"\tla copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié quand l'option `-A` est utilisée,\n"
+"tous le fichiers de l'arbre de travail sont mis à jour (les versions\n"
+"anciennes de Git utilisaient le répertoire courant et ses\n"
+"sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tMet à jour l'index en ajoutant dans l'index les nouveaux\n"
+"\tfichiers qui sont inconnus et les fichiers modifiés dans la\n"
+"\tcopie de travail, mais ignore les fichiers qui ont été\n"
+"\teffacés de la copie de travail. Cette option ne fait rien\n"
+"\tquand aucun <chemin> n'est utilisé.\n"
+
+#. type: Plain text
+#: git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+"Cette option sert principalement à aider les utilisateurs de versions\n"
+"anciennes de Git pour lesquels « git add <chemin>... » était synonyme\n"
+"de « git add --no-all <chemin>... », c'est-à-dire qui ignorait les\n"
+"fichiers effacés.\n"
+
+#. type: Plain text
+#: git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tN'enregistre que le fait que le chemin sera ajouté plus tard. Une\n"
+"\tentrée pour le chemin est placée en index sans contenu. C'est\n"
+"\tparticulièrement utile pour, entre autres choses, montrer le\n"
+"\tcontenu non indexé de ces fichiers avec `git diff` et les valider\n"
+"\tavec `git commit -a`.\n"
+
+#. type: Plain text
+#: git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+"--refresh::\n"
+"\tN'ajoute pas les fichiers mais rafraîchit seulement leur\n"
+"\tinformation de stat() dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+"--ignore-errors::\n"
+"\tSi des fichiers n'ont pu être ajoutés à cause d'erreurs lors\n"
+"\tde leur indexation, n'annule pas l'opération mais continue\n"
+"\tl'ajout des autres fichiers. La commande se terminera tout de\n"
+"\tmême avec un code d'erreur non nul. Le paramètre\n"
+"\tde configuration `add.ignoreErrors` peut être positionné à\n"
+"\ttrue pour que ce comportement soit celui par défaut.\n"
+
+#. type: Plain text
+#: git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+"--ignore-missing::\n"
+"\tCette option ne peut être utilisée que couplée avec --dry-run.\n"
+"\tL'utilisation de cette option permet à l'utilisateur de vérifier\n"
+"\tsi un des fichiers indiqués serait ignoré, qu'il soit présent\n"
+"\tou non dans la copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+"--chmod=(+|-)x::\n"
+"\tForce le bit exécutable des fichiers ajoutés. Le bit\n"
+"\texécutable n'est modifié que dans l'index, les fichiers de la\n"
+"\tcopie de travail ne sont pas modifiés.\n"
+
+#. type: Plain text
+#: git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+"\\--::\n"
+"\tCette option permet de séparer les options de la ligne de commande\n"
+"\tde la liste des fichiers (utile si certains noms de fichiers\n"
+"\tpeuvent être confondus avec des options).\n"
+
+#. type: Title -
+#: git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr "Configuration"
+
+#
+#. type: Plain text
+#: git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+"Le paramètre de configuration optionnel `core.excludesFile` indique un "
+"chemin vers un fichier contenant les patrons des noms de fichier à exclure "
+"de git-add, similaire à $GIT_DIR/info/exclude. Les patrons dans le fichier "
+"d'exclusion sont additionnés à ceux de info/exclude. Référez-vous à linkgit:"
+"gitignore[5]."
+
+#. type: Title -
+#: git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "EXEMPLES"
+
+#
+#. type: Plain text
+#: git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+"Ajouter le contenu de tous le fichiers `*.txt` sous le répertoire "
+"`Documentation` et ses sous répertoires."
+
+#. type: delimited block -
+#: git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr "$ git add Documentation/\\*.txt\n"
+
+#
+#. type: Plain text
+#: git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+"Remarquez que l'astérisque `*` est échappé du shell dans cet exemple ; cela "
+"permet d'inclure les fichiers dans les sous-répertoires du Répertoire "
+"`Documentation/`."
+
+#
+#. type: Plain text
+#: git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr "Ajouter le contenu de tous les scripts git-*.sh :"
+
+#. type: delimited block -
+#: git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr "$ git add git-*.sh\n"
+
+#
+#. type: Plain text
+#: git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+"Comme cet exemple laisse le shell réaliser l'expansion de l'astérisque "
+"(c'est-à-dire que vous listez explicitement les fichiers du répertoire), il "
+"ne traite pas `subdir/git-foo.sh`."
+
+#. type: Title -
+#: git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr "Mode interactif"
+
+#
+#. type: Plain text
+#: git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+"Quand la commande entre en mode interactif, elle affiche le résultat de la "
+"sous-commande 'status', puis entre en boucle de commande interactive."
+
+#
+#. type: Plain text
+#: git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+"La boucle de commande affiche la liste des sous-commandes disponibles et "
+"affiche le prompt \"What now>\" (Que faire maintenant). En général, lorsque "
+"le prompt se termine par un '>' unique, vous ne pouvez choisir qu'une seule "
+"des propositions et appuyer Entrée, comme cela :"
+
+#. type: delimited block -
+#: git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+
+#
+#. type: Plain text
+#: git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+"Vous pouvez indiquer `s` ou `sta` ou `status` dans le cas si dessus, à "
+"condition que le choix soit unique."
+
+#
+#. type: Plain text
+#: git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+"La boucle de commande principale propose 6 sous-commandes (plus help (aide)  "
+"et quit (quitter))."
+
+#. type: Labeled list
+#: git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr "status"
+
+#
+#. type: Plain text
+#: git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+"Affiche les modifications entre HEAD et l'index (c-à-d ce qui serait validé "
+"si vous lanciez `git commit`), et entre l'index et les fichiers de la copie "
+"de travail (c-à-d ce que vous pourriez indexer au moyen de `git add` avant "
+"de lancer `git commit`) pour chaque chemin. Un exemple d'affichage ressemble "
+"à ceci :"
+
+#. type: delimited block -
+#: git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, git-"
+"add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if you "
+"commit what is in the index, but working tree file has further modifications "
+"(one addition and one deletion)."
+msgstr ""
+"foo.png contient de différences avec HEAD (mais c'est un format binaire donc "
+"le nombre de lignes ne peut pas être affiché) et il n'y a pas différence "
+"entre la copie indexée et la copie de travail (si la copie de travail avait "
+"été aussi différente, 'binary' aurait été affiché à la place de 'nothing'). "
+"L'autre fichier, git-add{litdd}interactive.perl, a 430 lignes ajoutées et 35 "
+"effacées si vous validez ce qui est dans l'index, mais la copie de travail "
+"contient d'autres modifications (un ajout et un retrait)."
+
+#. type: Labeled list
+#: git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr "update"
+
+#
+#. type: Plain text
+#: git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+"Affiche l'information d'état et un prompt \"Update>>\". Quand le prompt se "
+"termine par un double '>', vous pouvez sélectionner plus d'une option, "
+"concaténées avec des espaces ou des virgules. Vous pouvez aussi indiquer des "
+"intervalles.  Par exemple \"2-5 7,9\" pour choisir 2, 3, 4, 5, 7 et 9 dans "
+"la liste. Si le second nombre d'un intervalle est absent, tous les patchs "
+"restants sont sélectionnés. Par ex. \"7-\" choisit 7, 8 et 9 dans la liste. "
+"'*' permet de tout sélectionner."
+
+#
+#. type: Plain text
+#: git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr "Tout ce qui a été sélectionné est indiqué par une '*', comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr "Pour retirer une sélection, préfixez-la avec `-` comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr "Update>> -2\n"
+
+#
+#. type: Plain text
+#: git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+"Après sélection, répondez avec une ligne vide pour indexer le contenu des "
+"fichiers sélectionnés de la copie de travail."
+
+#. type: Labeled list
+#: git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr "revert"
+
+#
+#. type: Plain text
+#: git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+"Ceci présente une interface d'utilisation similaire à 'update', et le "
+"contenu indexé des chemins sélectionnés sont ramenés à la version HEAD. "
+"Inverser des chemins nouveau les rend non-suivis."
+
+#. type: Labeled list
+#: git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr "add untracked"
+
+#
+#. type: Plain text
+#: git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+"Ceci présente une interface d'utilisation très similaire à 'update' et "
+"'revert' et permet d'ajouter des chemins non-suivis à l'index."
+
+#. type: Labeled list
+#: git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr "patch"
+
+#
+#. type: Plain text
+#: git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+"Ceci permet de choisir un chemin depuis une sélection similaire à 'status'. "
+"Après le choix du chemin, la différence entre l'index et le fichier dans "
+"l'arbre de travail est présenté et vous demande si vous souhaiter indexer "
+"chaque section de modification. Vous pouvez sélectionner une des options "
+"suivantes et taper entréé :"
+
+#
+#. type: Plain text
+#: git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+"y - indexer cette section\n"
+"n - ne pas indexer cette section\n"
+"q - quitter ; ne pas indexer cette section ni les autres restantes\n"
+"a - indexer cette section et toutes les suivantes de ce fichier\n"
+"d - ne pas indexer cette section ni les suivantes de ce fichier\n"
+"g - selectionner une section et s'y rendre\n"
+"/ - rechercher une section correspondant à une regex donnée\n"
+"j - laisser cette section non décidée et aller à la suivante non-décidée\n"
+"J - laisser cette section non décidée et aller à la suivante\n"
+"k - laisser cette section non décidée et aller à la précédente non-décidée\n"
+"K - laisser cette section non décidée et aller à la précédente\n"
+"s - découper la section en sections plus petites\n"
+"e - éditer manuellement la section actuelle\n"
+"? - afficher l'aide\n"
+
+#
+#. type: Plain text
+#: git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+"Après avoir décidé du devenir de chaque section, l'index est mis à jour avec "
+"les sections sélectionnées."
+
+#
+#. type: Plain text
+#: git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+"Vous pouvez vous éviter de taper entrée ici, en mettant la variable de "
+"configuration `interactive.singlekey` à `true`."
+
+#. type: Labeled list
+#: git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr "diff"
+
+#
+#. type: Plain text
+#: git-add.txt:332
+msgid ""
+"This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+"Ceci permet de faire une revue de ce qui sera validé (c'est une différence "
+"entre HEAD et index)."
+
+#. type: Title -
+#: git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr "EDITER LES PATCHES"
+
+#
+#. type: Plain text
+#: git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+"Invoquer `git add -e` ou selectionner `e` depuis le sélecteur interactif de "
+"sections ouvre un patch dans votre éditeur ; après avoir quitté l'éditeur, "
+"le résultat est appliqué à l'index. Vous êtes libre de modifier en tout "
+"point le patch, mais notez cependant que certaines modifications provoquent "
+"des résultats inattendus ou même créent des patchs inapplicables. Si vous "
+"souhaitez abandonner complètement l'opération (c'est-à-dire ne rien ajouter "
+"à l'index), effacez toutes les lignes du patch. La liste ci-dessous décrit "
+"des formes habituelles dans les patchs et quelles opérations d'édition "
+"peuvent être réalisées."
+
+#. type: Labeled list
+#: git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr "contenu ajouté"
+
+#
+#. type: Plain text
+#: git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+"Le contenu ajouté est représentés par des lignes commençant par un "
+"\"{plus}\". Vous pouvez empêcher l'indexation de lignes ajoutées en les "
+"supprimant."
+
+#. type: Labeled list
+#: git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr "contenu supprimé"
+
+#
+#. type: Plain text
+#: git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+"Le contenu supprimé est représenté par des lignes commençant par \"-\". Vous "
+"pouvez empêcher l'indexation de ces suppression en convertissant le \"-\" en "
+"\" \" (espace)."
+
+#. type: Labeled list
+#: git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr "contenu modifié"
+
+#
+#. type: Plain text
+#: git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+"Le contenu modifié est représenté par des lignes \"-\" (supprimant l'ancien "
+"contenu) suivies de lignes \"{plus}\" (ajoutant le nouveau contenu). Vous "
+"pouvez empêcher l'indexation de ces modifications en convertissant les "
+"lignes \"_\" en ligne \" \" et en supprimant les lignes \"{plus}\". Méfiez-"
+"vous : ne modifier que la moitié de la paire de lignes a de fortes chances "
+"de créer des modifications inattendues dans l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+"Il existe aussi des opérations plus complexes. Méfiez-vous : quand le patch "
+"n'est appliqué que dans l'index et pas dans l'arbre de travail, l'arbre de "
+"travail semblera « défaire » les modifications de l'index. Par exemple, "
+"l'introduction dans l'index d'une nouvelle ligne qui n'apparait ni dans HEAD "
+"ni dans l'arbre de travail indexera la nouvelle ligne pour validation, mais "
+"cette ligne semblera être supprimée dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+"Évitez d'utiliser ces constructions, ou faites le avec une extrême "
+"précaution."
+
+#. type: Labeled list
+#: git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr "suppression de contenu intact"
+
+#
+#. type: Plain text
+#: git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+"Le contenu qui ne diffère pas entre l'index et l'arbre de travail peut être "
+"visible dans des lignes de contexte commençant par un \" \" (espace). Vous "
+"pouvez indexer l'élimination de lignes de contexte en convertissant l'espace "
+"en \"-\". Le fichier dans l'arbre de travail semblera ré-ajouter le contenu."
+
+#. type: Labeled list
+#: git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr "modification de contenu existant"
+
+#
+#. type: Plain text
+#: git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+"On peut aussi modifier le contenu de lignes de contexte en indexant leur "
+"suppression (en convertissant \" \" en \"-\") et en ajoutant dessous une "
+"ligne \"{plus}\" avec le nouveau contenu. On peut modifier des lignes "
+"\"{plus}\" dans des ajouts ou des modifications de contenu. Dans tous les "
+"cas, la nouvelle modification indexée semblera être annulée dans l'arbre de "
+"travail."
+
+#. type: Labeled list
+#: git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr "contenu nouveau"
+
+#
+#. type: Plain text
+#: git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+"Vous pouvez aussi ajouter du contenu nouveau qui n'existe pas dans le "
+"patch ; ajoutez simplement des nouvelles lignes, chacune commençant avec "
+"\"{plus}\". L'ajout semblera annulé dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+"Il existe aussi quelques opération à éviter complètement car celles-ci "
+"rendent le patch inapplicable :"
+
+#
+#. type: Plain text
+#: git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr "ajout de context (\" \") ou lignes de suppression (\"-\")"
+
+#
+#. type: Plain text
+#: git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr "suppression de contexte ou de lignes supprimées"
+
+#
+#. type: Plain text
+#: git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr "modification de contenu de contexte ou de lignes supprimées"
+
+#. type: Title -
+#: git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#
+#. type: Plain text
+#: git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+
+#. type: Title -
+#: git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr "GIT"
+
+#
+#. type: Plain text
+#: git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr "Fait partie de la suite linkgit:git[1]"
diff --git a/Documentation/po/documentation.pot b/Documentation/po/documentation.pot
new file mode 100644
index 000000000..46c590bea
--- /dev/null
+++ b/Documentation/po/documentation.pot
@@ -0,0 +1,787 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: ./git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | "
+"-i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] "
+"[--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, "
+"git-add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if "
+"you commit what is in the index, but working tree file has further "
+"modifications (one addition and one deletion)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:332
+msgid "This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] "
+"linkgit:git-mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr ""
-- 
2.12.0


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-18 17:53 ` [PATCH v2 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
  2017-03-18 17:53   ` [PATCH v2 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
@ 2017-03-18 19:41   ` Junio C Hamano
  2017-03-18 22:17     ` Jean-Noël AVILA
  2017-03-18 23:03     ` Junio C Hamano
  1 sibling, 2 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-18 19:41 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Jean-Noel Avila <jn.avila@free.fr> writes:

> Providing git in localized version is a good step for general adoption
> of the tool. But as of now, if one needs to refer to the manual pages,
> they are still confronted to english. The aim is to provide
> documentation to users in their own language.

Please outline how the end result looks like here.  Where are the
localized man pages installed?  Do installers get to choose to build
and install the localization for some but not all languages and if
so how?  etc.

> signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

s/sign/Sign/;

> -man: man1 man5 man7
> +man: man1 man5 man7 man_l10n

Hmmm, at least in the early days of the topic, I'd prefer that "make
doc" and "make install" I need to run dozens of times a day from the
toplevel not to require po4a.

Thanks.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-18 19:41   ` [PATCH v2 1/2] l10n: Introduce framework for localizing " Junio C Hamano
@ 2017-03-18 22:17     ` Jean-Noël AVILA
  2017-03-18 23:03     ` Junio C Hamano
  1 sibling, 0 replies; 37+ messages in thread
From: Jean-Noël AVILA @ 2017-03-18 22:17 UTC (permalink / raw)
  To: git

Le samedi 18 mars 2017, 12:41:22 CET Junio C Hamano a écrit :
> Jean-Noel Avila <jn.avila@free.fr> writes:
> > Providing git in localized version is a good step for general adoption
> > of the tool. But as of now, if one needs to refer to the manual pages,
> > they are still confronted to english. The aim is to provide
> > documentation to users in their own language.
> 
> Please outline how the end result looks like here.  Where are the
> localized man pages installed?  Do installers get to choose to build
> and install the localization for some but not all languages and if
> so how?  etc.
> 
> > signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
> 
> s/sign/Sign/;
> 
> > -man: man1 man5 man7
> > +man: man1 man5 man7 man_l10n
> 
> Hmmm, at least in the early days of the topic, I'd prefer that "make
> doc" and "make install" I need to run dozens of times a day from the
> toplevel not to require po4a.
> 
> Thanks.

Fair enough. 

Anyway, now I see  there's a take away from the discussion thread. Right now 
the man pages are tagged with the actual version of git, because the 
documentation is supposed to change at the same pace as the code. But that may 
not be true for translations, In this case, the automatic running of po4a will 
generate fuzzy matches which are not going to be used in the translated texts, 
leading to patchworked manpages, depending on the level of acceptance of 
untranslated entities.

If we want to freeze the translated manpages at a given version of git until a 
new version of the manpages is fully translated, we'll have to commit the 
translated .txt and force in some way the version to freeze (not using the 
generic asciidoc target of the Makefile).  But, that may drag the version of 
translations far behind the original if translation is stalled.

Or maybe people will not be so upset by mixed language manpages when the 
translation is lagging, but will prefer to have a "best available translation" 
of up-to-date pages. Plus that would be managed automatically by po4a's level 
of translation threshold to effectively generate a translated man page as long 
as the untranslated parts are still sparse in the mixed-up text.

For now, I keep this last option.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-18 19:41   ` [PATCH v2 1/2] l10n: Introduce framework for localizing " Junio C Hamano
  2017-03-18 22:17     ` Jean-Noël AVILA
@ 2017-03-18 23:03     ` Junio C Hamano
  2017-03-20  2:11       ` Junio C Hamano
  1 sibling, 1 reply; 37+ messages in thread
From: Junio C Hamano @ 2017-03-18 23:03 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Jean-Noel Avila <jn.avila@free.fr> writes:
>
>> Providing git in localized version is a good step for general adoption
>> of the tool. But as of now, if one needs to refer to the manual pages,
>> they are still confronted to english. The aim is to provide
>> documentation to users in their own language.
>
> Please outline how the end result looks like here.  Where are the
> localized man pages installed?  Do installers get to choose to build
> and install the localization for some but not all languages and if
> so how?  etc.
>
>> signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
>
> s/sign/Sign/;
>
>> -man: man1 man5 man7
>> +man: man1 man5 man7 man_l10n
>
> Hmmm, at least in the early days of the topic, I'd prefer that "make
> doc" and "make install" I need to run dozens of times a day from the
> toplevel not to require po4a.
>
> Thanks.

Travis seems to have failed.  Perhaps something like this is needed,
at least?

 .travis.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.travis.yml b/.travis.yml
index 591cc57b80..719e5cdb00 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,6 +20,7 @@ addons:
     - language-pack-is
     - git-svn
     - apache2
+    - po4a
 
 env:
   global:

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-18 23:03     ` Junio C Hamano
@ 2017-03-20  2:11       ` Junio C Hamano
  2017-03-20  8:10         ` Jean-Noël Avila
  0 siblings, 1 reply; 37+ messages in thread
From: Junio C Hamano @ 2017-03-20  2:11 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Travis seems to have failed.  Perhaps something like this is needed,
> at least?
>
>  .travis.yml | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/.travis.yml b/.travis.yml
> index 591cc57b80..719e5cdb00 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -20,6 +20,7 @@ addons:
>      - language-pack-is
>      - git-svn
>      - apache2
> +    - po4a
>  
>  env:
>    global:

Here is what I have for now on top of yours in an attempt to make it
work with the public Travis, which is still not working X-<.

  https://travis-ci.org/git/git/jobs/212839039

shows how it breaks, which is somehow different from how it does not
fail on a copy of Ubuntu I seem to be running, even though I seem to
have the same 0.41-1ubuntu1 installed).  

Can you take it over from here?

-- >8 --
Subject: [PATCH] DONTMERGE: (blind trial for travis build)

The update to INSTALL shown here is bogus, but was made only to show
where necessary information to make use of the new feature needs to
be added.

Specifically, the patches by Jean-Noel Avila requires po4a even for
those who do not want localized documentation, and what is described
in INSTALL pretends that this has already been fixed.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 .travis.yml | 1 +
 INSTALL     | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 591cc57b80..d0e1f99161 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -68,6 +68,7 @@ matrix:
           packages:
           - asciidoc
           - xmlto
+          - po4a
       before_install:
       before_script:
       script: ci/test-documentation.sh
diff --git a/INSTALL b/INSTALL
index ffb071e9f0..acfcd886df 100644
--- a/INSTALL
+++ b/INSTALL
@@ -179,7 +179,12 @@ Issues of note:
 
    All formats require at least asciidoc 8.4.1.
 
-   There are also "make quick-install-doc", "make quick-install-man"
+ - To build and install localized documentation suite, you need to
+   have the po4a package, too.  The build and install steps are the
+   same as outlined above, and the build documentation pages can be
+   accessed by doing "git help <commandname>" in your locale.
+
+ - There are also "make quick-install-doc", "make quick-install-man"
    and "make quick-install-html" which install preformatted man pages
    and html documentation. To use these build targets, you need to
    clone two separate git-htmldocs and git-manpages repositories next
-- 
2.12.0-399-g9d77b0405c


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-20  2:11       ` Junio C Hamano
@ 2017-03-20  8:10         ` Jean-Noël Avila
  2017-03-20  8:21           ` Jean-Noël AVILA
  2017-03-20 16:50           ` Junio C Hamano
  0 siblings, 2 replies; 37+ messages in thread
From: Jean-Noël Avila @ 2017-03-20  8:10 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Le 20/03/2017 à 03:11, Junio C Hamano a écrit :
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Travis seems to have failed.  Perhaps something like this is needed,
>> at least?
>>
>>  .travis.yml | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/.travis.yml b/.travis.yml
>> index 591cc57b80..719e5cdb00 100644
>> --- a/.travis.yml
>> +++ b/.travis.yml
>> @@ -20,6 +20,7 @@ addons:
>>      - language-pack-is
>>      - git-svn
>>      - apache2
>> +    - po4a
>>  
>>  env:
>>    global:
> Here is what I have for now on top of yours in an attempt to make it
> work with the public Travis, which is still not working X-<.
>
>   https://travis-ci.org/git/git/jobs/212839039
>
> shows how it breaks, which is somehow different from how it does not
> fail on a copy of Ubuntu I seem to be running, even though I seem to
> have the same 0.41-1ubuntu1 installed).  

Asciidoc support was added in 0.45, and was included Ubuntu 14.04 but is
not present in ubuntu 12.04. The latest version is 0.48.

So I guess you made your trials on 14.04. So, switching to 14.04 on
Travis would help, at least for this patch series, but that would help
much for the (close) future.

I'm trying to push for a release of a new version, because I stumbled
upon a bug on the support of include macros while extending the
translations to git-commit manpage. This bug is already fixed in master,
but no version has been published yet.


The bottom line is that using po4a brings mixed results, for now.


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-20  8:10         ` Jean-Noël Avila
@ 2017-03-20  8:21           ` Jean-Noël AVILA
  2017-03-20 16:50           ` Junio C Hamano
  1 sibling, 0 replies; 37+ messages in thread
From: Jean-Noël AVILA @ 2017-03-20  8:21 UTC (permalink / raw)
  To: Jean-Noël Avila, Junio C Hamano; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 277 bytes --]

Le 20/03/2017 à 09:10, Jean-Noël Avila a écrit :

> So I guess you made your trials on 14.04. So, switching to 14.04 on
> Travis would help, at least for this patch series, but that would help
> much for the (close) future.

 that *would not* help much for the (close) future.

[-- Attachment #2: jean-noel_avila.vcf --]
[-- Type: text/x-vcard, Size: 419 bytes --]

begin:vcard
fn;quoted-printable:Jean-No=C3=ABl AVILA
n;quoted-printable:AVILA;Jean-No=C3=ABl
org:SCANTECH FRANCE
adr;quoted-printable:Savoie Technolac, BP244;;34, All=C3=A9e du Lac d'Aiguebelette;Le Bourget du Lac;;73374;FRANCE
email;internet:jean-noel.avila@scantech.fr
title:Embedded Systems Manager
tel;work:+33 479265450
tel;cell:+33 633046418
x-mozilla-html:FALSE
url:http://www.scantech.fr
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v2 1/2] l10n: Introduce framework for localizing man pages
  2017-03-20  8:10         ` Jean-Noël Avila
  2017-03-20  8:21           ` Jean-Noël AVILA
@ 2017-03-20 16:50           ` Junio C Hamano
  1 sibling, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-20 16:50 UTC (permalink / raw)
  To: Jean-Noël Avila; +Cc: git

Jean-Noël Avila <jn.avila@free.fr> writes:

> Asciidoc support was added in 0.45, and was included Ubuntu 14.04 but is
> not present in ubuntu 12.04. The latest version is 0.48.
>
> So I guess you made your trials on 14.04. So, switching to 14.04 on
> Travis would help, at least for this patch series, but that would help
> much for the (close) future.
>
> I'm trying to push for a release of a new version, because I stumbled
> upon a bug on the support of include macros while extending the
> translations to git-commit manpage. This bug is already fixed in master,
> but no version has been published yet.
>
> The bottom line is that using po4a brings mixed results, for now.

Thanks for digging.  

Because people find it inconvenient to leave the tip of 'pu' left in
a state that does not pass the standard test suite for too long, I'm
planning to eject the topic from 'pu' for now; if I find time to do
so, I may try to remove the localized documentation from the default
"make doc" target myself instead though.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Rework manpage localisation
  2017-03-12 20:02 [PATCH] l10n: add framework for localizing the manpages Jean-Noel Avila
  2017-03-12 20:02 ` Jean-Noel Avila
  2017-03-18 17:53 ` [PATCH v2 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
@ 2017-03-20 21:02 ` Jean-Noel Avila
  2017-03-20 21:02   ` [PATCH v3 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
  2017-03-20 21:02   ` [PATCH v3 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
  2 siblings, 2 replies; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-20 21:02 UTC (permalink / raw)
  To: git

The patch series has been reworked to remove the manpage localization
task from the main documentation task. The Travis build should be back
to normal, while still retaining the capability to generate localized
man pages.

Right now, there are some limitations with the version of po4a
provided by most linux distributions, so there is a great chance that
the install-man-l10n won't work on most systems.



^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v3 1/2] l10n: Introduce framework for localizing man pages
  2017-03-20 21:02 ` Rework manpage localisation Jean-Noel Avila
@ 2017-03-20 21:02   ` Jean-Noel Avila
  2017-03-21 18:09     ` Junio C Hamano
  2017-03-20 21:02   ` [PATCH v3 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
  1 sibling, 1 reply; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-20 21:02 UTC (permalink / raw)
  To: git; +Cc: Jean-Noel Avila

Providing git in localized version is a good step for general adoption
of the tool. But as of now, if one needs to refer to the manual pages,
they are still confronted to english. The aim is to provide
documentation to users in their own language.

The translation of the source asciidoc files is managed via po4a
driven by the conf file Documentation/po4a.conf.

Only the manpages are generated and installed by using the
`install-man-l10n` target of the Makefile. The localized manpages for
all the translated languages are installed in the man path in their
own language folder, so that they can be accessed by man.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/Makefile  | 21 ++++++++++++++++++++-
 Documentation/po4a.conf |  5 +++++
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/po4a.conf

diff --git a/Documentation/Makefile b/Documentation/Makefile
index b5be2e2d3..e721c7149 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,4 +1,5 @@
 # Guard against environment variables
+MAN1_L10N_TXT =
 MAN1_TXT =
 MAN5_TXT =
 MAN7_TXT =
@@ -10,6 +11,7 @@ OBSOLETE_HTML =
 MAN1_TXT += $(filter-out \
 		$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
 		$(wildcard git-*.txt))
+MAN1_L10N_TXT += $(wildcard po/*/man1/git-*.txt)
 MAN1_TXT += git.txt
 MAN1_TXT += gitk.txt
 MAN1_TXT += gitremote-helpers.txt
@@ -86,6 +88,7 @@ DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
 DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
 DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
 DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
+DOC_MAN1_L10N = $(patsubst %.txt,%.1,$(MAN1_L10N_TXT))
 
 prefix ?= $(HOME)
 bindir ?= $(prefix)/bin
@@ -209,6 +212,7 @@ endif
 
 ifneq ($(findstring $(MAKEFLAGS),s),s)
 ifndef V
+	QUIET_PO4A      = @echo '   ' PO4A $@;
 	QUIET_ASCIIDOC	= @echo '   ' ASCIIDOC $@;
 	QUIET_XMLTO	= @echo '   ' XMLTO $@;
 	QUIET_DB2TEXI	= @echo '   ' DB2TEXI $@;
@@ -234,6 +238,15 @@ man1: $(DOC_MAN1)
 man5: $(DOC_MAN5)
 man7: $(DOC_MAN7)
 
+man_l10n: po4a man1_p_l10n
+po4a: po4a.conf
+	$(QUIET_PO4A)po4a po4a.conf
+
+man1_p_l10n: po4a
+	$(MAKE) man1_l10n
+
+man1_l10n: $(DOC_MAN1_L10N)
+
 info: git.info gitman.info
 
 pdf: user-manual.pdf
@@ -247,6 +260,11 @@ install-man: man
 	$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
 	$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
 	$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
+	$(MAKE) install-man-l10n
+
+install-man-l10n: $(DOC_MAN1_L10N)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(mandir)/$(firstword $(subst /man1/, ,$(subst po/,,$<)))/man1
+	$(INSTALL) -m 644 $< $(DESTDIR)$(mandir)$(subst po,,$<)
 
 install-info: info
 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
@@ -323,6 +341,7 @@ clean:
 	$(RM) technical/*.html technical/api-index.txt
 	$(RM) $(cmds_txt) $(mergetools_txt) *.made
 	$(RM) manpage-base-url.xsl
+	$(RM) po/*/*.1 po/*/*.txt
 
 $(MAN_HTML): %.html : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@@ -339,7 +358,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
 
 %.1 %.5 %.7 : %.xml manpage-base-url.xsl
 	$(QUIET_XMLTO)$(RM) $@ && \
-	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) -o $(dir $<) man $<
 
 %.xml : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
diff --git a/Documentation/po4a.conf b/Documentation/po4a.conf
new file mode 100644
index 000000000..b6ee8b4a6
--- /dev/null
+++ b/Documentation/po4a.conf
@@ -0,0 +1,5 @@
+[po4a_langs] fr
+[po4a_paths] po/documentation.pot $lang:po/documentation.$lang.po
+[options] opt: " -k 80"
+
+[type: asciidoc] ./git-add.txt $lang:./po/$lang/man1/git-add.txt
-- 
2.12.0


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-20 21:02 ` Rework manpage localisation Jean-Noel Avila
  2017-03-20 21:02   ` [PATCH v3 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
@ 2017-03-20 21:02   ` Jean-Noel Avila
  2017-03-20 22:05     ` Junio C Hamano
  1 sibling, 1 reply; 37+ messages in thread
From: Jean-Noel Avila @ 2017-03-20 21:02 UTC (permalink / raw)
  To: git; +Cc: Jean-Noel Avila

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/po/documentation.fr.po | 1095 ++++++++++++++++++++++++++++++++++
 Documentation/po/documentation.pot   |  787 ++++++++++++++++++++++++
 2 files changed, 1882 insertions(+)
 create mode 100644 Documentation/po/documentation.fr.po
 create mode 100644 Documentation/po/documentation.pot

diff --git a/Documentation/po/documentation.fr.po b/Documentation/po/documentation.fr.po
new file mode 100644
index 000000000..3017da0c9
--- /dev/null
+++ b/Documentation/po/documentation.fr.po
@@ -0,0 +1,1095 @@
+# French translations for Git Manual Pages.
+# Copyright (C) 2017 Jean-Noël Avila <jn.avila@free.fr>
+# This file is distributed under the same license as the Git package.
+# Jean-Noël Avila <jn.avila@free.fr>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: git documentation\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: 2017-03-15 21:42+0100\n"
+"Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr "git-add(1)"
+
+#. type: Title -
+#: git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#
+#. type: Plain text
+#: git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr "git-add - Ajoute le contenu de fichiers à l'index"
+
+#. type: Title -
+#: git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<spécification de chemin>...]\n"
+
+#. type: Title -
+#: git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#
+#. type: Plain text
+#: git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+"Cette commande met à jour l'index en utilisant le contenu actuel trouvé dans "
+"la copie de travail, pour préparer le contenu de la prochaine validation. "
+"Typiquement, elle ajoute intégralement le contenu actuel des chemins "
+"existant, mais peut aussi n'ajouter que certaines parties des modifications "
+"au moyen d'options ou soustraire certains chemins qui n'existent plus dans "
+"la copie de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+"L'« index » contient un instantané du contenu de la copie de travail et "
+"c'est cet instantané qui sera utilisé comme contenu du prochain commit.  "
+"Ainsi, après avoir réalisé des modifications dans la copie de travail, et "
+"avant de lancer la commande commit, vous devez utiliser la commande `add` "
+"pour ajouter tout fichier nouveau ou modifié à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+"Cette commande peut être effectuée plusieurs fois avant la validation.  Elle "
+"n'ajoute que le contenu des fichiers spécifiés au moment où la commande "
+"`add` est lancée ; si vous souhaitez inclure des modifications postérieures "
+"à un `add` dans la prochaine validation, vous devez alors lancer `git add` à "
+"nouveau pour ajouter le nouveau contenu à l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+"La commande `git status` permet d'obtenir un résumé des fichiers modifiés "
+"qui sont préparés pour la prochaine validation."
+
+#
+#. type: Plain text
+#: git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+"Par défaut, la commande `git add` n'ajoute pas les fichiers ignorés.  Si des "
+"fichiers ignorés sont spécifiés explicitement en ligne de commande, `git "
+"add` échouera avec la liste des fichiers ignorés. Les fichiers ignorés "
+"atteint via la récursion de répertoires ou les patrons de fichiers gérés par "
+"Git (les patrons doivent alors être échappés du shell par des quotes)  "
+"seront ignorés silencieusement. La commande `git add` peut tout de même "
+"ajouter des fichiers ignorés avec l'option `-f` (force)."
+
+#
+#. type: Plain text
+#: git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+"Référez-vous linkgit:git-commit[1] pour des méthodes alternatives d'ajout de "
+"contenu à une validation."
+
+#. type: Title -
+#: git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONS"
+
+#. type: Plain text
+#: git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+"<chemin>...::\n"
+"\tFichiers dont le contenu doit être ajouté. Les patrons (ex : `*.c`)\n"
+"\tpermettent de restreindre à tous le fichiers correspondant. Un\n"
+"\tnom de répertoire (ex : `rep` pour ajouter `rep/fichier1` et\n"
+"\t`rep/fichier2`) permet d'ajouter récursivement tous les fichiers\n"
+"\td'un répertoire.\n"
+
+#. type: Plain text
+#: git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+"-n::\n"
+"--dry-run::\n"
+"\tN'ajoute pas réellement les fichiers. Montrer juste s'ils existent\n"
+"\tou seront ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+"-v::\n"
+"--verbose::\n"
+"        Mode bavard.\n"
+
+#. type: Plain text
+#: git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+"-f::\n"
+"--force::\n"
+"\tForce l'ajout de fichiers qui sont normalement ignorés.\n"
+
+#. type: Plain text
+#: git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+"-i::\n"
+"--interactive::\n"
+"\tAjoute le contenu modifié dans l'arbre de travail à l'index\n"
+"\tde manière interactive. Les arguments optionnels de chemin \n"
+"\tpermettent de limiter les opérations à un sous-ensemble de la\n"
+"\tcopie de travail. Référez-vous à « Mode interactif » pour plus\n"
+"\tde détails.\n"
+
+#. type: Plain text
+#: git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+"-p::\n"
+"--patch::\n"
+"\tChoisit de manière interactive les sections de patch entre l'index\n"
+"\tet la copie de travail et les ajouter à l'index. Cela permet à\n"
+"\tl'utilisateur de réviser les différences avec d'ajouter le contenu\n"
+"\tmodifié à l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+"Cela lance effectivement `add --interactive` mais court-circuite\n"
+"le menu initial et saute directement à la sous-commande `patch`.\n"
+"Référez-vous à ``Mode interactif'' pour plus de détails.\n"
+
+#. type: Plain text
+#: git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+"-e::\n"
+"--edit::\n"
+"\tOuvre les différences avec l'index dans un éditeur et laisser\n"
+"\tl'utilisateur les éditer. Après la fermeture de l'éditeur, ajuster\n"
+"\tles entêtes de sections et appliquer le patch dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+"L'objectif de cette option est de permettre de choisir et retenir les\n"
+"lignes du patch à appliquer, ou même de modifier le contenu des lignes\n"
+"à indexer. Cela peut être plus rapide et plus flexible que l'utilisation\n"
+"du sélecteur interactif. Cependant, il plus facile de se \n"
+"tromper et de créer un patch qui ne s'applique pas. Référez-vous à\n"
+"ÉDITER LES PATCHS ci-dessous.\n"
+
+#. type: Plain text
+#: git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+"-u::\n"
+"--update::\n"
+"\tMet à jour l'index sur les seuls fichiers déjà présents et\n"
+"\tcorrespondant à <chemin>. Cela retire ou modifie les entrées\n"
+"\td'index pour correspondre à la copie de travail, mais n'ajoute\n"
+"\tpas de fichier.\n"
+
+#. type: Plain text
+#: git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié, quand l'option `-u` est utilisée,\n"
+"tous les fichiers suivis dans la totalité de la copie de travail sont\n"
+"mis à jour (les version anciennes de Git limitaient la mise à jour au\n"
+"répertoire courant et ses sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tMet à jour l'index non seulement pour tous les fichiers de\n"
+"\tla copie de travail correspondant à <chemin> mais aussi pour\n"
+"\ttoutes les entrées existant déjà dans l'index. Ceci ajoute,\n"
+"\tmodifie et retire des entrées d'index pour correspondre à\n"
+"\tla copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+"Si aucun <chemin> n'est spécifié quand l'option `-A` est utilisée,\n"
+"tous le fichiers de l'arbre de travail sont mis à jour (les versions\n"
+"anciennes de Git utilisaient le répertoire courant et ses\n"
+"sous-répertoires).\n"
+
+#. type: Plain text
+#: git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tMet à jour l'index en ajoutant dans l'index les nouveaux\n"
+"\tfichiers qui sont inconnus et les fichiers modifiés dans la\n"
+"\tcopie de travail, mais ignore les fichiers qui ont été\n"
+"\teffacés de la copie de travail. Cette option ne fait rien\n"
+"\tquand aucun <chemin> n'est utilisé.\n"
+
+#. type: Plain text
+#: git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+"Cette option sert principalement à aider les utilisateurs de versions\n"
+"anciennes de Git pour lesquels « git add <chemin>... » était synonyme\n"
+"de « git add --no-all <chemin>... », c'est-à-dire qui ignorait les\n"
+"fichiers effacés.\n"
+
+#. type: Plain text
+#: git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tN'enregistre que le fait que le chemin sera ajouté plus tard. Une\n"
+"\tentrée pour le chemin est placée en index sans contenu. C'est\n"
+"\tparticulièrement utile pour, entre autres choses, montrer le\n"
+"\tcontenu non indexé de ces fichiers avec `git diff` et les valider\n"
+"\tavec `git commit -a`.\n"
+
+#. type: Plain text
+#: git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+"--refresh::\n"
+"\tN'ajoute pas les fichiers mais rafraîchit seulement leur\n"
+"\tinformation de stat() dans l'index.\n"
+
+#. type: Plain text
+#: git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+"--ignore-errors::\n"
+"\tSi des fichiers n'ont pu être ajoutés à cause d'erreurs lors\n"
+"\tde leur indexation, n'annule pas l'opération mais continue\n"
+"\tl'ajout des autres fichiers. La commande se terminera tout de\n"
+"\tmême avec un code d'erreur non nul. Le paramètre\n"
+"\tde configuration `add.ignoreErrors` peut être positionné à\n"
+"\ttrue pour que ce comportement soit celui par défaut.\n"
+
+#. type: Plain text
+#: git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+"--ignore-missing::\n"
+"\tCette option ne peut être utilisée que couplée avec --dry-run.\n"
+"\tL'utilisation de cette option permet à l'utilisateur de vérifier\n"
+"\tsi un des fichiers indiqués serait ignoré, qu'il soit présent\n"
+"\tou non dans la copie de travail.\n"
+
+#. type: Plain text
+#: git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+"--chmod=(+|-)x::\n"
+"\tForce le bit exécutable des fichiers ajoutés. Le bit\n"
+"\texécutable n'est modifié que dans l'index, les fichiers de la\n"
+"\tcopie de travail ne sont pas modifiés.\n"
+
+#. type: Plain text
+#: git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+"\\--::\n"
+"\tCette option permet de séparer les options de la ligne de commande\n"
+"\tde la liste des fichiers (utile si certains noms de fichiers\n"
+"\tpeuvent être confondus avec des options).\n"
+
+#. type: Title -
+#: git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr "Configuration"
+
+#
+#. type: Plain text
+#: git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+"Le paramètre de configuration optionnel `core.excludesFile` indique un "
+"chemin vers un fichier contenant les patrons des noms de fichier à exclure "
+"de git-add, similaire à $GIT_DIR/info/exclude. Les patrons dans le fichier "
+"d'exclusion sont additionnés à ceux de info/exclude. Référez-vous à linkgit:"
+"gitignore[5]."
+
+#. type: Title -
+#: git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "EXEMPLES"
+
+#
+#. type: Plain text
+#: git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+"Ajouter le contenu de tous le fichiers `*.txt` sous le répertoire "
+"`Documentation` et ses sous répertoires."
+
+#. type: delimited block -
+#: git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr "$ git add Documentation/\\*.txt\n"
+
+#
+#. type: Plain text
+#: git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+"Remarquez que l'astérisque `*` est échappé du shell dans cet exemple ; cela "
+"permet d'inclure les fichiers dans les sous-répertoires du Répertoire "
+"`Documentation/`."
+
+#
+#. type: Plain text
+#: git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr "Ajouter le contenu de tous les scripts git-*.sh :"
+
+#. type: delimited block -
+#: git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr "$ git add git-*.sh\n"
+
+#
+#. type: Plain text
+#: git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+"Comme cet exemple laisse le shell réaliser l'expansion de l'astérisque "
+"(c'est-à-dire que vous listez explicitement les fichiers du répertoire), il "
+"ne traite pas `subdir/git-foo.sh`."
+
+#. type: Title -
+#: git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr "Mode interactif"
+
+#
+#. type: Plain text
+#: git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+"Quand la commande entre en mode interactif, elle affiche le résultat de la "
+"sous-commande 'status', puis entre en boucle de commande interactive."
+
+#
+#. type: Plain text
+#: git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+"La boucle de commande affiche la liste des sous-commandes disponibles et "
+"affiche le prompt \"What now>\" (Que faire maintenant). En général, lorsque "
+"le prompt se termine par un '>' unique, vous ne pouvez choisir qu'une seule "
+"des propositions et appuyer Entrée, comme cela :"
+
+#. type: delimited block -
+#: git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+
+#
+#. type: Plain text
+#: git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+"Vous pouvez indiquer `s` ou `sta` ou `status` dans le cas si dessus, à "
+"condition que le choix soit unique."
+
+#
+#. type: Plain text
+#: git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+"La boucle de commande principale propose 6 sous-commandes (plus help (aide)  "
+"et quit (quitter))."
+
+#. type: Labeled list
+#: git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr "status"
+
+#
+#. type: Plain text
+#: git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+"Affiche les modifications entre HEAD et l'index (c-à-d ce qui serait validé "
+"si vous lanciez `git commit`), et entre l'index et les fichiers de la copie "
+"de travail (c-à-d ce que vous pourriez indexer au moyen de `git add` avant "
+"de lancer `git commit`) pour chaque chemin. Un exemple d'affichage ressemble "
+"à ceci :"
+
+#. type: delimited block -
+#: git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, git-"
+"add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if you "
+"commit what is in the index, but working tree file has further modifications "
+"(one addition and one deletion)."
+msgstr ""
+"foo.png contient de différences avec HEAD (mais c'est un format binaire donc "
+"le nombre de lignes ne peut pas être affiché) et il n'y a pas différence "
+"entre la copie indexée et la copie de travail (si la copie de travail avait "
+"été aussi différente, 'binary' aurait été affiché à la place de 'nothing'). "
+"L'autre fichier, git-add{litdd}interactive.perl, a 430 lignes ajoutées et 35 "
+"effacées si vous validez ce qui est dans l'index, mais la copie de travail "
+"contient d'autres modifications (un ajout et un retrait)."
+
+#. type: Labeled list
+#: git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr "update"
+
+#
+#. type: Plain text
+#: git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+"Affiche l'information d'état et un prompt \"Update>>\". Quand le prompt se "
+"termine par un double '>', vous pouvez sélectionner plus d'une option, "
+"concaténées avec des espaces ou des virgules. Vous pouvez aussi indiquer des "
+"intervalles.  Par exemple \"2-5 7,9\" pour choisir 2, 3, 4, 5, 7 et 9 dans "
+"la liste. Si le second nombre d'un intervalle est absent, tous les patchs "
+"restants sont sélectionnés. Par ex. \"7-\" choisit 7, 8 et 9 dans la liste. "
+"'*' permet de tout sélectionner."
+
+#
+#. type: Plain text
+#: git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr "Tout ce qui a été sélectionné est indiqué par une '*', comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+
+#
+#. type: Plain text
+#: git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr "Pour retirer une sélection, préfixez-la avec `-` comme ceci :"
+
+#. type: delimited block -
+#: git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr "Update>> -2\n"
+
+#
+#. type: Plain text
+#: git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+"Après sélection, répondez avec une ligne vide pour indexer le contenu des "
+"fichiers sélectionnés de la copie de travail."
+
+#. type: Labeled list
+#: git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr "revert"
+
+#
+#. type: Plain text
+#: git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+"Ceci présente une interface d'utilisation similaire à 'update', et le "
+"contenu indexé des chemins sélectionnés sont ramenés à la version HEAD. "
+"Inverser des chemins nouveau les rend non-suivis."
+
+#. type: Labeled list
+#: git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr "add untracked"
+
+#
+#. type: Plain text
+#: git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+"Ceci présente une interface d'utilisation très similaire à 'update' et "
+"'revert' et permet d'ajouter des chemins non-suivis à l'index."
+
+#. type: Labeled list
+#: git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr "patch"
+
+#
+#. type: Plain text
+#: git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+"Ceci permet de choisir un chemin depuis une sélection similaire à 'status'. "
+"Après le choix du chemin, la différence entre l'index et le fichier dans "
+"l'arbre de travail est présenté et vous demande si vous souhaiter indexer "
+"chaque section de modification. Vous pouvez sélectionner une des options "
+"suivantes et taper entréé :"
+
+#
+#. type: Plain text
+#: git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+"y - indexer cette section\n"
+"n - ne pas indexer cette section\n"
+"q - quitter ; ne pas indexer cette section ni les autres restantes\n"
+"a - indexer cette section et toutes les suivantes de ce fichier\n"
+"d - ne pas indexer cette section ni les suivantes de ce fichier\n"
+"g - selectionner une section et s'y rendre\n"
+"/ - rechercher une section correspondant à une regex donnée\n"
+"j - laisser cette section non décidée et aller à la suivante non-décidée\n"
+"J - laisser cette section non décidée et aller à la suivante\n"
+"k - laisser cette section non décidée et aller à la précédente non-décidée\n"
+"K - laisser cette section non décidée et aller à la précédente\n"
+"s - découper la section en sections plus petites\n"
+"e - éditer manuellement la section actuelle\n"
+"? - afficher l'aide\n"
+
+#
+#. type: Plain text
+#: git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+"Après avoir décidé du devenir de chaque section, l'index est mis à jour avec "
+"les sections sélectionnées."
+
+#
+#. type: Plain text
+#: git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+"Vous pouvez vous éviter de taper entrée ici, en mettant la variable de "
+"configuration `interactive.singlekey` à `true`."
+
+#. type: Labeled list
+#: git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr "diff"
+
+#
+#. type: Plain text
+#: git-add.txt:332
+msgid ""
+"This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+"Ceci permet de faire une revue de ce qui sera validé (c'est une différence "
+"entre HEAD et index)."
+
+#. type: Title -
+#: git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr "EDITER LES PATCHES"
+
+#
+#. type: Plain text
+#: git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+"Invoquer `git add -e` ou selectionner `e` depuis le sélecteur interactif de "
+"sections ouvre un patch dans votre éditeur ; après avoir quitté l'éditeur, "
+"le résultat est appliqué à l'index. Vous êtes libre de modifier en tout "
+"point le patch, mais notez cependant que certaines modifications provoquent "
+"des résultats inattendus ou même créent des patchs inapplicables. Si vous "
+"souhaitez abandonner complètement l'opération (c'est-à-dire ne rien ajouter "
+"à l'index), effacez toutes les lignes du patch. La liste ci-dessous décrit "
+"des formes habituelles dans les patchs et quelles opérations d'édition "
+"peuvent être réalisées."
+
+#. type: Labeled list
+#: git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr "contenu ajouté"
+
+#
+#. type: Plain text
+#: git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+"Le contenu ajouté est représentés par des lignes commençant par un "
+"\"{plus}\". Vous pouvez empêcher l'indexation de lignes ajoutées en les "
+"supprimant."
+
+#. type: Labeled list
+#: git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr "contenu supprimé"
+
+#
+#. type: Plain text
+#: git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+"Le contenu supprimé est représenté par des lignes commençant par \"-\". Vous "
+"pouvez empêcher l'indexation de ces suppression en convertissant le \"-\" en "
+"\" \" (espace)."
+
+#. type: Labeled list
+#: git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr "contenu modifié"
+
+#
+#. type: Plain text
+#: git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+"Le contenu modifié est représenté par des lignes \"-\" (supprimant l'ancien "
+"contenu) suivies de lignes \"{plus}\" (ajoutant le nouveau contenu). Vous "
+"pouvez empêcher l'indexation de ces modifications en convertissant les "
+"lignes \"_\" en ligne \" \" et en supprimant les lignes \"{plus}\". Méfiez-"
+"vous : ne modifier que la moitié de la paire de lignes a de fortes chances "
+"de créer des modifications inattendues dans l'index."
+
+#
+#. type: Plain text
+#: git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+"Il existe aussi des opérations plus complexes. Méfiez-vous : quand le patch "
+"n'est appliqué que dans l'index et pas dans l'arbre de travail, l'arbre de "
+"travail semblera « défaire » les modifications de l'index. Par exemple, "
+"l'introduction dans l'index d'une nouvelle ligne qui n'apparait ni dans HEAD "
+"ni dans l'arbre de travail indexera la nouvelle ligne pour validation, mais "
+"cette ligne semblera être supprimée dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+"Évitez d'utiliser ces constructions, ou faites le avec une extrême "
+"précaution."
+
+#. type: Labeled list
+#: git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr "suppression de contenu intact"
+
+#
+#. type: Plain text
+#: git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+"Le contenu qui ne diffère pas entre l'index et l'arbre de travail peut être "
+"visible dans des lignes de contexte commençant par un \" \" (espace). Vous "
+"pouvez indexer l'élimination de lignes de contexte en convertissant l'espace "
+"en \"-\". Le fichier dans l'arbre de travail semblera ré-ajouter le contenu."
+
+#. type: Labeled list
+#: git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr "modification de contenu existant"
+
+#
+#. type: Plain text
+#: git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+"On peut aussi modifier le contenu de lignes de contexte en indexant leur "
+"suppression (en convertissant \" \" en \"-\") et en ajoutant dessous une "
+"ligne \"{plus}\" avec le nouveau contenu. On peut modifier des lignes "
+"\"{plus}\" dans des ajouts ou des modifications de contenu. Dans tous les "
+"cas, la nouvelle modification indexée semblera être annulée dans l'arbre de "
+"travail."
+
+#. type: Labeled list
+#: git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr "contenu nouveau"
+
+#
+#. type: Plain text
+#: git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+"Vous pouvez aussi ajouter du contenu nouveau qui n'existe pas dans le "
+"patch ; ajoutez simplement des nouvelles lignes, chacune commençant avec "
+"\"{plus}\". L'ajout semblera annulé dans l'arbre de travail."
+
+#
+#. type: Plain text
+#: git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+"Il existe aussi quelques opération à éviter complètement car celles-ci "
+"rendent le patch inapplicable :"
+
+#
+#. type: Plain text
+#: git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr "ajout de context (\" \") ou lignes de suppression (\"-\")"
+
+#
+#. type: Plain text
+#: git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr "suppression de contexte ou de lignes supprimées"
+
+#
+#. type: Plain text
+#: git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr "modification de contenu de contexte ou de lignes supprimées"
+
+#. type: Title -
+#: git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#
+#. type: Plain text
+#: git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-"
+"mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+
+#. type: Title -
+#: git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr "GIT"
+
+#
+#. type: Plain text
+#: git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr "Fait partie de la suite linkgit:git[1]"
diff --git a/Documentation/po/documentation.pot b/Documentation/po/documentation.pot
new file mode 100644
index 000000000..46c590bea
--- /dev/null
+++ b/Documentation/po/documentation.pot
@@ -0,0 +1,787 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2017-03-03 21:18+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: ./git-add.txt:2
+#, no-wrap
+msgid "git-add(1)"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:7
+msgid "git-add - Add file contents to the index"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:9
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:15
+#, no-wrap
+msgid ""
+"'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | "
+"-i] [--patch | -p]\n"
+"\t  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]\n"
+"\t  [--intent-to-add | -N] [--refresh] [--ignore-errors] "
+"[--ignore-missing]\n"
+"\t  [--chmod=(+|-)x] [--] [<pathspec>...]\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:24
+msgid ""
+"This command updates the index using the current content found in the "
+"working tree, to prepare the content staged for the next commit.  It "
+"typically adds the current content of existing paths as a whole, but with "
+"some options it can also be used to add content with only part of the "
+"changes made to the working tree files applied, or remove paths that do not "
+"exist in the working tree anymore."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:30
+msgid ""
+"The \"index\" holds a snapshot of the content of the working tree, and it is "
+"this snapshot that is taken as the contents of the next commit.  Thus after "
+"making any changes to the working tree, and before running the commit "
+"command, you must use the `add` command to add any new or modified files to "
+"the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:35
+msgid ""
+"This command can be performed multiple times before a commit.  It only adds "
+"the content of the specified file(s) at the time the add command is run; if "
+"you want subsequent changes included in the next commit, then you must run "
+"`git add` again to add the new content to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:38
+msgid ""
+"The `git status` command can be used to obtain a summary of which files have "
+"changes that are staged for the next commit."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:45
+msgid ""
+"The `git add` command will not add ignored files by default.  If any ignored "
+"files were explicitly specified on the command line, `git add` will fail "
+"with a list of ignored files.  Ignored files reached by directory recursion "
+"or filename globbing performed by Git (quote your globs before the shell) "
+"will be silently ignored.  The 'git add' command can be used to add ignored "
+"files with the `-f` (force) option."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:48
+msgid ""
+"Please see linkgit:git-commit[1] for alternative ways to add content to a "
+"commit."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:51
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:64
+#, no-wrap
+msgid ""
+"<pathspec>...::\n"
+"\tFiles to add content from.  Fileglobs (e.g. `*.c`) can\n"
+"\tbe given to add all matching files.  Also a\n"
+"\tleading directory name (e.g. `dir` to add `dir/file1`\n"
+"\tand `dir/file2`) can be given to update the index to\n"
+"\tmatch the current state of the directory as a whole (e.g.\n"
+"\tspecifying `dir` will record not just a file `dir/file1`\n"
+"\tmodified in the working tree, a file `dir/file2` added to\n"
+"\tthe working tree, but also a file `dir/file3` removed from\n"
+"\tthe working tree.  Note that older versions of Git used\n"
+"\tto ignore removed files; use `--no-all` option if you want\n"
+"\tto add modified or new files but ignore removed\tones.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:69
+#, no-wrap
+msgid ""
+"-n::\n"
+"--dry-run::\n"
+"\tDon't actually add the file(s), just show if they exist and/or will\n"
+"\tbe ignored.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:73
+#, no-wrap
+msgid ""
+"-v::\n"
+"--verbose::\n"
+"        Be verbose.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:77
+#, no-wrap
+msgid ""
+"-f::\n"
+"--force::\n"
+"\tAllow adding otherwise ignored files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:84
+#, no-wrap
+msgid ""
+"-i::\n"
+"--interactive::\n"
+"\tAdd modified contents in the working tree interactively to\n"
+"\tthe index. Optional path arguments may be supplied to limit\n"
+"\toperation to a subset of the working tree. See ``Interactive\n"
+"\tmode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:91
+#, no-wrap
+msgid ""
+"-p::\n"
+"--patch::\n"
+"\tInteractively choose hunks of patch between the index and the\n"
+"\twork tree and add them to the index. This gives the user a chance\n"
+"\tto review the difference before adding modified contents to the\n"
+"\tindex.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:95
+#, no-wrap
+msgid ""
+"This effectively runs `add --interactive`, but bypasses the\n"
+"initial command menu and directly jumps to the `patch` subcommand.\n"
+"See ``Interactive mode'' for details.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:101
+#, no-wrap
+msgid ""
+"-e::\n"
+"--edit::\n"
+"\tOpen the diff vs. the index in an editor and let the user\n"
+"\tedit it.  After the editor was closed, adjust the hunk headers\n"
+"\tand apply the patch to the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:107
+#, no-wrap
+msgid ""
+"The intent of this option is to pick and choose lines of the patch to\n"
+"apply, or even to modify the contents of lines to be staged. This can be\n"
+"quicker and more flexible than using the interactive hunk selector.\n"
+"However, it is easy to confuse oneself and create a patch that does not\n"
+"apply to the index. See EDITING PATCHES below.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:113
+#, no-wrap
+msgid ""
+"-u::\n"
+"--update::\n"
+"\tUpdate the index just where it already has an entry matching\n"
+"\t<pathspec>.  This removes as well as modifies index entries to\n"
+"\tmatch the working tree, but adds no new files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:118
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-u` option is used, all\n"
+"tracked files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:126
+#, no-wrap
+msgid ""
+"-A::\n"
+"--all::\n"
+"--no-ignore-removal::\n"
+"\tUpdate the index not only where the working tree has a file\n"
+"\tmatching <pathspec> but also where the index already has an\n"
+"\tentry.\tThis adds, modifies, and removes index entries to\n"
+"\tmatch the working tree.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:131
+#, no-wrap
+msgid ""
+"If no <pathspec> is given when `-A` option is used, all\n"
+"files in the entire working tree are updated (old versions\n"
+"of Git used to limit the update to the current directory and its\n"
+"subdirectories).\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:138
+#, no-wrap
+msgid ""
+"--no-all::\n"
+"--ignore-removal::\n"
+"\tUpdate the index by adding new files that are unknown to the\n"
+"\tindex and files modified in the working tree, but ignore\n"
+"\tfiles that have been removed from the working tree.  This\n"
+"\toption is a no-op when no <pathspec> is used.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:142
+#, no-wrap
+msgid ""
+"This option is primarily to help users who are used to older\n"
+"versions of Git, whose \"git add <pathspec>...\" was a synonym\n"
+"for \"git add --no-all <pathspec>...\", i.e. ignored removed files.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:150
+#, no-wrap
+msgid ""
+"-N::\n"
+"--intent-to-add::\n"
+"\tRecord only the fact that the path will be added later. An entry\n"
+"\tfor the path is placed in the index with no content. This is\n"
+"\tuseful for, among other things, showing the unstaged content of\n"
+"\tsuch files with `git diff` and committing them with `git commit\n"
+"\t-a`.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:154
+#, no-wrap
+msgid ""
+"--refresh::\n"
+"\tDon't add the file(s), but only refresh their stat()\n"
+"\tinformation in the index.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:161
+#, no-wrap
+msgid ""
+"--ignore-errors::\n"
+"\tIf some files could not be added because of errors indexing\n"
+"\tthem, do not abort the operation, but continue adding the\n"
+"\tothers. The command shall still exit with non-zero status.\n"
+"\tThe configuration variable `add.ignoreErrors` can be set to\n"
+"\ttrue to make this the default behaviour.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:167
+#, no-wrap
+msgid ""
+"--ignore-missing::\n"
+"\tThis option can only be used together with --dry-run. By using\n"
+"\tthis option the user can check if any of the given files would\n"
+"\tbe ignored, no matter if they are already present in the work\n"
+"\ttree or not.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:172
+#, no-wrap
+msgid ""
+"--chmod=(+|-)x::\n"
+"\tOverride the executable bit of the added files.  The executable\n"
+"\tbit is only changed in the index, the files on disk are left\n"
+"\tunchanged.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:177
+#, no-wrap
+msgid ""
+"\\--::\n"
+"\tThis option can be used to separate command-line options from\n"
+"\tthe list of files, (useful when filenames might be mistaken\n"
+"\tfor command-line options).\n"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:180
+#, no-wrap
+msgid "Configuration"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:186
+msgid ""
+"The optional configuration variable `core.excludesFile` indicates a path to "
+"a file containing patterns of file names to exclude from git-add, similar to "
+"$GIT_DIR/info/exclude.  Patterns in the exclude file are used in addition to "
+"those in info/exclude.  See linkgit:gitignore[5]."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:189
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:193
+msgid ""
+"Adds content from all `*.txt` files under `Documentation` directory and its "
+"subdirectories:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:196
+#, no-wrap
+msgid "$ git add Documentation/\\*.txt\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:201
+msgid ""
+"Note that the asterisk `*` is quoted from the shell in this example; this "
+"lets the command include the files from subdirectories of `Documentation/` "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:203
+msgid "Considers adding content from all git-*.sh scripts:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:206
+#, no-wrap
+msgid "$ git add git-*.sh\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:211
+msgid ""
+"Because this example lets the shell expand the asterisk (i.e. you are "
+"listing the files explicitly), it does not consider `subdir/git-foo.sh`."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:213
+#, no-wrap
+msgid "Interactive mode"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:217
+msgid ""
+"When the command enters the interactive mode, it shows the output of the "
+"'status' subcommand, and then goes into its interactive command loop."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:222
+msgid ""
+"The command loop shows the list of subcommands available, and gives a prompt "
+"\"What now> \".  In general, when the prompt ends with a single '>', you can "
+"pick only one of the choices given and type return, like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:228
+#, no-wrap
+msgid ""
+"    *** Commands ***\n"
+"      1: status       2: update       3: revert       4: add untracked\n"
+"      5: patch        6: diff         7: quit         8: help\n"
+"    What now> 1\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:232
+msgid ""
+"You also could say `s` or `sta` or `status` above as long as the choice is "
+"unique."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:234
+msgid "The main command loop has 6 subcommands (plus help and quit)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:235
+#, no-wrap
+msgid "status"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:242
+msgid ""
+"This shows the change between HEAD and index (i.e. what will be committed if "
+"you say `git commit`), and between index and working tree files (i.e. what "
+"you could stage further before `git commit` using `git add`) for each path.  "
+"A sample output looks like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:247
+#, no-wrap
+msgid ""
+"              staged     unstaged path\n"
+"     1:       binary      nothing foo.png\n"
+"     2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:258
+msgid ""
+"It shows that foo.png has differences from HEAD (but that is binary so line "
+"count cannot be shown) and there is no difference between indexed copy and "
+"the working tree version (if the working tree version were also different, "
+"'binary' would have been shown in place of 'nothing').  The other file, "
+"git-add{litdd}interactive.perl, has 403 lines added and 35 lines deleted if "
+"you commit what is in the index, but working tree file has further "
+"modifications (one addition and one deletion)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:259
+#, no-wrap
+msgid "update"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:268
+msgid ""
+"This shows the status information and issues an \"Update>>\" prompt.  When "
+"the prompt ends with double '>>', you can make more than one selection, "
+"concatenated with whitespace or comma.  Also you can say ranges.  E.g. \"2-5 "
+"7,9\" to choose 2,3,4,5,7,9 from the list.  If the second number in a range "
+"is omitted, all remaining patches are taken.  E.g. \"7-\" to choose 7,8,9 "
+"from the list.  You can say '*' to choose everything."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:271
+msgid "What you chose are then highlighted with '*', like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:276
+#, no-wrap
+msgid ""
+"           staged     unstaged path\n"
+"  1:       binary      nothing foo.png\n"
+"* 2:     +403/-35        +1/-1 git-add--interactive.perl\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:280
+msgid "To remove selection, prefix the input with `-` like this:"
+msgstr ""
+
+#. type: delimited block -
+#: ./git-add.txt:283
+#, no-wrap
+msgid "Update>> -2\n"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:287
+msgid ""
+"After making the selection, answer with an empty line to stage the contents "
+"of working tree files for selected paths in the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:288
+#, no-wrap
+msgid "revert"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:293
+msgid ""
+"This has a very similar UI to 'update', and the staged information for "
+"selected paths are reverted to that of the HEAD version.  Reverting new "
+"paths makes them untracked."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:294
+#, no-wrap
+msgid "add untracked"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:298
+msgid ""
+"This has a very similar UI to 'update' and 'revert', and lets you add "
+"untracked paths to the index."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:299
+#, no-wrap
+msgid "patch"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:306
+msgid ""
+"This lets you choose one path out of a 'status' like selection.  After "
+"choosing the path, it presents the diff between the index and the working "
+"tree file and asks you if you want to stage the change of each hunk.  You "
+"can select one of the following options and type return:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:321
+msgid ""
+"y - stage this hunk n - do not stage this hunk q - quit; do not stage this "
+"hunk or any of the remaining ones a - stage this hunk and all later hunks in "
+"the file d - do not stage this hunk or any of the later hunks in the file g "
+"- select a hunk to go to / - search for a hunk matching the given regex j - "
+"leave this hunk undecided, see next undecided hunk J - leave this hunk "
+"undecided, see next hunk k - leave this hunk undecided, see previous "
+"undecided hunk K - leave this hunk undecided, see previous hunk s - split "
+"the current hunk into smaller hunks e - manually edit the current hunk ? - "
+"print help"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:324
+msgid ""
+"After deciding the fate for all hunks, if there is any hunk that was chosen, "
+"the index is updated with the selected hunks."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:327
+msgid ""
+"You can omit having to type return here, by setting the configuration "
+"variable `interactive.singleKey` to `true`."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:328
+#, no-wrap
+msgid "diff"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:332
+msgid "This lets you review what will be committed (i.e. between HEAD and index)."
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:335
+#, no-wrap
+msgid "EDITING PATCHES"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:345
+msgid ""
+"Invoking `git add -e` or selecting `e` from the interactive hunk selector "
+"will open a patch in your editor; after the editor exits, the result is "
+"applied to the index. You are free to make arbitrary changes to the patch, "
+"but note that some changes may have confusing results, or even result in a "
+"patch that cannot be applied.  If you want to abort the operation entirely "
+"(i.e., stage nothing new in the index), simply delete all lines of the "
+"patch. The list below describes some common things you may see in a patch, "
+"and which editing operations make sense on them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:347
+#, no-wrap
+msgid "added content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:351
+msgid ""
+"Added content is represented by lines beginning with \"{plus}\". You can "
+"prevent staging any addition lines by deleting them."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:352
+#, no-wrap
+msgid "removed content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:356
+msgid ""
+"Removed content is represented by lines beginning with \"-\". You can "
+"prevent staging their removal by converting the \"-\" to a \" \" (space)."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:357
+#, no-wrap
+msgid "modified content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:364
+msgid ""
+"Modified content is represented by \"-\" lines (removing the old content)  "
+"followed by \"{plus}\" lines (adding the replacement content). You can "
+"prevent staging the modification by converting \"-\" lines to \" \", and "
+"removing \"{plus}\" lines. Beware that modifying only half of the pair is "
+"likely to introduce confusing changes to the index."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:372
+msgid ""
+"There are also more complex operations that can be performed. But beware "
+"that because the patch is applied only to the index and not the working "
+"tree, the working tree will appear to \"undo\" the change in the index.  For "
+"example, introducing a new line into the index that is in neither the HEAD "
+"nor the working tree will stage the new line for commit, but the line will "
+"appear to be reverted in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:374
+msgid "Avoid using these constructs, or do so with extreme caution."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:376
+#, no-wrap
+msgid "removing untouched content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:382
+msgid ""
+"Content which does not differ between the index and working tree may be "
+"shown on context lines, beginning with a \" \" (space).  You can stage "
+"context lines for removal by converting the space to a \"-\". The resulting "
+"working tree file will appear to re-add the content."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:383
+#, no-wrap
+msgid "modifying existing content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:390
+msgid ""
+"One can also modify context lines by staging them for removal (by converting "
+"\" \" to \"-\") and adding a \"{plus}\" line with the new content.  "
+"Similarly, one can modify \"{plus}\" lines for existing additions or "
+"modifications. In all cases, the new modification will appear reverted in "
+"the working tree."
+msgstr ""
+
+#. type: Labeled list
+#: ./git-add.txt:391
+#, no-wrap
+msgid "new content"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:396
+msgid ""
+"You may also add new content that does not exist in the patch; simply add "
+"new lines, each starting with \"{plus}\". The addition will appear reverted "
+"in the working tree."
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:400
+msgid ""
+"There are also several operations which should be avoided entirely, as they "
+"will make the patch impossible to apply:"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:402
+msgid "adding context (\" \") or removal (\"-\") lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:403
+msgid "deleting context or removal lines"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:404
+msgid "modifying the contents of context or removal lines"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:406
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:413
+msgid ""
+"linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] "
+"linkgit:git-mv[1] linkgit:git-commit[1] linkgit:git-update-index[1]"
+msgstr ""
+
+#. type: Title -
+#: ./git-add.txt:415
+#, no-wrap
+msgid "GIT"
+msgstr ""
+
+#. type: Plain text
+#: ./git-add.txt:416
+msgid "Part of the linkgit:git[1] suite"
+msgstr ""
-- 
2.12.0


^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-20 21:02   ` [PATCH v3 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
@ 2017-03-20 22:05     ` Junio C Hamano
  2017-03-22 12:01       ` Jean-Noël Avila
  2017-03-24 15:58       ` Ævar Arnfjörð Bjarmason
  0 siblings, 2 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-20 22:05 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Jean-Noel Avila <jn.avila@free.fr> writes:

> Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
> ---
>  Documentation/po/documentation.fr.po | 1095 ++++++++++++++++++++++++++++++++++
>  Documentation/po/documentation.pot   |  787 ++++++++++++++++++++++++
>  2 files changed, 1882 insertions(+)
>  create mode 100644 Documentation/po/documentation.fr.po
>  create mode 100644 Documentation/po/documentation.pot

This sounds more like

Subject: l10n: add fr localization for git-add manual pages

to me.  The actual part of this patch that adds "git-add" is the
addition of Documentation/po/documentation.pot, and from that point
of view, this patch may want to be further split into two.

But more importantly, aren't we essentially adding an equivalent of

	cd Documentation && cat git-*.txt

to our codebase?

Surely we cannot avoid having a copy of all messages that are to be
translated using msgid/msgstr based approach, and we already do so
for end-user-facing in-program strings, but it just feels a bit too
much having to carry a duplicate (and slightly a stale) copy of the
entire documentation set around.  For N languages, we'll have an
equivalent for N copies of the English text, in addition to the
translated documentation.

I am wondering if Documentation/po part should be a separate
repository, with a dedicated i18n/l10n coordinator.  Would it make
it easier for (1) those who write code and doc without knowing other
languages, (2) those who update .pot and coordinate the l10n effort
for the documentation and (3) those who translate them if we keep
them in a single repository?


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 1/2] l10n: Introduce framework for localizing man pages
  2017-03-20 21:02   ` [PATCH v3 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
@ 2017-03-21 18:09     ` Junio C Hamano
  0 siblings, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-21 18:09 UTC (permalink / raw)
  To: Jean-Noel Avila; +Cc: git

Jean-Noel Avila <jn.avila@free.fr> writes:

> @@ -247,6 +260,11 @@ install-man: man
>  	$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
>  	$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
>  	$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
> +	$(MAKE) install-man-l10n

FYI.  Having this line in "install-man" target will invoke the po4a
chain when "make install-doc" is done at the toplevel, so I added a
SQUASH to remove it after queuing your two patches.

Thanks.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-20 22:05     ` Junio C Hamano
@ 2017-03-22 12:01       ` Jean-Noël Avila
  2017-03-22 18:02         ` Junio C Hamano
  2017-03-24 15:58       ` Ævar Arnfjörð Bjarmason
  1 sibling, 1 reply; 37+ messages in thread
From: Jean-Noël Avila @ 2017-03-22 12:01 UTC (permalink / raw)
  To: git

Le 20/03/2017 à 23:05, Junio C Hamano a écrit :
> Jean-Noel Avila <jn.avila@free.fr> writes:
>
>> Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
>> ---
>>  Documentation/po/documentation.fr.po | 1095 ++++++++++++++++++++++++++++++++++
>>  Documentation/po/documentation.pot   |  787 ++++++++++++++++++++++++
>>  2 files changed, 1882 insertions(+)
>>  create mode 100644 Documentation/po/documentation.fr.po
>>  create mode 100644 Documentation/po/documentation.pot
> This sounds more like
>
> Subject: l10n: add fr localization for git-add manual pages
>
> to me.  The actual part of this patch that adds "git-add" is the
> addition of Documentation/po/documentation.pot, and from that point
> of view, this patch may want to be further split into two.

The generation of the documentation.pot and the documentation.fr.po is
already "virtually" done because that's what the po4a.conf file
describes in the previous patch. The point is that the po4a.conf file
for a minimum viable run of make implies that at least a language and a
file be described.

For documentation.po.fr, what is indeed added is the effective
translation. So I guess we could probably split the series differently,
with a po4a.conf and empty files, then the translation.

>
> But more importantly, aren't we essentially adding an equivalent of
>
> 	cd Documentation && cat git-*.txt
>
> to our codebase?
>
> Surely we cannot avoid having a copy of all messages that are to be
> translated using msgid/msgstr based approach, and we already do so
> for end-user-facing in-program strings, but it just feels a bit too
> much having to carry a duplicate (and slightly a stale) copy of the
> entire documentation set around.  For N languages, we'll have an
> equivalent for N copies of the English text, in addition to the
> translated documentation.

True. The documentation source roughly weight 2.3MB, so each full
translation would add up 5MB to the working copy. More , that would also
generate another source of traffic for updates and questions from
readers, which may not be of interest for most developpers.

>
> I am wondering if Documentation/po part should be a separate
> repository, with a dedicated i18n/l10n coordinator.  Would it make
> it easier for (1) those who write code and doc without knowing other
> languages, (2) those who update .pot and coordinate the l10n effort
> for the documentation and (3) those who translate them if we keep
> them in a single repository?
This is one of the points raised in the first RFC mail. Splitting this
part would help a lot manage the translations with their own workflow,
would not clutter the main repo with files not really needed for
packaging and would simplify dealing with the interaction with crowd
translation websites which can directly push translation content to a
git repo.

There's still the question whether the secondary repo would copy the
original asciidocs and from there would manage them with po4a and then
the translated asciidoc sources would be pushed back to the main repo,
or if the main repo would still run the po4a, and only the translated po
files would be pushed back.

The first way would decouple the workflow and the tools used for
translating from the main repo. If po4a turns out to be too adventurous
for asciidoc (latest version tested with all the man pages, no visible
problem), that would not impact the main repo which could still benefit
from the job already done.

The later way would allow the main repo to keep an eye on how the
translation are up to date and decide to include them or not.

In any case, there would be a copy of the original asciidoc files to the
secondary repo, to be able to provide the source reference in the po
files and give context to the translators.

My personal preference would still go to the integration of po4a in the
main repo, but it isn't ready yet.

Thanks,


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 12:01       ` Jean-Noël Avila
@ 2017-03-22 18:02         ` Junio C Hamano
  2017-03-22 18:41           ` Stefan Beller
  2017-03-25 15:40           ` Jean-Noël AVILA
  0 siblings, 2 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-22 18:02 UTC (permalink / raw)
  To: Jean-Noël Avila; +Cc: git

Jean-Noël Avila <jn.avila@free.fr> writes:

>> I am wondering if Documentation/po part should be a separate
>> repository, with a dedicated i18n/l10n coordinator.  Would it make
>> it easier for (1) those who write code and doc without knowing other
>> languages, (2) those who update .pot and coordinate the l10n effort
>> for the documentation and (3) those who translate them if we keep
>> them in a single repository?
>
> This is one of the points raised in the first RFC mail. Splitting this
> part would help a lot manage the translations with their own workflow,
> would not clutter the main repo with files not really needed for
> packaging and would simplify dealing with the interaction with crowd
> translation websites which can directly push translation content to a
> git repo.

As I was in favor of splitting it out, I was trying to gauge what
the downside of doing so would be, especially for those who are
doing the translation work (it is obvious that it would help
developers who are not translators, as nothing will change for them
if we keep this new thing as a separate project).

We may still want to fill in the details (and by doing so we may
discover it is not as easy as I make it sound to be here), but a
rough outline of what I think we could do is:

 * What you added to Documentation/po/ in these two patches becomes
   a separate project (let's call it "gitman-l10n") and they will be
   at the root level of the project, i.e. documentation.pot and
   documentation.$LANG.po will sit at the top level of the working
   tree of that project, without Documentation/po/ prefix.  

   The idea is for some of us to have a checkout of "gitman-l10n"
   project inside Documentation/po of the checkout of git.git
   project and achieve a layout similar to what these two patches
   from you create, but keep that optional.

 * In git.git, teach Documentation/Makefile to enable "make
   doc-l10n" and "make install-l10n" targets in "Documentation/" if
   and only if Documentation/po/Makefile exists, and delegate these
   two targets to it, i.e. something like:

   (in Documentation/Makefile)
   ifeq ($(wildcard po/Makefile),po/Makefile)
   doc-l10n install-l10n::
	$(MAKE) -C po $@
   endif

   Certain Makefile macros Documentation/Makefile knows aboute
   (e.g. location to install, list of pages in the man1 section) may
   have to be exported down to Documentation/po/Makefile.

 * Some other Makefile targets to help i18n coordinator, e.g.
   updating Documentation/po/documentation.pot by using the latest
   set of Documentation/*.txt files, may also have to be added to
   Documentation/Makefile and conditionally enabled the same way
   (i.e. keying off of the presence of po/Makefile).

 * Those who work on the documentation translation and those who
   want to build and install localized documentation will have a
   checkout of the "gitman-l10n" project at "Documentation/po".
   This will _eventually_ be done by making "gitman-l10n" a
   submodule that git.git project uses, but it can start as a manual
   "clone and checkout" without making it a submodule.  Those who do
   not deal with localized manpages can just work with git.git
   proper without even knowing anything about the gitman-l10n
   project.

I'd prefer to start with the "optional gitman-l10n repository is
checked out at Documentation/po only by convention" approach, before
committing to bind it as a submodule.  Once we got comfortable with
cooperating between these two projects, we do want to bind them
using the submodule mechanism, but not before.

Once git.git starts binding the "gitman-l10n" project as its
submodule at "Documentation/po", we may want to start using "git
archive --recurse-submodules" when cutting a release tarball, when
that option becomes usable.

I'd prefer to start with the "main tarball" with "optional language
pack tarball" approach for releases, which is more flexible to the
end users (and less change to the workflow).  Once we gain more
experience, we may want to produce a single ball of wax tarball as
well (or "only a single one").


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 18:02         ` Junio C Hamano
@ 2017-03-22 18:41           ` Stefan Beller
  2017-03-22 18:56             ` Junio C Hamano
  2017-03-25 15:40           ` Jean-Noël AVILA
  1 sibling, 1 reply; 37+ messages in thread
From: Stefan Beller @ 2017-03-22 18:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jean-Noël Avila, git

On Wed, Mar 22, 2017 at 11:02 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Jean-Noël Avila <jn.avila@free.fr> writes:
>
>>> I am wondering if Documentation/po part should be a separate
>>> repository, with a dedicated i18n/l10n coordinator.  Would it make
>>> it easier for (1) those who write code and doc without knowing other
>>> languages, (2) those who update .pot and coordinate the l10n effort
>>> for the documentation and (3) those who translate them if we keep
>>> them in a single repository?
>>
>> This is one of the points raised in the first RFC mail. Splitting this
>> part would help a lot manage the translations with their own workflow,
>> would not clutter the main repo with files not really needed for
>> packaging and would simplify dealing with the interaction with crowd
>> translation websites which can directly push translation content to a
>> git repo.
>
> As I was in favor of splitting it out, I was trying to gauge what
> the downside of doing so would be, especially for those who are
> doing the translation work (it is obvious that it would help
> developers who are not translators, as nothing will change for them
> if we keep this new thing as a separate project).
>
> We may still want to fill in the details (and by doing so we may
> discover it is not as easy as I make it sound to be here), but a
> rough outline of what I think we could do is:
>
>  * What you added to Documentation/po/ in these two patches becomes
>    a separate project (let's call it "gitman-l10n") and they will be
>    at the root level of the project, i.e. documentation.pot and
>    documentation.$LANG.po will sit at the top level of the working
>    tree of that project, without Documentation/po/ prefix.
>
>    The idea is for some of us to have a checkout of "gitman-l10n"
>    project inside Documentation/po of the checkout of git.git
>    project and achieve a layout similar to what these two patches
>    from you create, but keep that optional.
>
>  * In git.git, teach Documentation/Makefile to enable "make
>    doc-l10n" and "make install-l10n" targets in "Documentation/" if
>    and only if Documentation/po/Makefile exists, and delegate these
>    two targets to it, i.e. something like:
>
>    (in Documentation/Makefile)
>    ifeq ($(wildcard po/Makefile),po/Makefile)
>    doc-l10n install-l10n::
>         $(MAKE) -C po $@
>    endif
>
>    Certain Makefile macros Documentation/Makefile knows aboute
>    (e.g. location to install, list of pages in the man1 section) may
>    have to be exported down to Documentation/po/Makefile.
>
>  * Some other Makefile targets to help i18n coordinator, e.g.
>    updating Documentation/po/documentation.pot by using the latest
>    set of Documentation/*.txt files, may also have to be added to
>    Documentation/Makefile and conditionally enabled the same way
>    (i.e. keying off of the presence of po/Makefile).
>
>  * Those who work on the documentation translation and those who
>    want to build and install localized documentation will have a
>    checkout of the "gitman-l10n" project at "Documentation/po".
>    This will _eventually_ be done by making "gitman-l10n" a
>    submodule that git.git project uses, but it can start as a manual
>    "clone and checkout" without making it a submodule.  Those who do
>    not deal with localized manpages can just work with git.git
>    proper without even knowing anything about the gitman-l10n
>    project.

I wonder if we could have partial functionality for these "clone and checkout"
fake submodules, by having e.g. the .gitmodules file telling you the URL
and path, but no recorded gitlink in the tree.

> I'd prefer to start with the "optional gitman-l10n repository is
> checked out at Documentation/po only by convention" approach, before
> committing to bind it as a submodule.  Once we got comfortable with
> cooperating between these two projects, we do want to bind them
> using the submodule mechanism, but not before.

Yay, submodules in git.git!  Another aspect besides the git-archive
command supporting submodules is the URL management.

The URL for the canonical git.git ought to not change in the near future,
but for proper support we'd need to have a mechanism to have the URL
default and configuration outside the tracked content. The configuration
is already outside the tracked content, but the default is not.

IIUC Jonathan Nieder has a proposal for that (though not in written
form, easy to point at), which consists of having an additional" .gitmodules"
file stored in another ref, e.g. "refs/superproject/master" (Maybe we do not
need it to be branch specific? then a refs/meta/superproject would do).

That branch can be changed
* over time
  This is useful when the canonical URL where to obtain the submodules
  changes. Also when going back in history and then getting the submodules
  would be covered with this as the new ref would not go back in history.
* across people
  Some people prefer the submodules to be fetched from an internal mirror
  (in a company). Or in a fork of an open source project the submodules are also
  forked, hence need a different URL. for that such a branch would also help.

> Once git.git starts binding the "gitman-l10n" project as its
> submodule at "Documentation/po", we may want to start using "git
> archive --recurse-submodules" when cutting a release tarball, when
> that option becomes usable
>
> I'd prefer to start with the "main tarball" with "optional language
> pack tarball" approach for releases, which is more flexible to the
> end users (and less change to the workflow).  Once we gain more
> experience, we may want to produce a single ball of wax tarball as
> well (or "only a single one").

This may hint at git-archive to need more options in its
--recurse-submodules switch. We had the same discussion
for "git push --recurse-submodules" which needs an easy
mechanism to select from the powerset of
(superproject, submoduleA, submoduleB).

So we'd want to be able to say:
  "get a tarball including all submodules except the superproject"
  (This would produce the "optional language pack tarball")
  "get a tarball including the superproject and only one submodule"
  (This would produce the "I can distribute this in locally as everyone
  speaks the same language in the organisation" tarball)

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 18:41           ` Stefan Beller
@ 2017-03-22 18:56             ` Junio C Hamano
  2017-03-22 18:59               ` Stefan Beller
  0 siblings, 1 reply; 37+ messages in thread
From: Junio C Hamano @ 2017-03-22 18:56 UTC (permalink / raw)
  To: Stefan Beller; +Cc: Jean-Noël Avila, git

Stefan Beller <sbeller@google.com> writes:

> I wonder if we could have partial functionality for these "clone and checkout"
> fake submodules, by having e.g. the .gitmodules file telling you the URL
> and path, but no recorded gitlink in the tree.

You can have such a comment in any file including .gitmodules but
would that even be a feature?  

A comment in the INSTALL file was what I had in mind, at least while
we are getting more familiar with the proposed two project structure
and before we commit to use the submodule mechanism to bind them
together.

> So we'd want to be able to say:
>   "get a tarball including all submodules except the superproject"
>   (This would produce the "optional language pack tarball")

You do not need that.  Just go to the gitman-l10n project and grab a
tarball out of it.

>   "get a tarball including the superproject and only one submodule"
>   (This would produce the "I can distribute this in locally as everyone
>   speaks the same language in the organisation" tarball)

We don't need that, either, even though some other project would.
"git archive --recurse-submodules" with properly implemented
pathspec support will solve that.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 18:56             ` Junio C Hamano
@ 2017-03-22 18:59               ` Stefan Beller
  2017-03-24 14:21                 ` Michael J Gruber
  0 siblings, 1 reply; 37+ messages in thread
From: Stefan Beller @ 2017-03-22 18:59 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jean-Noël Avila, git

On Wed, Mar 22, 2017 at 11:56 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> So we'd want to be able to say:
>>   "get a tarball including all submodules except the superproject"
>>   (This would produce the "optional language pack tarball")
>
> You do not need that.  Just go to the gitman-l10n project and grab a
> tarball out of it.

Oh, I misunderstood your proposal.
You said: We have *one* submodule for all languages, but I understood
we'd have a submodule for *each* language.

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 18:59               ` Stefan Beller
@ 2017-03-24 14:21                 ` Michael J Gruber
  0 siblings, 0 replies; 37+ messages in thread
From: Michael J Gruber @ 2017-03-24 14:21 UTC (permalink / raw)
  To: Stefan Beller, Junio C Hamano; +Cc: Jean-Noël Avila, git, Jiang Xin

Stefan Beller venit, vidit, dixit 22.03.2017 19:59:
> On Wed, Mar 22, 2017 at 11:56 AM, Junio C Hamano <gitster@pobox.com> wrote:
>>> So we'd want to be able to say:
>>>   "get a tarball including all submodules except the superproject"
>>>   (This would produce the "optional language pack tarball")
>>
>> You do not need that.  Just go to the gitman-l10n project and grab a
>> tarball out of it.
> 
> Oh, I misunderstood your proposal.
> You said: We have *one* submodule for all languages, but I understood
> we'd have a submodule for *each* language.

In general, submodules would remove the major gripe that I have with the
current organization, that is carrying out-of-date translations in tree.
submodules make it clear that git.git refers to a specific revision of
the translations.

Now, since not even git.pot is insync with the l10n mark-up in the code
base, I'm afraid everything in po qualifies for being externalized.
Junio's current "pull l10n" would be substituted by updating the l10n
submodule version that git.git references.

In turn, the l10n coordinator may want to update submodule versions for
each language rather than pulling updates. That would allow the space
savings for the common uni- or bilingual developper that we are after.
Recursive submodules, yeah ;)

I'm unsure whether we should/can treat translations of git and the man
pages the same. I tend to say yes (being unsure about the consequences),
as I would hope that translators would be the same so that we keep
consistency across several tranlations in one language.

Michael

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-20 22:05     ` Junio C Hamano
  2017-03-22 12:01       ` Jean-Noël Avila
@ 2017-03-24 15:58       ` Ævar Arnfjörð Bjarmason
  2017-03-24 17:57         ` Junio C Hamano
  1 sibling, 1 reply; 37+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2017-03-24 15:58 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jean-Noel Avila, Git Mailing List

On Mon, Mar 20, 2017 at 11:05 PM, Junio C Hamano <gitster@pobox.com> wrote:
> But more importantly, aren't we essentially adding an equivalent of
>
>         cd Documentation && cat git-*.txt
>
> to our codebase?
>
> Surely we cannot avoid having a copy of all messages that are to be
> translated using msgid/msgstr based approach, and we already do so
> for end-user-facing in-program strings, but it just feels a bit too
> much having to carry a duplicate (and slightly a stale) copy of the
> entire documentation set around.  For N languages, we'll have an
> equivalent for N copies of the English text, in addition to the
> translated documentation.

As someone reading this thread from the sidelines you never elaborate
on why this is a problem worth solving (other than "a bit too much")
before everyone downthread jumped on trying to figure out how to solve
this out-of tree somehow.

So I thought I'd do a basic test of what it would mean to have this
in-tree. For every git version (every tag) since v1.0.0 I created a
parallel version of all our git-*.txt documentation, applied rot13 to
it, and dropped it in Documentation/po/rot13[1].

The end result after repack is:

    $ du -sh git-*/.git
    88M     git-orig/.git
    89M     git-po4a/.git

Now of course this isn't equivalent to the *.po files we're talking
about, which'll also contain the original English version, so let's
say that's at least 2x the size, or just assume 2.5x for extra
overhead because the translation is longer / uses higher Unicode
characters or whatever.

That's still only an extra 2.5MB per-language for 10 years of history,
and an extra 3.75MB to the checkout.

Even if we had 10 languages with a 100% translation (a stretch, since
the core translations in po/ only have 12 languages) the .git
directory would grow from the current 88MB to 113MB, and the checkout
from 33MB to 70MB (for comparison the existing po/ directory is
5.3MB).

Maybe I've just become desensitized to bigger repos but that seems
like nothing to me. For comparison the linux.git repository has a
1.9GB .git and an 800MB checkout.

There's always going to be some inconvenience cost to pay when cloning
doesn't Just Work. Right now grabbing any tar'd up git.git from any
service it's on will give you something you can fully build. This'll
no longer be the case for the po4a assets.

If there's a good reason to break that kind of stuff fine, but the
growth in repo/checkout size noted above seems tiny to me compared to
disks & hardware these days.

1. rm -rfv Documentation/po; mkdir -p Documentation/po/rot13; for
version in $(git tag -l --contains v1.0.0 'v[0-9]*.[0-9]*.[0-9]'
--sort=version:refname); do for file in $(git ls-tree $version --
./Documentation/|awk '{print $4}'|grep '^Documentation/git-.*\.txt');
do git show $version:$file | perl -pe 'tr/A-Za-z/N-ZA-Mn-za-m/' >
${file/git-/po/rot13/git-}; done; git add Documentation/po && git
commit -m"Bump rot13 for $version"; done

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-24 15:58       ` Ævar Arnfjörð Bjarmason
@ 2017-03-24 17:57         ` Junio C Hamano
  0 siblings, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-24 17:57 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason; +Cc: Jean-Noel Avila, Git Mailing List

Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:

> On Mon, Mar 20, 2017 at 11:05 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> But more importantly, aren't we essentially adding an equivalent of
>>
>>         cd Documentation && cat git-*.txt
>>
>> to our codebase?
>>
>> Surely we cannot avoid having a copy of all messages that are to be
>> translated using msgid/msgstr based approach, and we already do so
>> for end-user-facing in-program strings, but it just feels a bit too
>> much having to carry a duplicate (and slightly a stale) copy of the
>> entire documentation set around.  For N languages, we'll have an
>> equivalent for N copies of the English text, in addition to the
>> translated documentation.
>
> As someone reading this thread from the sidelines you never elaborate
> on why this is a problem worth solving (other than "a bit too much")
> before everyone downthread jumped on trying to figure out how to solve
> this out-of tree somehow.

I do not particularly see the size as an issue that must be solved;
to me, it is "nice to solve".

But going back and finding this from Jean-Noel in an earlier
message:

    ... This is one of the points raised in the first RFC mail. Splitting this
    part would help a lot manage the translations with their own workflow,
    would not clutter the main repo with files not really needed for
    packaging and would simplify dealing with the interaction with crowd
    translation websites which can directly push translation content to a
    git repo.

there may be other benefits we may be able to reap from such a
split.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-22 18:02         ` Junio C Hamano
  2017-03-22 18:41           ` Stefan Beller
@ 2017-03-25 15:40           ` Jean-Noël AVILA
  2017-03-26 22:56             ` Junio C Hamano
  1 sibling, 1 reply; 37+ messages in thread
From: Jean-Noël AVILA @ 2017-03-25 15:40 UTC (permalink / raw)
  To: git

Le mercredi 22 mars 2017 11:02:09 CET, vous avez écrit :
> Jean-Noël Avila <jn.avila@free.fr> writes:
> >> I am wondering if Documentation/po part should be a separate
> >> repository, with a dedicated i18n/l10n coordinator.  Would it make
> >> it easier for (1) those who write code and doc without knowing other
> >> languages, (2) those who update .pot and coordinate the l10n effort
> >> for the documentation and (3) those who translate them if we keep
> >> them in a single repository?
> > 
> > This is one of the points raised in the first RFC mail. Splitting this
> > part would help a lot manage the translations with their own workflow,
> > would not clutter the main repo with files not really needed for
> > packaging and would simplify dealing with the interaction with crowd
> > translation websites which can directly push translation content to a
> > git repo.
> 
> As I was in favor of splitting it out, I was trying to gauge what
> the downside of doing so would be, especially for those who are
> doing the translation work (it is obvious that it would help
> developers who are not translators, as nothing will change for them
> if we keep this new thing as a separate project).

There's one big downside of  this splitting. The gitman-l10n project would not 
be autonomous without the specific cloning at the particular place in the git 
project. po4a needs the original asciidoc files to perform the transclusion of 
the translated content into the structure of the documents. The setup that you 
are proposing would rule out simple CI checks and would make it complicated 
for the translators to set up their working copy and check the resulting man 
pages.

As I see it, there's the need for the Documentation folder to be contained in 
both project (while remaining the property of the git project). So I would 
think the other way around: for those interested in translated the 
documentation, some script would allow to checkout the git project inside the 
gitman-l10n project (like a kind of library).

This would be mainly transparent for the git developers.

> I'd prefer to start with the "optional gitman-l10n repository is
> checked out at Documentation/po only by convention" approach, before
> committing to bind it as a submodule.  Once we got comfortable with
> cooperating between these two projects, we do want to bind them
> using the submodule mechanism, but not before.

Obviously, my proposition would not allow to evolve towards such a setup, but 
is it really needed anyway ?


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-25 15:40           ` Jean-Noël AVILA
@ 2017-03-26 22:56             ` Junio C Hamano
  2017-03-27 20:12               ` Jean-Noël AVILA
  0 siblings, 1 reply; 37+ messages in thread
From: Junio C Hamano @ 2017-03-26 22:56 UTC (permalink / raw)
  To: Jean-Noël AVILA; +Cc: git

Jean-Noël AVILA <jn.avila@free.fr> writes:

> ... So I would 
> think the other way around: for those interested in translated the 
> documentation, some script would allow to checkout the git project inside the 
> gitman-l10n project (like a kind of library).
>
> This would be mainly transparent for the git developers.

As long as the resulting layout would help all groups (1) developers
who do not worry about documentation l10n (2) documentation i18n
coordinator and transltors (3) those who build and ship binary
packages, I personally am OK either way.

Having said that, I am not sure if I understand your "translators do
not have a fixed version of git.git to work with and po4a cannot
work well" as a real concern.  Wouldn't the l10n of documentation
use a similar workflow as used for the translation of in-code
strings we do in po/?  Namely, *.pot files are *NOT* updated by
individual translators by picking up a random version of git.git and
running xgettext.  Instead, i18n coordinator is the only person who
runs xgettext to update *.pot for the upcoming release of Git being
prepared, and then translators work off of that *.pot file.  Which
means they do not have to worry about in-code strings that gets
updated in the meantime; instead they work on a stable known
snapshot of *.pot and wait for the next sync with i18n coordinator
whose running of xgettext would update *.pot files with updated
in-code strings.  Doesn't that workflow apply equally well for the
documentation l10n?


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-26 22:56             ` Junio C Hamano
@ 2017-03-27 20:12               ` Jean-Noël AVILA
  2017-03-27 20:29                 ` Junio C Hamano
  0 siblings, 1 reply; 37+ messages in thread
From: Jean-Noël AVILA @ 2017-03-27 20:12 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Le dimanche 26 mars 2017, 15:56:55 CEST Junio C Hamano a écrit :
> Jean-Noël AVILA <jn.avila@free.fr> writes:
> > ... So I would
> > think the other way around: for those interested in translated the
> > documentation, some script would allow to checkout the git project inside
> > the gitman-l10n project (like a kind of library).
> > 
> > This would be mainly transparent for the git developers.
> 
> As long as the resulting layout would help all groups (1) developers
> who do not worry about documentation l10n (2) documentation i18n
> coordinator and transltors (3) those who build and ship binary
> packages, I personally am OK either way.
> 
> Having said that, I am not sure if I understand your "translators do
> not have a fixed version of git.git to work with and po4a cannot
> work well" as a real concern.  Wouldn't the l10n of documentation
> use a similar workflow as used for the translation of in-code
> strings we do in po/?  Namely, *.pot files are *NOT* updated by
> individual translators by picking up a random version of git.git and
> running xgettext.  Instead, i18n coordinator is the only person who
> runs xgettext to update *.pot for the upcoming release of Git being
> prepared, and then translators work off of that *.pot file.  Which
> means they do not have to worry about in-code strings that gets
> updated in the meantime; instead they work on a stable known
> snapshot of *.pot and wait for the next sync with i18n coordinator
> whose running of xgettext would update *.pot files with updated
> in-code strings.  Doesn't that workflow apply equally well for the
> documentation l10n?

Theoretically, this workflow should apply to the documentation, so that a 
version of the documentation can be cut at each release of git. I still have 
to convince po4a not to update the *.pot and *.po files each time it is run, 
while at the same time allow translators to produce the output file for 
proofreading.



^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
  2017-03-27 20:12               ` Jean-Noël AVILA
@ 2017-03-27 20:29                 ` Junio C Hamano
  0 siblings, 0 replies; 37+ messages in thread
From: Junio C Hamano @ 2017-03-27 20:29 UTC (permalink / raw)
  To: Jean-Noël AVILA; +Cc: git

Jean-Noël AVILA <jn.avila@free.fr> writes:

>> ...  Doesn't that workflow apply equally well for the
>> documentation l10n?
>
> Theoretically, this workflow should apply to the documentation, so that a 
> version of the documentation can be cut at each release of git. I still have 
> to convince po4a not to update the *.pot and *.po files each time it is run, 
> while at the same time allow translators to produce the output file for 
> proofreading.

Ahh, OK, that does sound like a meaningful difference that may make
the workflow we use for in-code strings not applicable for the
documentation l10n project.  As I said already, I am not married to
the "gitman-l10n at Documentation/po" approach at all, and if the
layout you brought up to turn the containment relationship the other
way around works better, that is perfectly fine by me.

Thanks.




^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2017-03-27 20:29 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-12 20:02 [PATCH] l10n: add framework for localizing the manpages Jean-Noel Avila
2017-03-12 20:02 ` Jean-Noel Avila
2017-03-12 20:36   ` Jean-Noël AVILA
2017-03-13  0:01   ` Junio C Hamano
2017-03-14 21:00     ` Ævar Arnfjörð Bjarmason
2017-03-14 21:13       ` Junio C Hamano
2017-03-15  8:11       ` Jean-Noël Avila
2017-03-15  9:01         ` Ævar Arnfjörð Bjarmason
2017-03-15  7:58     ` Jean-Noël Avila
2017-03-15 16:07       ` Junio C Hamano
2017-03-15 18:28       ` Stefan Beller
2017-03-18 17:53 ` [PATCH v2 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
2017-03-18 17:53   ` [PATCH v2 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
2017-03-18 19:41   ` [PATCH v2 1/2] l10n: Introduce framework for localizing " Junio C Hamano
2017-03-18 22:17     ` Jean-Noël AVILA
2017-03-18 23:03     ` Junio C Hamano
2017-03-20  2:11       ` Junio C Hamano
2017-03-20  8:10         ` Jean-Noël Avila
2017-03-20  8:21           ` Jean-Noël AVILA
2017-03-20 16:50           ` Junio C Hamano
2017-03-20 21:02 ` Rework manpage localisation Jean-Noel Avila
2017-03-20 21:02   ` [PATCH v3 1/2] l10n: Introduce framework for localizing man pages Jean-Noel Avila
2017-03-21 18:09     ` Junio C Hamano
2017-03-20 21:02   ` [PATCH v3 2/2] l10n: Add git-add.txt to localized " Jean-Noel Avila
2017-03-20 22:05     ` Junio C Hamano
2017-03-22 12:01       ` Jean-Noël Avila
2017-03-22 18:02         ` Junio C Hamano
2017-03-22 18:41           ` Stefan Beller
2017-03-22 18:56             ` Junio C Hamano
2017-03-22 18:59               ` Stefan Beller
2017-03-24 14:21                 ` Michael J Gruber
2017-03-25 15:40           ` Jean-Noël AVILA
2017-03-26 22:56             ` Junio C Hamano
2017-03-27 20:12               ` Jean-Noël AVILA
2017-03-27 20:29                 ` Junio C Hamano
2017-03-24 15:58       ` Ævar Arnfjörð Bjarmason
2017-03-24 17:57         ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).