[PATCH] i18n: fix dangling dot in die() messages
Signed-off-by: Jean-Noël Avila --- It is not clear what the style guide for messages is. builtin/submodule--helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index b56028ba9d..a011abfd7c 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -521,7 +521,7 @@ static void runcommand_in_submodule_cb(const struct cache_entry *list_item, printf(_("Entering '%s'\n"), displaypath); if (info->argv[0] && run_command()) - die(_("run_command returned non-zero status for %s\n."), + die(_("run_command returned non-zero status for %s"), displaypath); if (info->recursive) { @@ -543,7 +543,7 @@ static void runcommand_in_submodule_cb(const struct cache_entry *list_item, if (run_command()) die(_("run_command returned non-zero status while " - "recursing in the nested submodules of %s\n."), + "recursing in the nested submodules of %s"), displaypath); } -- 2.18.0
[PATCH] submodule--helper.c: i18n: add a missing space in message
The message spans over 2 lines but the C conconcatenation does not add the needed space between the two lines. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/submodule--helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 2086f0eb0..a5c4a8a69 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -623,7 +623,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid, if (refs_head_ref(get_submodule_ref_store(path), handle_submodule_head_ref, )) - die(_("could not resolve HEAD ref inside the" + die(_("could not resolve HEAD ref inside the " "submodule '%s'"), path); print_status(flags, '+', path, , displaypath); -- 2.15.0
[PATCH] submodule--helper.c: i18n: add a missing space in message
The message spans over 2 lines but the C conconcatenation does not add the needed space between the two lines. --- builtin/submodule--helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 2086f0eb0..a5c4a8a69 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -623,7 +623,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid, if (refs_head_ref(get_submodule_ref_store(path), handle_submodule_head_ref, )) - die(_("could not resolve HEAD ref inside the" + die(_("could not resolve HEAD ref inside the " "submodule '%s'"), path); print_status(flags, '+', path, , displaypath); -- 2.15.0
[PATCH] i18n: add a missing space in message
The message spans over 2 lines but the C conconcatenation does not add the needed space between the two lines. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- sequencer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) This is a single change discovered while doing the localization task. Moreover, what's the status of the options in '--' in the messages? Must they be single-quoted or not? This may sound a bit picky, but there has been some shifts from one form to the other in the latest batch of strings, leading to fuzzy matchings. Settling on a given "standard" would probably reduce translators'work. diff --git a/sequencer.c b/sequencer.c index 7886e2269..e258bb646 100644 --- a/sequencer.c +++ b/sequencer.c @@ -2558,7 +2558,7 @@ static enum check_level get_missing_commit_check_level(void) return CHECK_WARN; if (!strcasecmp("error", value)) return CHECK_ERROR; - warning(_("unrecognized setting %s for option" + warning(_("unrecognized setting %s for option " "rebase.missingCommitsCheck. Ignoring."), value); return CHECK_IGNORE; } -- 2.14.0
[PATCH v4 3/3] git-filter-branch: be more direct in an error message
git-filter-branch requires the specification of a branch by one way or another. If no branch appears to have been specified, we know the user got the usage wrong but we don't know what they were trying to do --- e.g. maybe they specified the ref to rewrite but in the wrong place. In this case, just state that the branch specification is missing. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- git-filter-branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 2b8cdba15..aafaf708d 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -239,7 +239,7 @@ git rev-parse --no-flags --revs-only --symbolic-full-name \ sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads test -s "$tempdir"/heads || - die "Which ref do you want to rewrite?" + die "You must specify a ref to rewrite." GIT_INDEX_FILE="$(pwd)/../index" export GIT_INDEX_FILE -- 2.13.0
[PATCH v4 2/3] read-tree -m: make error message for merging 0 trees less smart aleck
"git read-tree -m" requires a tree argument to name the tree to be merged in. Git uses a cutesy error message to say so and why: $ git read-tree -m warning: read-tree: emptying the index with no arguments is deprecated; use --empty fatal: just how do you expect me to merge 0 trees? $ git read-tree -m --empty fatal: just how do you expect me to merge 0 trees? When lucky, that could produce an ah-hah moment for the user, but it's more likely to irritate and distract them. Instead, tell the user plainly that the tree argument is required. Also document that more than 3 trees can be merged. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- Documentation/git-read-tree.txt | 7 +++ builtin/read-tree.c | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index ed9d63ef4..7e20b0c21 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -135,10 +135,9 @@ OPTIONS Merging --- -If `-m` is specified, 'git read-tree' can perform 3 kinds of -merge, a single tree merge if only 1 tree is given, a -fast-forward merge with 2 trees, or a 3-way merge if 3 trees are -provided. +If `-m` is specified, 'git read-tree' can perform 3 kinds of merge, a +single tree merge if only 1 tree is given, a fast-forward merge with 2 +trees, or a 3-way merge if 3 or more trees are provided. Single Tree Merge diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 23e212ee8..383442567 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -226,9 +226,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) setup_work_tree(); if (opts.merge) { - if (stage < 2) - die("just how do you expect me to merge %d trees?", stage-1); switch (stage - 1) { + case 0: + die("you must specify at least one tree to merge"); + break; case 1: opts.fn = opts.prefix ? bind_merge : oneway_merge; break; -- 2.13.0
[PATCH v4 1/3] usability: don't ask questions if no reply is required
There has been a bug report by a corporate user that stated that "spelling mistake of stash followed by a yes prints character 'y' infinite times." This analysis was false. When the spelling of a command contains errors, the git program tries to help the user by providing candidates which are close to the unexisting command. E.g Git prints the following: git: 'stahs' is not a git command. See 'git --help'. Did you mean this? stash and then exits. The problem with this hint is that it is not formally indicated as an hint and the user is in fact encouraged to reply to the question, whereas the Git command is already finished. The user was unlucky enough that it was the command he was looking for, and replied "yes" on the command line, effectively launching the `yes` program. The initial error is that the Git programs, when launched in command-line mode (without interaction) must not ask questions, because these questions would normally require a user input as a reply that they won't handle indeed. That's a source of confusion on UX level. To improve the general usability of the Git suite, the following rule was applied: if the sentence * appears in a non-interactive session * is printed last before exit * is a question addressing the user ("you") the sentence is turned into affirmative and proposes the option. The basic rewording of the question sentences has been extended to other spots found in the source. Requested at https://github.com/git/git-scm.com/issues/999 by rpai1 Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/am.c | 5 +++-- builtin/checkout.c | 5 ++--- help.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index a95dd8b4e..dd60fad1e 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1312,7 +1312,7 @@ static int parse_mail(struct am_state *state, const char *mail) } if (is_empty_file(am_path(state, "patch"))) { - printf_ln(_("Patch is empty. Was it split wrong?")); + printf_ln(_("Patch is empty.")); die_user_resolve(state); } @@ -1940,7 +1940,8 @@ static void am_resolve(struct am_state *state) if (unmerged_cache()) { printf_ln(_("You still have unmerged paths in your index.\n" - "Did you forget to use 'git add'?")); + "You should 'git add' each file with resolved conflicts to mark them as such.\n" + "You might run `git rm` on a file to accept \"deleted by them\" for it.")); die_user_resolve(state); } diff --git a/builtin/checkout.c b/builtin/checkout.c index bfa5419f3..85c04d252 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -1286,9 +1286,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) * new_branch && argc > 1 will be caught later. */ if (opts.new_branch && argc == 1) - die(_("Cannot update paths and switch to branch '%s' at the same time.\n" - "Did you intend to checkout '%s' which can not be resolved as commit?"), - opts.new_branch, argv[0]); + die(_("'%s' is not a commit and a branch '%s' cannot be created from it"), + argv[0], opts.new_branch); if (opts.force_detach) die(_("git checkout: --detach does not take a path argument '%s'"), diff --git a/help.c b/help.c index bc6cd19cf..a07f01e6f 100644 --- a/help.c +++ b/help.c @@ -411,8 +411,8 @@ const char *help_unknown_cmd(const char *cmd) if (SIMILAR_ENOUGH(best_similarity)) { fprintf_ln(stderr, - Q_("\nDid you mean this?", - "\nDid you mean one of these?", + Q_("\nThe most similar command is", + "\nThe most similar commands are", n)); for (i = 0; i < n; i++) -- 2.13.0
[PATCH v3 1/3] usability: don't ask questions if no reply is required
There has been a bug report by a corporate user that stated that "spelling mistake of stash followed by a yes prints character 'y' infinite times." This analysis was false. When the spelling of a command contains errors, the git program tries to help the user by providing candidates which are close to the unexisting command. E.g Git prints the following: git: 'stahs' is not a git command. See 'git --help'. Did you mean this? stash and then exits. The problem with this hint is that it is not formally indicated as an hint and the user is in fact encouraged to reply to the question, whereas the Git command is already finished. The user was unlucky enough that it was the command he was looking for, and replied "yes" on the command line, effectively launching the `yes` program. The initial error is that the Git programs, when launched in command-line mode (without interaction) must not ask questions, because these questions would normally require a user input as a reply that they won't handle indeed. That's a source of confusion on UX level. To improve the general usability of the Git suite, the following rule was applied: if the sentence * appears in a non-interactive session * is printed last before exit * is a question addressing the user ("you") the sentence is turned into affirmative and proposes the option. The basic rewording of the question sentences has been extended to other spots found in the source. Requested at https://github.com/git/git-scm.com/issues/999 by rpai1 Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/am.c | 5 +++-- builtin/checkout.c | 5 ++--- help.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index a95dd8b4e..dd60fad1e 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1312,7 +1312,7 @@ static int parse_mail(struct am_state *state, const char *mail) } if (is_empty_file(am_path(state, "patch"))) { - printf_ln(_("Patch is empty. Was it split wrong?")); + printf_ln(_("Patch is empty.")); die_user_resolve(state); } @@ -1940,7 +1940,8 @@ static void am_resolve(struct am_state *state) if (unmerged_cache()) { printf_ln(_("You still have unmerged paths in your index.\n" - "Did you forget to use 'git add'?")); + "You should 'git add' each file with resolved conflicts to mark them as such.\n" + "You might run `git rm` on a file to accept \"deleted by them\" for it.")); die_user_resolve(state); } diff --git a/builtin/checkout.c b/builtin/checkout.c index bfa5419f3..85c04d252 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -1286,9 +1286,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) * new_branch && argc > 1 will be caught later. */ if (opts.new_branch && argc == 1) - die(_("Cannot update paths and switch to branch '%s' at the same time.\n" - "Did you intend to checkout '%s' which can not be resolved as commit?"), - opts.new_branch, argv[0]); + die(_("'%s' is not a commit and a branch '%s' cannot be created from it"), + argv[0], opts.new_branch); if (opts.force_detach) die(_("git checkout: --detach does not take a path argument '%s'"), diff --git a/help.c b/help.c index bc6cd19cf..a07f01e6f 100644 --- a/help.c +++ b/help.c @@ -411,8 +411,8 @@ const char *help_unknown_cmd(const char *cmd) if (SIMILAR_ENOUGH(best_similarity)) { fprintf_ln(stderr, - Q_("\nDid you mean this?", - "\nDid you mean one of these?", + Q_("\nThe most similar command is", + "\nThe most similar commands are", n)); for (i = 0; i < n; i++) -- 2.13.0
[PATCH v3 2/3] read-tree -m: make error message for merging 0 trees less smart aleck
"git read-tree -m" requires a tree argument to name the tree to be merged in. Git uses a cutesy error message to say so and why: $ git read-tree -m warning: read-tree: emptying the index with no arguments is deprecated; use --empty fatal: just how do you expect me to merge 0 trees? $ git read-tree -m --empty fatal: just how do you expect me to merge 0 trees? When lucky, that could produce an ah-hah moment for the user, but it's more likely to irritate and distract them. Instead, tell the user plainly that the tree argument is required. Also document this requirement in the git-read-tree(1) manpage where there is room to explain it in a more straightforward way. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> Signed-off-by: Jonathan Nieder <jrnie...@gmail.com> --- Documentation/git-read-tree.txt | 8 builtin/read-tree.c | 7 --- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index ed9d63ef4..97df00043 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -135,10 +135,10 @@ OPTIONS Merging --- -If `-m` is specified, 'git read-tree' can perform 3 kinds of -merge, a single tree merge if only 1 tree is given, a -fast-forward merge with 2 trees, or a 3-way merge if 3 trees are -provided. +If `-m` is specified, at least one tree must be given on the command +line. 'git read-tree' can perform 3 kinds of merge, a single tree +merge if only 1 tree is given, a fast-forward merge with 2 trees, or a +3-way merge if 3 or more trees are provided. Single Tree Merge diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 23e212ee8..de1a58d17 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -132,7 +132,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) OPT_BOOL(0, "empty", _empty, N_("only empty the index")), OPT__VERBOSE(_update, N_("be verbose")), - OPT_GROUP(N_("Merging")), + OPT_GROUP(N_("Merging (needs at least one tree-ish")), OPT_BOOL('m', NULL, , N_("perform a merge in addition to a read")), OPT_BOOL(0, "trivial", _merges_only, @@ -226,9 +226,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) setup_work_tree(); if (opts.merge) { - if (stage < 2) - die("just how do you expect me to merge %d trees?", stage-1); switch (stage - 1) { + case 0: + die(_("you must specify at least one tree to merge")); + break; case 1: opts.fn = opts.prefix ? bind_merge : oneway_merge; break; -- 2.13.0
[PATCH v3 3/3] git-filter-branch:
git-filter-branch requires the specification of a branch by one way or another. If no branch appears to have been specified, we know the user got the usage wrong but we don't know what they were trying to do --- e.g. maybe they specified the ref to rewrite but in the wrong place. In this case, just state that the branch specification is missing. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- git-filter-branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 2b8cdba15..aafaf708d 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -239,7 +239,7 @@ git rev-parse --no-flags --revs-only --symbolic-full-name \ sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads test -s "$tempdir"/heads || - die "Which ref do you want to rewrite?" + die "You must specify a ref to rewrite." GIT_INDEX_FILE="$(pwd)/../index" export GIT_INDEX_FILE -- 2.13.0
[PATCH v2 2/3] read-tree -m: make error message for merging 0 trees less smart aleck
"git read-tree -m" requires a tree argument to name the tree to be merged in. Git uses a cutesy error message to say so and why: $ git read-tree -m warning: read-tree: emptying the index with no arguments is deprecated; use --empty fatal: just how do you expect me to merge 0 trees? $ git read-tree -m --empty fatal: just how do you expect me to merge 0 trees? When lucky, that could produce an ah-hah moment for the user, but it's more likely to irritate and distract them. Instead, tell the user plainly that the tree argument is required. Also document this requirement in the git-read-tree(1) manpage where there is room to explain it in a more straightforward way. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> Signed-off-by: Jonathan Nieder <jrnie...@gmail.com> --- Documentation/git-read-tree.txt | 8 builtin/read-tree.c | 7 --- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index ed9d63ef4..7cd9c6306 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -135,10 +135,10 @@ OPTIONS Merging --- -If `-m` is specified, 'git read-tree' can perform 3 kinds of -merge, a single tree merge if only 1 tree is given, a -fast-forward merge with 2 trees, or a 3-way merge if 3 trees are -provided. +If `-m` is specified, at least one tree must be given on the command +line. 'git read-tree' can perform 3 kinds of merge, a single tree +merge if only 1 tree is given, a fast-forward merge with 2 trees, or a +3-way merge if 3 trees are provided. Single Tree Merge diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 23e212ee8..68c5b0ca4 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -132,7 +132,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) OPT_BOOL(0, "empty", _empty, N_("only empty the index")), OPT__VERBOSE(_update, N_("be verbose")), - OPT_GROUP(N_("Merging")), + OPT_GROUP(N_("Merging (needs at least one tree-ish")), OPT_BOOL('m', NULL, , N_("perform a merge in addition to a read")), OPT_BOOL(0, "trivial", _merges_only, @@ -226,9 +226,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) setup_work_tree(); if (opts.merge) { - if (stage < 2) - die("just how do you expect me to merge %d trees?", stage-1); switch (stage - 1) { + case 0: + die("you must specify at least one tree to merge"); + break; case 1: opts.fn = opts.prefix ? bind_merge : oneway_merge; break; -- 2.12.0
[PATCH v2 3/3] git-filter-branch: make the error msg when missing branch more open
git-filter-branch requires the specification of a branch by one way or another. If no branch appears to have been specified, we know the user got the usage wrong but we don't know what they were trying to do --- e.g. maybe they specified the ref to rewrite but in the wrong place. The safest solution is to just print the usage in this case. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- git-filter-branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 2b8cdba15..bda2bae23 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -239,7 +239,7 @@ git rev-parse --no-flags --revs-only --symbolic-full-name \ sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads test -s "$tempdir"/heads || - die "Which ref do you want to rewrite?" + usage GIT_INDEX_FILE="$(pwd)/../index" export GIT_INDEX_FILE -- 2.12.0
[PATCH v2 1/3] usability: don't ask questions if no reply is required
There has been a bug report by a corporate user that stated that "spelling mistake of stash followed by a yes prints character 'y' infinite times." This analysis was false. When the spelling of a command contains errors, the git program tries to help the user by providing candidates which are close to the unexisting command. E.g Git prints the following: git: 'stahs' is not a git command. See 'git --help'. Did you mean this? stash and then exits. The problem with this hint is that it is not formally indicated as an hint and the user is in fact encouraged to reply to the question, whereas the Git command is already finished. The user was unlucky enough that it was the command he was looking for, and replied "yes" on the command line, effectively launching the `yes` program. The initial error is that the Git programs, when launched in command-line mode (without interaction) must not ask questions, because these questions would normally require a user input as a reply while they won't handle indeed. That's a source of confusion on UX level. To improve the general usability of the Git suite, the following rule was applied: if the sentence * appears in a non-interactive session * is printed last before exit * is a question addressing the user ("you") the sentence is turned into affirmative and proposes the option. The basic rewording of the question sentences has been extended to other spots found in the source. Requested at https://github.com/git/git-scm.com/issues/999 by rpai1 Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/am.c | 4 ++-- builtin/checkout.c | 2 +- help.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index a95dd8b4e..f5afa438d 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1312,7 +1312,7 @@ static int parse_mail(struct am_state *state, const char *mail) } if (is_empty_file(am_path(state, "patch"))) { - printf_ln(_("Patch is empty. Was it split wrong?")); + printf_ln(_("Patch is empty. It may have been split wrong.")); die_user_resolve(state); } @@ -1940,7 +1940,7 @@ static void am_resolve(struct am_state *state) if (unmerged_cache()) { printf_ln(_("You still have unmerged paths in your index.\n" - "Did you forget to use 'git add'?")); + "You might want to use 'git add' on them.")); die_user_resolve(state); } diff --git a/builtin/checkout.c b/builtin/checkout.c index bfa5419f3..05037b9b6 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -1287,7 +1287,7 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) */ if (opts.new_branch && argc == 1) die(_("Cannot update paths and switch to branch '%s' at the same time.\n" - "Did you intend to checkout '%s' which can not be resolved as commit?"), + "'%s' can not be resolved as commit, but it should."), opts.new_branch, argv[0]); if (opts.force_detach) diff --git a/help.c b/help.c index bc6cd19cf..4658a55c6 100644 --- a/help.c +++ b/help.c @@ -411,8 +411,8 @@ const char *help_unknown_cmd(const char *cmd) if (SIMILAR_ENOUGH(best_similarity)) { fprintf_ln(stderr, - Q_("\nDid you mean this?", - "\nDid you mean one of these?", + Q_("\nThe most approaching command is", + "\nThe most approaching commands are", n)); for (i = 0; i < n; i++) -- 2.12.0
[PATCH 4/4] git-filter-branch: be assertative on dying message
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- git-filter-branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 2b8cdba15..dd3a605d0 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -239,7 +239,7 @@ git rev-parse --no-flags --revs-only --symbolic-full-name \ sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads test -s "$tempdir"/heads || - die "Which ref do you want to rewrite?" + die "You must specify a ref to rewrite" GIT_INDEX_FILE="$(pwd)/../index" export GIT_INDEX_FILE -- 2.12.0
[PATCH 3/4] read-tree.c: rework UI when merging no trees
The initial test was inherited from a previous commit, but it is no longer needed, given the following switch case. Moreover, the question sentence ending the program has been replace by an assertative one. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/read-tree.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 23e212ee8..05296997c 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -226,9 +226,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) setup_work_tree(); if (opts.merge) { - if (stage < 2) - die("just how do you expect me to merge %d trees?", stage-1); switch (stage - 1) { + case 0: + die("there are no trees to merge!"); + break; case 1: opts.fn = opts.prefix ? bind_merge : oneway_merge; break; -- 2.12.0
[PATCH 2/4] usability: fix am and checkout for nevermind questions
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/am.c | 4 ++-- builtin/checkout.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index a95dd8b4e..f5afa438d 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1312,7 +1312,7 @@ static int parse_mail(struct am_state *state, const char *mail) } if (is_empty_file(am_path(state, "patch"))) { - printf_ln(_("Patch is empty. Was it split wrong?")); + printf_ln(_("Patch is empty. It may have been split wrong.")); die_user_resolve(state); } @@ -1940,7 +1940,7 @@ static void am_resolve(struct am_state *state) if (unmerged_cache()) { printf_ln(_("You still have unmerged paths in your index.\n" - "Did you forget to use 'git add'?")); + "You might want to use 'git add' on them.")); die_user_resolve(state); } diff --git a/builtin/checkout.c b/builtin/checkout.c index bfa5419f3..05037b9b6 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -1287,7 +1287,7 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) */ if (opts.new_branch && argc == 1) die(_("Cannot update paths and switch to branch '%s' at the same time.\n" - "Did you intend to checkout '%s' which can not be resolved as commit?"), + "'%s' can not be resolved as commit, but it should."), opts.new_branch, argv[0]); if (opts.force_detach) -- 2.12.0
[PATCH 1/4] usability: don't ask questions if no reply is required
As described in the bug report at https://github.com/git/git-scm.com/issues/999 the user was disconcerted by the question asked by the program not requiring a reply from the user. To improve the general usability of the Git suite, The following rule was applied: if the sentence * appears in a non-interactive session * is printed last before exit * is a question addressing the user ("you") the sentence is turned into affirmative and proposes the option. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- help.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/help.c b/help.c index bc6cd19cf..4658a55c6 100644 --- a/help.c +++ b/help.c @@ -411,8 +411,8 @@ const char *help_unknown_cmd(const char *cmd) if (SIMILAR_ENOUGH(best_similarity)) { fprintf_ln(stderr, - Q_("\nDid you mean this?", - "\nDid you mean one of these?", + Q_("\nThe most approaching command is", + "\nThe most approaching commands are", n)); for (i = 0; i < n; i++) -- 2.12.0
[PATCH v2 2/2] i18n: read-cache: Fix typo
From: Peter Krefting <pe...@softwolves.pp.se> Signed-off-by: Peter Krefting <pe...@softwolves.pp.se> Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- read-cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/read-cache.c b/read-cache.c index b3d0f3c30..0d0081a11 100644 --- a/read-cache.c +++ b/read-cache.c @@ -2372,7 +2372,7 @@ static int should_delete_shared_index(const char *shared_index_path) if (!expiration) return 0; if (stat(shared_index_path, )) - return error_errno(_("could not stat '%s"), shared_index_path); + return error_errno(_("could not stat '%s'"), shared_index_path); if (st.st_mtime > expiration) return 0; -- 2.12.0
[PATCH v2] i18n patches to apply for rc2
Please apply the following patches for rc2 so that the localization can be applied on a cleaned up pot file.
[PATCH v2 1/2] i18n: remove i18n from tag reflog message
The building of the reflog message is using strbuf, which is not friendly with internationalization frameworks. No other reflog messages are translated right now and switching all the messages to i18n would require a major rework of the way the messages are built. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/tag.c | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/tag.c b/builtin/tag.c index 222404522..bdf1e88e9 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -309,7 +309,7 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) if (rla) { strbuf_addstr(sb, rla); } else { - strbuf_addstr(sb, _("tag: tagging ")); + strbuf_addstr(sb, "tag: tagging "); strbuf_add_unique_abbrev(sb, sha1, DEFAULT_ABBREV); } @@ -317,14 +317,14 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) type = sha1_object_info(sha1, NULL); switch (type) { default: - strbuf_addstr(sb, _("object of unknown type")); + strbuf_addstr(sb, "object of unknown type"); break; case OBJ_COMMIT: if ((buf = read_sha1_file(sha1, , )) != NULL) { subject_len = find_commit_subject(buf, _start); strbuf_insert(sb, sb->len, subject_start, subject_len); } else { - strbuf_addstr(sb, _("commit object")); + strbuf_addstr(sb, "commit object"); } free(buf); @@ -332,13 +332,13 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) strbuf_addf(sb, ", %s", show_date(c->date, 0, DATE_MODE(SHORT))); break; case OBJ_TREE: - strbuf_addstr(sb, _("tree object")); + strbuf_addstr(sb, "tree object"); break; case OBJ_BLOB: - strbuf_addstr(sb, _("blob object")); + strbuf_addstr(sb, "blob object"); break; case OBJ_TAG: - strbuf_addstr(sb, _("other tag object")); + strbuf_addstr(sb, "other tag object"); break; } strbuf_addch(sb, ')'); -- 2.12.0
[PATCH] i18n: remove i18n from tag reflog message
The building of the reflog message is using strbuf, which is not friendly with internationalization frameworks. No other reflog messages are translated right now and switching all the messages to i18n would require a major rework of the way the messages are built. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- builtin/tag.c | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/tag.c b/builtin/tag.c index 222404522..bdf1e88e9 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -309,7 +309,7 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) if (rla) { strbuf_addstr(sb, rla); } else { - strbuf_addstr(sb, _("tag: tagging ")); + strbuf_addstr(sb, "tag: tagging "); strbuf_add_unique_abbrev(sb, sha1, DEFAULT_ABBREV); } @@ -317,14 +317,14 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) type = sha1_object_info(sha1, NULL); switch (type) { default: - strbuf_addstr(sb, _("object of unknown type")); + strbuf_addstr(sb, "object of unknown type"); break; case OBJ_COMMIT: if ((buf = read_sha1_file(sha1, , )) != NULL) { subject_len = find_commit_subject(buf, _start); strbuf_insert(sb, sb->len, subject_start, subject_len); } else { - strbuf_addstr(sb, _("commit object")); + strbuf_addstr(sb, "commit object"); } free(buf); @@ -332,13 +332,13 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb) strbuf_addf(sb, ", %s", show_date(c->date, 0, DATE_MODE(SHORT))); break; case OBJ_TREE: - strbuf_addstr(sb, _("tree object")); + strbuf_addstr(sb, "tree object"); break; case OBJ_BLOB: - strbuf_addstr(sb, _("blob object")); + strbuf_addstr(sb, "blob object"); break; case OBJ_TAG: - strbuf_addstr(sb, _("other tag object")); + strbuf_addstr(sb, "other tag object"); break; } strbuf_addch(sb, ')'); -- 2.12.0
Rework manpage localisation
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.
[PATCH v3 1/2] l10n: Introduce framework for localizing man pages
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.av...@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 0..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
[PATCH v3 2/2] l10n: Add git-add.txt to localized man pages
Signed-off-by: Jean-Noel Avila <jn.av...@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 0..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.av...@free.fr> +# This file is distributed under the same license as the Git package. +# Jean-Noël Avila <jn.av...@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.av...@free.fr>\n" +"Language-Team: Jean-Noël Avila <jn.av...@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] [--] [...]\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
[PATCH v2 2/2] l10n: Add git-add.txt to localized man pages
Signed-off-by: Jean-Noel Avila <jn.av...@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 0..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.av...@free.fr> +# This file is distributed under the same license as the Git package. +# Jean-Noël Avila <jn.av...@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.av...@free.fr>\n" +"Language-Team: Jean-Noël Avila <jn.av...@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] [--] [...]\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
[PATCH v2 1/2] l10n: Introduce framework for localizing man pages
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.av...@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 0..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
[PATCH] l10n: add framework for localizing the manpages
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.av...@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 0..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.av...@free.fr> +# This file is distributed under the same license as the Git package. +# Jean-Noël Avila <jn.av...@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.av...@free.fr>\n" +"Language-Team: Jean-Noël Avila <jn.av...@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-
[PATCH] l10n: add framework for localizing the manpages
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.
[PATCH 1/3] i18n: fix typos for translation
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- bisect.c| 10 +- sequencer.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bisect.c b/bisect.c index 6f512c2..b9a0701 100644 --- a/bisect.c +++ b/bisect.c @@ -760,7 +760,7 @@ static void handle_skipped_merge_base(const unsigned char *mb) char *bad_hex = oid_to_hex(current_bad_oid); char *good_hex = join_sha1_array_hex(_revs, ' '); - warning(_("the merge base between %s and [%s] " + warning(_("The merge base between %s and [%s] " "must be skipped.\n" "So we cannot be sure the first %s commit is " "between %s and %s.\n" @@ -846,7 +846,7 @@ static void check_good_are_ancestors_of_bad(const char *prefix, int no_checkout) int fd; if (!current_bad_oid) - die(_("a %s revision is needed"), term_bad); + die(_("A %s revision is needed"), term_bad); /* Check if file BISECT_ANCESTORS_OK exists. */ if (!stat(filename, ) && S_ISREG(st.st_mode)) @@ -863,7 +863,7 @@ static void check_good_are_ancestors_of_bad(const char *prefix, int no_checkout) /* Create file BISECT_ANCESTORS_OK. */ fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY, 0600); if (fd < 0) - warning_errno(_("could not create file '%s'"), + warning_errno(_("Could not create file '%s'"), filename); else close(fd); @@ -914,7 +914,7 @@ void read_bisect_terms(const char **read_bad, const char **read_good) *read_good = "good"; return; } else { - die_errno(_("could not read file '%s'"), filename); + die_errno(_("Could not read file '%s'"), filename); } } else { strbuf_getline_lf(, fp); @@ -944,7 +944,7 @@ int bisect_next_all(const char *prefix, int no_checkout) read_bisect_terms(_bad, _good); if (read_bisect_refs()) - die(_("reading bisect refs failed")); + die(_("Reading bisect refs failed")); check_good_are_ancestors_of_bad(prefix, no_checkout); diff --git a/sequencer.c b/sequencer.c index 2e9c7d0..3804fa9 100644 --- a/sequencer.c +++ b/sequencer.c @@ -702,7 +702,7 @@ static struct commit *parse_insn_line(char *bol, char *eol, struct replay_opts * if (action != opts->action) { if (action == REPLAY_REVERT) error((opts->action == REPLAY_REVERT) - ? _("Cannot revert during a another revert.") + ? _("Cannot revert during another revert.") : _("Cannot revert during a cherry-pick.")); else error((opts->action == REPLAY_REVERT) -- 2.10.0.rc0.37.gd7d1c14.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/3] i18n: fix git rebase interactive commit messages
For proper i18n, the logic cannot embed english specific processing. Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- git-rebase--interactive.sh | 16 1 file changed, 16 deletions(-) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index e2da524..7baf5f4 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -415,14 +415,6 @@ this_nth_commit_message () { 8) gettext "This is the 8th commit message:";; 9) gettext "This is the 9th commit message:";; 10) gettext "This is the 10th commit message:";; - # TRANSLATORS: if the language you are translating into - # doesn't allow you to compose a sentence in this fashion, - # consider translating as if this and the following few strings - # were "This is the commit message ${n}:" - *1[0-9]|*[04-9]) eval_gettext "This is the \${n}th commit message:";; - *1) eval_gettext "This is the \${n}st commit message:";; - *2) eval_gettext "This is the \${n}nd commit message:";; - *3) eval_gettext "This is the \${n}rd commit message:";; *) eval_gettext "This is the commit message \${n}:";; esac } @@ -439,14 +431,6 @@ skip_nth_commit_message () { 8) gettext "The 8th commit message will be skipped:";; 9) gettext "The 9th commit message will be skipped:";; 10) gettext "The 10th commit message will be skipped:";; - # TRANSLATORS: if the language you are translating into - # doesn't allow you to compose a sentence in this fashion, - # consider translating as if this and the following few strings - # were "The commit message ${n} will be skipped:" - *1[0-9]|*[04-9]) eval_gettext "The \${n}th commit message will be skipped:";; - *1) eval_gettext "The \${n}st commit message will be skipped:";; - *2) eval_gettext "The \${n}nd commit message will be skipped:";; - *3) eval_gettext "The \${n}rd commit message will be skipped:";; *) eval_gettext "The commit message \${n} will be skipped:";; esac } -- 2.10.0.rc0.37.gd7d1c14.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 3/3] i18n: simplify numeric error reporting
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- config.c | 43 +++ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/config.c b/config.c index 584cacf..e33c703 100644 --- a/config.c +++ b/config.c @@ -655,43 +655,30 @@ static void die_bad_number(const char *name, const char *value) if (!value) value = ""; + const char * error_type = (errno == ERANGE)? _("out of range"):_("invalid unit"); if (!(cf && cf->name)) - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s': out of range") - : _("bad numeric config value '%s' for '%s': invalid unit"), - value, name); + die(_("bad numeric config value '%s' for '%s': %s"), + value, name, error_type); switch (cf->origin_type) { case CONFIG_ORIGIN_BLOB: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in blob %s: out of range") - : _("bad numeric config value '%s' for '%s' in blob %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in blob %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_FILE: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in file %s: out of range") - : _("bad numeric config value '%s' for '%s' in file %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in file %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_STDIN: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in standard input: out of range") - : _("bad numeric config value '%s' for '%s' in standard input: invalid unit"), - value, name); + die(_("bad numeric config value '%s' for '%s' in standard input: %s"), + value, name, error_type); case CONFIG_ORIGIN_SUBMODULE_BLOB: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in submodule-blob %s: out of range") - : _("bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in submodule-blob %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_CMDLINE: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in command line %s: out of range") - : _("bad numeric config value '%s' for '%s' in command line %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in command line %s: %s"), + value, name, cf->name, error_type); default: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in %s: out of range") - : _("bad numeric config value '%s' for '%s' in %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in %s: %s"), + value, name, cf->name, error_type); } } -- 2.10.0.rc0.37.gd7d1c14.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] gitk: fr.po: Update translation (311t)
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- po/fr.po | 761 +++ 1 file changed, 373 insertions(+), 388 deletions(-) diff --git a/po/fr.po b/po/fr.po index 80f72fb..2e55c89 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the gitk package. # Translators: # Emmanuel Trillaud <etrill...@gmail.com> -# +# Jean-Noël Avila <jn.av...@free.fr> msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-17 14:32+1000\n" -"PO-Revision-Date: 2009-11-19 22:13+0100\n" -"Last-Translator: Emmanuel Trillaud <etrill...@gmail.com>\n" +"POT-Creation-Date: 2016-01-22 22:04+0100\n" +"PO-Revision-Date: 2016-01-22 23:05+0100\n" +"Last-Translator: Jean-Noël Avila <jn.av...@free.fr>\n" "Language-Team: git@vger.kernel.org\n" "Language: \n" "MIME-Version: 1.0\n" @@ -23,13 +23,13 @@ msgstr "" msgid "Couldn't get list of unmerged files:" msgstr "Impossible de récupérer la liste des fichiers non fusionnés :" -#: gitk:212 gitk:2381 +#: gitk:212 gitk:2399 msgid "Color words" -msgstr "" +msgstr "Colorier les mots différents" -#: gitk:217 gitk:2381 gitk:8220 gitk:8253 +#: gitk:217 gitk:2399 gitk:8239 gitk:8272 msgid "Markup words" -msgstr "" +msgstr "Marquer les mots différents" #: gitk:324 msgid "Error parsing revisions:" @@ -47,13 +47,10 @@ msgstr "" # FIXME : améliorer la traduction de 'file limite' #: gitk:396 -#, fuzzy msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." -msgstr "" -"Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné " -"n'est dans la limite des fichiers." +msgstr "Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné n'est dans la limite des fichiers." #: gitk:418 gitk:566 msgid "Error executing git log:" @@ -63,15 +60,15 @@ msgstr "Erreur à l'exécution de git log :" msgid "Reading" msgstr "Lecture en cours" -#: gitk:496 gitk:4525 +#: gitk:496 gitk:4544 msgid "Reading commits..." msgstr "Lecture des commits..." -#: gitk:499 gitk:1637 gitk:4528 +#: gitk:499 gitk:1637 gitk:4547 msgid "No commits selected" msgstr "Aucun commit sélectionné" -#: gitk:1445 gitk:4045 gitk:12432 +#: gitk:1445 gitk:4064 gitk:12469 msgid "Command line" msgstr "Ligne de commande" @@ -83,290 +80,294 @@ msgstr "Impossible de lire la sortie de git log :" msgid "No commit information available" msgstr "Aucune information disponible sur le commit" -#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 +#: gitk:1903 gitk:1932 gitk:4334 gitk:9702 gitk:11274 gitk:11554 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 -#: gitk:11242 gitk:11522 +#: gitk:1934 gitk:4336 gitk:9215 gitk:9294 gitk:9424 gitk:9473 gitk:9704 +#: gitk:11275 gitk:11555 msgid "Cancel" msgstr "Annuler" -#: gitk:2069 +#: gitk:2083 msgid "" msgstr "Mise à jour" -#: gitk:2070 +#: gitk:2084 msgid "" msgstr "Recharger" -#: gitk:2071 +#: gitk:2085 msgid "Reread re" msgstr "Relire les références" -#: gitk:2072 +#: gitk:2086 msgid " references" msgstr "Lister les références" -#: gitk:2074 +#: gitk:2088 msgid "Start git " msgstr "Démarrer git gui" -#: gitk:2076 +#: gitk:2090 msgid "" msgstr "Quitter" -#: gitk:2068 +#: gitk:2082 msgid "" msgstr "Fichier" -#: gitk:2080 +#: gitk:2094 msgid "" msgstr "Préférences" -#: gitk:2079 +#: gitk:2093 msgid "" msgstr "Éditer" -#: gitk:2084 +#: gitk:2098 msgid " view..." msgstr "Nouvelle vue..." -#: gitk:2085 +#: gitk:2099 msgid " view..." msgstr "Éditer la vue..." -#: gitk:2086 +#: gitk:2100 msgid " view" msgstr "Supprimer la vue" -#: gitk:2088 gitk:4043 +#: gitk:2102 msgid " files" msgstr "Tous les fichiers" -#: gitk:2083 gitk:4067 +#: gitk:2097 msgid "" msgstr "Vue" -#: gitk:2093 gitk:2103 gitk:3012 +#: gitk:2107 gitk:2117 msgid " gitk" msgstr "À propos de gitk" -#: gitk:2094 gitk:2108 +#: gitk:2108 gitk:2122 msgid " bindings" msgstr "Raccourcis clavier" -#: gitk:2092 gitk:2107 +#: gitk:2106 gitk:
[PATCH 2/2] gitk: fr.po: Sync translations with git
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- po/fr.po | 96 +++- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/po/fr.po b/po/fr.po index 2e55c89..c44f994 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-22 22:04+0100\n" -"PO-Revision-Date: 2016-01-22 23:05+0100\n" +"PO-Revision-Date: 2016-01-22 23:28+0100\n" "Last-Translator: Jean-Noël Avila <jn.av...@free.fr>\n" "Language-Team: git@vger.kernel.org\n" "Language: \n" @@ -95,27 +95,27 @@ msgstr "Mise à jour" #: gitk:2084 msgid "" -msgstr "Recharger" +msgstr "" #: gitk:2085 msgid "Reread re" -msgstr "Relire les références" +msgstr "Relire les réérences" #: gitk:2086 msgid " references" -msgstr "Lister les références" +msgstr " les références" #: gitk:2088 msgid "Start git " -msgstr "Démarrer git gui" +msgstr "Démarrer git " #: gitk:2090 msgid "" -msgstr "Quitter" +msgstr "" #: gitk:2082 msgid "" -msgstr "Fichier" +msgstr "" #: gitk:2094 msgid "" @@ -123,15 +123,15 @@ msgstr "Préférences" #: gitk:2093 msgid "" -msgstr "Éditer" +msgstr "&Éditer" #: gitk:2098 msgid " view..." -msgstr "Nouvelle vue..." +msgstr " vue..." #: gitk:2099 msgid " view..." -msgstr "Éditer la vue..." +msgstr "&Éditer la vue..." #: gitk:2100 msgid " view" @@ -143,7 +143,7 @@ msgstr "Tous les fichiers" #: gitk:2097 msgid "" -msgstr "Vue" +msgstr "" #: gitk:2107 gitk:2117 msgid " gitk" @@ -208,7 +208,7 @@ msgstr "Tous les champs" #: gitk:2332 gitk:4890 gitk:4923 gitk:6805 msgid "Headline" -msgstr "Surligner" +msgstr "Titre" #: gitk:2333 gitk:4890 gitk:6805 gitk:6935 gitk:7408 msgid "Comments" @@ -221,7 +221,7 @@ msgstr "Auteur" #: gitk:2333 gitk:4890 gitk:6805 gitk:7345 msgid "Committer" -msgstr "Auteur du commit" +msgstr "Validateur" #: gitk:2367 msgid "Search" @@ -261,11 +261,11 @@ msgstr "Arbre" #: gitk:2635 gitk:2656 msgid "Diff this -> selected" -msgstr "Diff entre ceci et la sélection" +msgstr "Diff ceci -> la sélection" #: gitk:2636 gitk:2657 msgid "Diff selected -> this" -msgstr "Diff entre sélection et ceci" +msgstr "Diff sélection -> ceci" #: gitk:2637 gitk:2658 msgid "Make patch" @@ -273,7 +273,7 @@ msgstr "Créer patch" #: gitk:2638 gitk:9273 msgid "Create tag" -msgstr "Créer tag" +msgstr "Créer étiquette" #: gitk:2639 msgid "Copy commit summary" @@ -643,7 +643,7 @@ msgstr "Références (liste d'éléments séparés par des espaces) :" #: gitk:4095 msgid "Branches & tags:" -msgstr "Branches & tags :" +msgstr "Branches & étiquettes :" #: gitk:4096 msgid "All refs" @@ -655,7 +655,7 @@ msgstr "Toutes les branches (locales)" #: gitk:4098 msgid "All tags" -msgstr "Tous les tags" +msgstr "Toutes les étiquettes" #: gitk:4099 msgid "All remote-tracking branches" @@ -671,7 +671,7 @@ msgstr "Auteur :" #: gitk:4102 msgid "Committer:" -msgstr "Commiteur :" +msgstr "Validateur :" #: gitk:4103 msgid "Commit Message:" @@ -711,7 +711,7 @@ msgstr "" #: gitk:4111 msgid "Since:" -msgstr "De :" +msgstr "Depuis :" #: gitk:4112 msgid "Until:" @@ -737,7 +737,6 @@ msgstr "Options diverses :" msgid "Strictly sort by date" msgstr "Trier par date" -# FIXME : traduction de "branch sides" #: gitk:4118 msgid "Mark branch sides" msgstr "Indiquer les côtés des branches" @@ -804,11 +803,11 @@ msgstr "Pas un ancêtre" #: gitk:5343 msgid "Local changes checked in to index but not committed" -msgstr "Modifications locales enregistrées dans l'index mais non commitées" +msgstr "Modifications locales enregistrées dans l'index mais non validées" #: gitk:5379 msgid "Local uncommitted changes, not checked in to index" -msgstr "Modifications locales non enregistrées dans l'index et non commitées" +msgstr "Modifications locales non enregistrées dans l'index et non va
[PATCH 1/2] gitk: fr.po: Update translation (311t)
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- po/fr.po | 761 +++ 1 file changed, 373 insertions(+), 388 deletions(-) diff --git a/po/fr.po b/po/fr.po index 80f72fb..2e55c89 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the gitk package. # Translators: # Emmanuel Trillaud <etrill...@gmail.com> -# +# Jean-Noël Avila <jn.av...@free.fr> msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-17 14:32+1000\n" -"PO-Revision-Date: 2009-11-19 22:13+0100\n" -"Last-Translator: Emmanuel Trillaud <etrill...@gmail.com>\n" +"POT-Creation-Date: 2016-01-22 22:04+0100\n" +"PO-Revision-Date: 2016-01-22 23:05+0100\n" +"Last-Translator: Jean-Noël Avila <jn.av...@free.fr>\n" "Language-Team: git@vger.kernel.org\n" "Language: \n" "MIME-Version: 1.0\n" @@ -23,13 +23,13 @@ msgstr "" msgid "Couldn't get list of unmerged files:" msgstr "Impossible de récupérer la liste des fichiers non fusionnés :" -#: gitk:212 gitk:2381 +#: gitk:212 gitk:2399 msgid "Color words" -msgstr "" +msgstr "Colorier les mots différents" -#: gitk:217 gitk:2381 gitk:8220 gitk:8253 +#: gitk:217 gitk:2399 gitk:8239 gitk:8272 msgid "Markup words" -msgstr "" +msgstr "Marquer les mots différents" #: gitk:324 msgid "Error parsing revisions:" @@ -47,13 +47,10 @@ msgstr "" # FIXME : améliorer la traduction de 'file limite' #: gitk:396 -#, fuzzy msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." -msgstr "" -"Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné " -"n'est dans la limite des fichiers." +msgstr "Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné n'est dans la limite des fichiers." #: gitk:418 gitk:566 msgid "Error executing git log:" @@ -63,15 +60,15 @@ msgstr "Erreur à l'exécution de git log :" msgid "Reading" msgstr "Lecture en cours" -#: gitk:496 gitk:4525 +#: gitk:496 gitk:4544 msgid "Reading commits..." msgstr "Lecture des commits..." -#: gitk:499 gitk:1637 gitk:4528 +#: gitk:499 gitk:1637 gitk:4547 msgid "No commits selected" msgstr "Aucun commit sélectionné" -#: gitk:1445 gitk:4045 gitk:12432 +#: gitk:1445 gitk:4064 gitk:12469 msgid "Command line" msgstr "Ligne de commande" @@ -83,290 +80,294 @@ msgstr "Impossible de lire la sortie de git log :" msgid "No commit information available" msgstr "Aucune information disponible sur le commit" -#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 +#: gitk:1903 gitk:1932 gitk:4334 gitk:9702 gitk:11274 gitk:11554 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 -#: gitk:11242 gitk:11522 +#: gitk:1934 gitk:4336 gitk:9215 gitk:9294 gitk:9424 gitk:9473 gitk:9704 +#: gitk:11275 gitk:11555 msgid "Cancel" msgstr "Annuler" -#: gitk:2069 +#: gitk:2083 msgid "" msgstr "Mise à jour" -#: gitk:2070 +#: gitk:2084 msgid "" msgstr "Recharger" -#: gitk:2071 +#: gitk:2085 msgid "Reread re" msgstr "Relire les références" -#: gitk:2072 +#: gitk:2086 msgid " references" msgstr "Lister les références" -#: gitk:2074 +#: gitk:2088 msgid "Start git " msgstr "Démarrer git gui" -#: gitk:2076 +#: gitk:2090 msgid "" msgstr "Quitter" -#: gitk:2068 +#: gitk:2082 msgid "" msgstr "Fichier" -#: gitk:2080 +#: gitk:2094 msgid "" msgstr "Préférences" -#: gitk:2079 +#: gitk:2093 msgid "" msgstr "Éditer" -#: gitk:2084 +#: gitk:2098 msgid " view..." msgstr "Nouvelle vue..." -#: gitk:2085 +#: gitk:2099 msgid " view..." msgstr "Éditer la vue..." -#: gitk:2086 +#: gitk:2100 msgid " view" msgstr "Supprimer la vue" -#: gitk:2088 gitk:4043 +#: gitk:2102 msgid " files" msgstr "Tous les fichiers" -#: gitk:2083 gitk:4067 +#: gitk:2097 msgid "" msgstr "Vue" -#: gitk:2093 gitk:2103 gitk:3012 +#: gitk:2107 gitk:2117 msgid " gitk" msgstr "À propos de gitk" -#: gitk:2094 gitk:2108 +#: gitk:2108 gitk:2122 msgid " bindings" msgstr "Raccourcis clavier" -#: gitk:2092 gitk:2107 +#: gitk:2106 gitk:
[PATCH 2/2] gitk: fr.po: Sync translations with git
Signed-off-by: Jean-Noel Avila <jn.av...@free.fr> --- po/fr.po | 96 +++- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/po/fr.po b/po/fr.po index 2e55c89..c44f994 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-22 22:04+0100\n" -"PO-Revision-Date: 2016-01-22 23:05+0100\n" +"PO-Revision-Date: 2016-01-22 23:28+0100\n" "Last-Translator: Jean-Noël Avila <jn.av...@free.fr>\n" "Language-Team: git@vger.kernel.org\n" "Language: \n" @@ -95,27 +95,27 @@ msgstr "Mise à jour" #: gitk:2084 msgid "" -msgstr "Recharger" +msgstr "" #: gitk:2085 msgid "Reread re" -msgstr "Relire les références" +msgstr "Relire les réérences" #: gitk:2086 msgid " references" -msgstr "Lister les références" +msgstr " les références" #: gitk:2088 msgid "Start git " -msgstr "Démarrer git gui" +msgstr "Démarrer git " #: gitk:2090 msgid "" -msgstr "Quitter" +msgstr "" #: gitk:2082 msgid "" -msgstr "Fichier" +msgstr "" #: gitk:2094 msgid "" @@ -123,15 +123,15 @@ msgstr "Préférences" #: gitk:2093 msgid "" -msgstr "Éditer" +msgstr "&Éditer" #: gitk:2098 msgid " view..." -msgstr "Nouvelle vue..." +msgstr " vue..." #: gitk:2099 msgid " view..." -msgstr "Éditer la vue..." +msgstr "&Éditer la vue..." #: gitk:2100 msgid " view" @@ -143,7 +143,7 @@ msgstr "Tous les fichiers" #: gitk:2097 msgid "" -msgstr "Vue" +msgstr "" #: gitk:2107 gitk:2117 msgid " gitk" @@ -208,7 +208,7 @@ msgstr "Tous les champs" #: gitk:2332 gitk:4890 gitk:4923 gitk:6805 msgid "Headline" -msgstr "Surligner" +msgstr "Titre" #: gitk:2333 gitk:4890 gitk:6805 gitk:6935 gitk:7408 msgid "Comments" @@ -221,7 +221,7 @@ msgstr "Auteur" #: gitk:2333 gitk:4890 gitk:6805 gitk:7345 msgid "Committer" -msgstr "Auteur du commit" +msgstr "Validateur" #: gitk:2367 msgid "Search" @@ -261,11 +261,11 @@ msgstr "Arbre" #: gitk:2635 gitk:2656 msgid "Diff this -> selected" -msgstr "Diff entre ceci et la sélection" +msgstr "Diff ceci -> la sélection" #: gitk:2636 gitk:2657 msgid "Diff selected -> this" -msgstr "Diff entre sélection et ceci" +msgstr "Diff sélection -> ceci" #: gitk:2637 gitk:2658 msgid "Make patch" @@ -273,7 +273,7 @@ msgstr "Créer patch" #: gitk:2638 gitk:9273 msgid "Create tag" -msgstr "Créer tag" +msgstr "Créer étiquette" #: gitk:2639 msgid "Copy commit summary" @@ -643,7 +643,7 @@ msgstr "Références (liste d'éléments séparés par des espaces) :" #: gitk:4095 msgid "Branches & tags:" -msgstr "Branches & tags :" +msgstr "Branches & étiquettes :" #: gitk:4096 msgid "All refs" @@ -655,7 +655,7 @@ msgstr "Toutes les branches (locales)" #: gitk:4098 msgid "All tags" -msgstr "Tous les tags" +msgstr "Toutes les étiquettes" #: gitk:4099 msgid "All remote-tracking branches" @@ -671,7 +671,7 @@ msgstr "Auteur :" #: gitk:4102 msgid "Committer:" -msgstr "Commiteur :" +msgstr "Validateur :" #: gitk:4103 msgid "Commit Message:" @@ -711,7 +711,7 @@ msgstr "" #: gitk:4111 msgid "Since:" -msgstr "De :" +msgstr "Depuis :" #: gitk:4112 msgid "Until:" @@ -737,7 +737,6 @@ msgstr "Options diverses :" msgid "Strictly sort by date" msgstr "Trier par date" -# FIXME : traduction de "branch sides" #: gitk:4118 msgid "Mark branch sides" msgstr "Indiquer les côtés des branches" @@ -804,11 +803,11 @@ msgstr "Pas un ancêtre" #: gitk:5343 msgid "Local changes checked in to index but not committed" -msgstr "Modifications locales enregistrées dans l'index mais non commitées" +msgstr "Modifications locales enregistrées dans l'index mais non validées" #: gitk:5379 msgid "Local uncommitted changes, not checked in to index" -msgstr "Modifications locales non enregistrées dans l'index et non commitées" +msgstr "Modifications locales non enregistrées dans l'index et non va
[PATCHv2] Add hint interactive cleaning
For translators, specify that a y/N reply is needed. Signed-off-by: Jean-Noel Avila jn.av...@free.fr --- builtin/clean.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builtin/clean.c b/builtin/clean.c index 7e7fdcf..98c103f 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -754,7 +754,8 @@ static int ask_each_cmd(void) /* Ctrl-D should stop removing files */ if (!eof) { qname = quote_path_relative(item-string, NULL, buf); - printf(_(remove %s? ), qname); + /* TRANSLATORS: Make sure to keep [y/N] as is */ + printf(_(Remove %s [y/N]? ), qname); if (strbuf_getline(confirm, stdin, '\n') != EOF) { strbuf_trim(confirm); } else { -- 2.3.0 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] Add hint for translators for y/n reply.
Signed-off-by: Jean-Noel Avila jn.av...@free.fr --- builtin/clean.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builtin/clean.c b/builtin/clean.c index 7e7fdcf..2c98661 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -754,6 +754,9 @@ static int ask_each_cmd(void) /* Ctrl-D should stop removing files */ if (!eof) { qname = quote_path_relative(item-string, NULL, buf); + /*TRANSLATORS: Make sure to include [Y] and [n] in your + translation. The program will only accept English input + at this point. */ printf(_(remove %s? ), qname); if (strbuf_getline(confirm, stdin, '\n') != EOF) { strbuf_trim(confirm); -- 2.3.0 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html