提交 9665627d 编写于 作者: N Nguyễn Thái Ngọc Duy 提交者: Junio C Hamano

i18n: help: mark strings for translation

This patch also marks most common commands' synopsis for translation
so that "git help" gives a friendly listing.
Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 7d29afd4
...@@ -563,6 +563,7 @@ VCSSVN_H += vcs-svn/svndump.h ...@@ -563,6 +563,7 @@ VCSSVN_H += vcs-svn/svndump.h
MISC_H += branch.h MISC_H += branch.h
MISC_H += bundle.h MISC_H += bundle.h
MISC_H += bisect.h MISC_H += bisect.h
MISC_H += common-cmds.h
MISC_H += fetch-pack.h MISC_H += fetch-pack.h
MISC_H += thread-utils.h MISC_H += thread-utils.h
MISC_H += send-pack.h MISC_H += send-pack.h
......
...@@ -54,7 +54,7 @@ static enum help_format parse_help_format(const char *format) ...@@ -54,7 +54,7 @@ static enum help_format parse_help_format(const char *format)
return HELP_FORMAT_INFO; return HELP_FORMAT_INFO;
if (!strcmp(format, "web") || !strcmp(format, "html")) if (!strcmp(format, "web") || !strcmp(format, "html"))
return HELP_FORMAT_WEB; return HELP_FORMAT_WEB;
die("unrecognized help format '%s'", format); die(_("unrecognized help format '%s'"), format);
} }
static const char *get_man_viewer_info(const char *name) static const char *get_man_viewer_info(const char *name)
...@@ -82,7 +82,7 @@ static int check_emacsclient_version(void) ...@@ -82,7 +82,7 @@ static int check_emacsclient_version(void)
ec_process.err = -1; ec_process.err = -1;
ec_process.stdout_to_stderr = 1; ec_process.stdout_to_stderr = 1;
if (start_command(&ec_process)) if (start_command(&ec_process))
return error("Failed to start emacsclient."); return error(_("Failed to start emacsclient."));
strbuf_read(&buffer, ec_process.err, 20); strbuf_read(&buffer, ec_process.err, 20);
close(ec_process.err); close(ec_process.err);
...@@ -95,7 +95,7 @@ static int check_emacsclient_version(void) ...@@ -95,7 +95,7 @@ static int check_emacsclient_version(void)
if (prefixcmp(buffer.buf, "emacsclient")) { if (prefixcmp(buffer.buf, "emacsclient")) {
strbuf_release(&buffer); strbuf_release(&buffer);
return error("Failed to parse emacsclient version."); return error(_("Failed to parse emacsclient version."));
} }
strbuf_remove(&buffer, 0, strlen("emacsclient")); strbuf_remove(&buffer, 0, strlen("emacsclient"));
...@@ -103,7 +103,7 @@ static int check_emacsclient_version(void) ...@@ -103,7 +103,7 @@ static int check_emacsclient_version(void)
if (version < 22) { if (version < 22) {
strbuf_release(&buffer); strbuf_release(&buffer);
return error("emacsclient version '%d' too old (< 22).", return error(_("emacsclient version '%d' too old (< 22)."),
version); version);
} }
...@@ -121,7 +121,7 @@ static void exec_woman_emacs(const char *path, const char *page) ...@@ -121,7 +121,7 @@ static void exec_woman_emacs(const char *path, const char *page)
path = "emacsclient"; path = "emacsclient";
strbuf_addf(&man_page, "(woman \"%s\")", page); strbuf_addf(&man_page, "(woman \"%s\")", page);
execlp(path, "emacsclient", "-e", man_page.buf, (char *)NULL); execlp(path, "emacsclient", "-e", man_page.buf, (char *)NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning(_("failed to exec '%s': %s"), path, strerror(errno));
} }
} }
...@@ -149,7 +149,7 @@ static void exec_man_konqueror(const char *path, const char *page) ...@@ -149,7 +149,7 @@ static void exec_man_konqueror(const char *path, const char *page)
path = "kfmclient"; path = "kfmclient";
strbuf_addf(&man_page, "man:%s(1)", page); strbuf_addf(&man_page, "man:%s(1)", page);
execlp(path, filename, "newTab", man_page.buf, (char *)NULL); execlp(path, filename, "newTab", man_page.buf, (char *)NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning(_("failed to exec '%s': %s"), path, strerror(errno));
} }
} }
...@@ -158,7 +158,7 @@ static void exec_man_man(const char *path, const char *page) ...@@ -158,7 +158,7 @@ static void exec_man_man(const char *path, const char *page)
if (!path) if (!path)
path = "man"; path = "man";
execlp(path, "man", page, (char *)NULL); execlp(path, "man", page, (char *)NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning(_("failed to exec '%s': %s"), path, strerror(errno));
} }
static void exec_man_cmd(const char *cmd, const char *page) static void exec_man_cmd(const char *cmd, const char *page)
...@@ -166,7 +166,7 @@ static void exec_man_cmd(const char *cmd, const char *page) ...@@ -166,7 +166,7 @@ static void exec_man_cmd(const char *cmd, const char *page)
struct strbuf shell_cmd = STRBUF_INIT; struct strbuf shell_cmd = STRBUF_INIT;
strbuf_addf(&shell_cmd, "%s %s", cmd, page); strbuf_addf(&shell_cmd, "%s %s", cmd, page);
execl("/bin/sh", "sh", "-c", shell_cmd.buf, (char *)NULL); execl("/bin/sh", "sh", "-c", shell_cmd.buf, (char *)NULL);
warning("failed to exec '%s': %s", cmd, strerror(errno)); warning(_("failed to exec '%s': %s"), cmd, strerror(errno));
} }
static void add_man_viewer(const char *name) static void add_man_viewer(const char *name)
...@@ -206,8 +206,8 @@ static int add_man_viewer_path(const char *name, ...@@ -206,8 +206,8 @@ static int add_man_viewer_path(const char *name,
if (supported_man_viewer(name, len)) if (supported_man_viewer(name, len))
do_add_man_viewer_info(name, len, value); do_add_man_viewer_info(name, len, value);
else else
warning("'%s': path for unsupported man viewer.\n" warning(_("'%s': path for unsupported man viewer.\n"
"Please consider using 'man.<tool>.cmd' instead.", "Please consider using 'man.<tool>.cmd' instead."),
name); name);
return 0; return 0;
...@@ -218,8 +218,8 @@ static int add_man_viewer_cmd(const char *name, ...@@ -218,8 +218,8 @@ static int add_man_viewer_cmd(const char *name,
const char *value) const char *value)
{ {
if (supported_man_viewer(name, len)) if (supported_man_viewer(name, len))
warning("'%s': cmd for supported man viewer.\n" warning(_("'%s': cmd for supported man viewer.\n"
"Please consider using 'man.<tool>.path' instead.", "Please consider using 'man.<tool>.path' instead."),
name); name);
else else
do_add_man_viewer_info(name, len, value); do_add_man_viewer_info(name, len, value);
...@@ -280,11 +280,11 @@ void list_common_cmds_help(void) ...@@ -280,11 +280,11 @@ void list_common_cmds_help(void)
longest = strlen(common_cmds[i].name); longest = strlen(common_cmds[i].name);
} }
puts("The most commonly used git commands are:"); puts(_("The most commonly used git commands are:"));
for (i = 0; i < ARRAY_SIZE(common_cmds); i++) { for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
printf(" %s ", common_cmds[i].name); printf(" %s ", common_cmds[i].name);
mput_char(' ', longest - strlen(common_cmds[i].name)); mput_char(' ', longest - strlen(common_cmds[i].name));
puts(common_cmds[i].help); puts(_(common_cmds[i].help));
} }
} }
...@@ -348,7 +348,7 @@ static void exec_viewer(const char *name, const char *page) ...@@ -348,7 +348,7 @@ static void exec_viewer(const char *name, const char *page)
else if (info) else if (info)
exec_man_cmd(info, page); exec_man_cmd(info, page);
else else
warning("'%s': unknown man viewer.", name); warning(_("'%s': unknown man viewer."), name);
} }
static void show_man_page(const char *git_cmd) static void show_man_page(const char *git_cmd)
...@@ -365,7 +365,7 @@ static void show_man_page(const char *git_cmd) ...@@ -365,7 +365,7 @@ static void show_man_page(const char *git_cmd)
if (fallback) if (fallback)
exec_viewer(fallback, page); exec_viewer(fallback, page);
exec_viewer("man", page); exec_viewer("man", page);
die("no man viewer handled the request"); die(_("no man viewer handled the request"));
} }
static void show_info_page(const char *git_cmd) static void show_info_page(const char *git_cmd)
...@@ -373,7 +373,7 @@ static void show_info_page(const char *git_cmd) ...@@ -373,7 +373,7 @@ static void show_info_page(const char *git_cmd)
const char *page = cmd_to_page(git_cmd); const char *page = cmd_to_page(git_cmd);
setenv("INFOPATH", system_path(GIT_INFO_PATH), 1); setenv("INFOPATH", system_path(GIT_INFO_PATH), 1);
execlp("info", "info", "gitman", page, (char *)NULL); execlp("info", "info", "gitman", page, (char *)NULL);
die("no info viewer handled the request"); die(_("no info viewer handled the request"));
} }
static void get_html_page_path(struct strbuf *page_path, const char *page) static void get_html_page_path(struct strbuf *page_path, const char *page)
...@@ -384,7 +384,7 @@ static void get_html_page_path(struct strbuf *page_path, const char *page) ...@@ -384,7 +384,7 @@ static void get_html_page_path(struct strbuf *page_path, const char *page)
/* Check that we have a git documentation directory. */ /* Check that we have a git documentation directory. */
if (stat(mkpath("%s/git.html", html_path), &st) if (stat(mkpath("%s/git.html", html_path), &st)
|| !S_ISREG(st.st_mode)) || !S_ISREG(st.st_mode))
die("'%s': not a documentation directory.", html_path); die(_("'%s': not a documentation directory."), html_path);
strbuf_init(page_path, 0); strbuf_init(page_path, 0);
strbuf_addf(page_path, "%s/%s.html", html_path, page); strbuf_addf(page_path, "%s/%s.html", html_path, page);
...@@ -424,16 +424,16 @@ int cmd_help(int argc, const char **argv, const char *prefix) ...@@ -424,16 +424,16 @@ int cmd_help(int argc, const char **argv, const char *prefix)
parsed_help_format = help_format; parsed_help_format = help_format;
if (show_all) { if (show_all) {
printf("usage: %s\n\n", git_usage_string); printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
list_commands("git commands", &main_cmds, &other_cmds); list_commands(_("git commands"), &main_cmds, &other_cmds);
printf("%s\n", git_more_info_string); printf("%s\n", _(git_more_info_string));
return 0; return 0;
} }
if (!argv[0]) { if (!argv[0]) {
printf("usage: %s\n\n", git_usage_string); printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
list_common_cmds_help(); list_common_cmds_help();
printf("\n%s\n", git_more_info_string); printf("\n%s\n", _(git_more_info_string));
return 0; return 0;
} }
...@@ -445,7 +445,7 @@ int cmd_help(int argc, const char **argv, const char *prefix) ...@@ -445,7 +445,7 @@ int cmd_help(int argc, const char **argv, const char *prefix)
alias = alias_lookup(argv[0]); alias = alias_lookup(argv[0]);
if (alias && !is_git_command(argv[0])) { if (alias && !is_git_command(argv[0])) {
printf("`git %s' is aliased to `%s'\n", argv[0], alias); printf_ln(_("`git %s' is aliased to `%s'"), argv[0], alias);
return 0; return 0;
} }
......
...@@ -16,7 +16,7 @@ do ...@@ -16,7 +16,7 @@ do
/^NAME/,/git-'"$cmd"'/H /^NAME/,/git-'"$cmd"'/H
${ ${
x x
s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/ s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", N_("\1")},/
p p
}' "Documentation/git-$cmd.txt" }' "Documentation/git-$cmd.txt"
done done
......
...@@ -13,7 +13,7 @@ const char git_usage_string[] = ...@@ -13,7 +13,7 @@ const char git_usage_string[] =
" <command> [<args>]"; " <command> [<args>]";
const char git_more_info_string[] = const char git_more_info_string[] =
"See 'git help <command>' for more information on a specific command."; N_("See 'git help <command>' for more information on a specific command.");
static struct startup_info git_startup_info; static struct startup_info git_startup_info;
static int use_pager = -1; static int use_pager = -1;
......
...@@ -217,8 +217,9 @@ void list_commands(const char *title, struct cmdnames *main_cmds, ...@@ -217,8 +217,9 @@ void list_commands(const char *title, struct cmdnames *main_cmds,
if (main_cmds->cnt) { if (main_cmds->cnt) {
const char *exec_path = git_exec_path(); const char *exec_path = git_exec_path();
printf("available %s in '%s'\n", title, exec_path); printf_ln(_("available %s in '%s'"), title, exec_path);
printf("----------------"); /* TRANSLATORS: this must align with "available %s in '%s'" */
printf(_("----------------"));
mput_char('-', strlen(title) + strlen(exec_path)); mput_char('-', strlen(title) + strlen(exec_path));
putchar('\n'); putchar('\n');
pretty_print_string_list(main_cmds, longest); pretty_print_string_list(main_cmds, longest);
...@@ -226,8 +227,12 @@ void list_commands(const char *title, struct cmdnames *main_cmds, ...@@ -226,8 +227,12 @@ void list_commands(const char *title, struct cmdnames *main_cmds,
} }
if (other_cmds->cnt) { if (other_cmds->cnt) {
printf("%s available from elsewhere on your $PATH\n", title); printf_ln(_("%s available from elsewhere on your $PATH"), title);
printf("---------------------------------------"); /* TRANSLATORS:
* this must align with
* "%s available from elsewhere on your $PATH"
*/
printf(_("---------------------------------------"));
mput_char('-', strlen(title)); mput_char('-', strlen(title));
putchar('\n'); putchar('\n');
pretty_print_string_list(other_cmds, longest); pretty_print_string_list(other_cmds, longest);
...@@ -341,7 +346,7 @@ const char *help_unknown_cmd(const char *cmd) ...@@ -341,7 +346,7 @@ const char *help_unknown_cmd(const char *cmd)
sizeof(*main_cmds.names), levenshtein_compare); sizeof(*main_cmds.names), levenshtein_compare);
if (!main_cmds.cnt) if (!main_cmds.cnt)
die ("Uh oh. Your system reports no Git commands at all."); die(_("Uh oh. Your system reports no Git commands at all."));
/* skip and count prefix matches */ /* skip and count prefix matches */
for (n = 0; n < main_cmds.cnt && !main_cmds.names[n]->len; n++) for (n = 0; n < main_cmds.cnt && !main_cmds.names[n]->len; n++)
...@@ -362,23 +367,26 @@ const char *help_unknown_cmd(const char *cmd) ...@@ -362,23 +367,26 @@ const char *help_unknown_cmd(const char *cmd)
const char *assumed = main_cmds.names[0]->name; const char *assumed = main_cmds.names[0]->name;
main_cmds.names[0] = NULL; main_cmds.names[0] = NULL;
clean_cmdnames(&main_cmds); clean_cmdnames(&main_cmds);
fprintf(stderr, "WARNING: You called a Git command named '%s', " fprintf_ln(stderr,
"which does not exist.\n" _("WARNING: You called a Git command named '%s', "
"Continuing under the assumption that you meant '%s'\n", "which does not exist.\n"
"Continuing under the assumption that you meant '%s'"),
cmd, assumed); cmd, assumed);
if (autocorrect > 0) { if (autocorrect > 0) {
fprintf(stderr, "in %0.1f seconds automatically...\n", fprintf_ln(stderr, _("in %0.1f seconds automatically..."),
(float)autocorrect/10.0); (float)autocorrect/10.0);
poll(NULL, 0, autocorrect * 100); poll(NULL, 0, autocorrect * 100);
} }
return assumed; return assumed;
} }
fprintf(stderr, "git: '%s' is not a git command. See 'git --help'.\n", cmd); fprintf_ln(stderr, _("git: '%s' is not a git command. See 'git --help'."), cmd);
if (SIMILAR_ENOUGH(best_similarity)) { if (SIMILAR_ENOUGH(best_similarity)) {
fprintf(stderr, "\nDid you mean %s?\n", fprintf_ln(stderr,
n < 2 ? "this": "one of these"); Q_("\nDid you mean this?",
"\nDid you mean one of these?",
n));
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
fprintf(stderr, "\t%s\n", main_cmds.names[i]->name); fprintf(stderr, "\t%s\n", main_cmds.names[i]->name);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册