From: Jonathan Nieder Date: Mon, 23 Apr 2012 16:30:32 GMT Subject: Re: [PATCH 04/10] i18n: help: mark strings for translation Message-ID: <20120423163032.GF4832@burratino> In-Reply-To: <1335184230-8870-5-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy wrote: > --- a/help.c > +++ b/help.c > @@ -217,8 +217,9 @@ void list_commands(const char *title, struct cmdnames *main_cmds, > > if (main_cmds->cnt) { > const char *exec_path = git_exec_path(); > - printf("available %s in '%s'\n", title, exec_path); > - printf("----------------"); > + printf_ln(_("available %s in '%s'"), title, exec_path); > + /* TRANSLATORS: this must align with "available %s in '%s'" */ > + printf(_("----------------")); > mput_char('-', strlen(title) + strlen(exec_path)); Yuck. :) I would be tempted to do: static int strbuf_utf8_width(const struct strbuf *sb) { char char *p = sb->buf; size_t remainder = sb->len; int width; width = utf8_width(&p, &remainder); if (!p || remainder) return sb->len; return width; } ... struct strbuf sb = STRBUF_INIT; const char *p; strbuf_addf(&sb, _("available %s in '%s'"), title, exec_path); fwrite(sb.buf, sb.len, 1, stdout); putchar('\n'); /* NEEDSWORK: handle non-UTF8 locales? */ mput_char('-', strbuf_utf8_width(&sb)); strbuf_release(&sb);