On Thu, Jan 19, 2012 at 19:30, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Johannes Sixt <j.sixt@xxxxxxxxxxxxx> writes: > >> ... We have, e.g., NO_MMAP, and I can set it to request >> that some alternative is used, even if I have a working mmap(). The option >> name "NO_GETTEXT" is in exactly the same spirit. >> >>> In the current approach we take for shell scripts, we cannot have "No i18n >>> whatsoever and messages are emit with printf and echo". We always have to >>> go through gettext/eval_gettext even though they may be an implementation >>> that does not do i18n at all. >> >> Just like we go through _() in C code, even though there may be an >> implementation that does not do i18n at all, right? > > Yes, just like that. The small detail that _() can be #define'd out to > empty while gettext/eval_gettext cannot be made to be no-impact like that > does not really matter. > >> In C, it is easy, in shell code it may be more involved. > > Correct. To elaborate, the C code can: * Use the system gettext library to get translations. * Use the system gettext library, but effectively be pass-through because the user has the C locale. * Use our fallback functions which in any modern compiler will be optimized out. However with the shell code we can: 1. Be using the system gettext & eval_gettext to get translations. 2. Be using the system gettext & eval_gettext as pass-through, either because we don't have translations since we've installed with NO_GETTEXT=YesPlease, or because we're in the C locale. 3. Haven't detected that gettext.sh etc. exists, so we have to provide our own fallbacks. The proposed patch would move all users of NO_GETTEXT=YesPlease to #3, even though on most platforms we don't need to define our own dummy fallbacks since the system already provides them. I don't particularly like it because I'd rather use the OS vendor's implementation if possible, even for fallback. However it being broken is also unacceptable, but I think the way forward is to detect the breakage either at compile time or at runtime, to that end Alex could you provide us with the output from the following commands on the offending system where this is broken: $ type gettext.sh $ gettext.sh --version $ gettext -h $ gettext "some test text" $ . gettext.sh eval_gettext $ variable=value eval_gettext "some \$variable" Then how the eval_gettext function is defined: $ type eval_gettext eval_gettext is a function eval_gettext () { gettext "$1" | ( export PATH `envsubst --variables "$1"`; envsubst "$1" ) } And then a --version for whatever programs that function uses, e.g. here: $ envsubst --version Once we know how it breaks we can e.g. add configure tests for checking whether we can use the system's gettext library for the fallbacks. Could you also run the git test suite as described in t/README? I'd expect a lot of the i18n tests to fail, but it would be curious to see which ones exactly. -- 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