On Mon, Aug 30, 2010 at 14:09, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > Marcin Cieslak wrote: > >> Well, in this case everybody will be force to have UTF-8 in output >> on-screen, not useful for people using ISO8859-*, KOI8-R and similar >> things... > > Can't we do: > > setlocale(LC_CTYPE, ""); > charset = nl_langinfo(CODESET); > setlocale(LC_CTYPE, "C"); > > to allow an arbitrary character set? Yes, it seems so! With this patch: --- a/gettext.c +++ b/gettext.c @@ -3,2 +3,3 @@ #include <libintl.h> +#include <langinfo.h> #include <stdlib.h> @@ -8,2 +9,3 @@ extern void git_setup_gettext(void) { char *envdir = getenv("GIT_TEXTDOMAINDIR"); + char *charset; @@ -19,2 +21,6 @@ extern void git_setup_gettext(void) { (void)setlocale(LC_MESSAGES, ""); + (void)setlocale(LC_CTYPE, ""); + charset = nl_langinfo(CODESET); + (void)bind_textdomain_codeset("git", charset); + (void)setlocale(LC_CTYPE, "C"); (void)textdomain("git"); The sanity test still passes: ./t0201-gettext-fallbacks.sh ......... ok ./t0200-gettext-basic.sh ............. ok ./t0203-gettext-setlocale-sanity.sh .. ok ./t0202-gettext-perl.sh .............. ok All tests successful. And the resulting git binary can emit both UTF-8 and ISO-8859-1 text from its *.po files, respectively: Bjó til tóma Git lind í /tmp/meh/.git/ Bj� til t�ma Git lind � /tmp/meh/.git/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html