Here's version 2 of the patch series begun by Jeff Epler to make Git optionally translatable with GNU gettext. Due to an error of mine only the cover letter of the previous series had "PATCH/RFC" in the subject line. That's rectified in this series. Aside from making sure the test suite always runs under LC_ALL=C, sanity tests for the translations, "how to translate" documentation, and the Perl Makefile issue noted below, this series is pretty much ready for inclusion in my opinion. Perl support was the last missing piece for translating all of the core C+Shell+Perl code. New stuff: * Perl scripts are now translatable through the Gettext facility. Like the shellscript facility I added this has a graceful fallback if the prerequisite libraries aren't installed. I'm using the libintl-perl library which provides Locale::Messages. I could also have used liblocale-gettext-perl which provides Locale::gettext. Debian seems to prefer the latter, but the former is recomended by GNU. The new Git::Gettext library could probably be modified to try both. It works 100% for me. Aside from this bit: # TODO: How do I make the sed replacements in the top level # Makefile reach me here? #our $TEXTDOMAINDIR = q|@@LOCALEDIR@@|; our $TEXTDOMAINDIR = q</usr/local/share/locale>; I couldn't figure out how to make the sed substitution the core /Makefile does for e.g. @@GIT_VERSION@@ work for the hybrid Makefile / perl.mak setup in perl/. Suggestions from contributors more familiar with Git's build system welcome. * Another thing to note regarding Perl. We have some Perl code that's obviously intended to work with perls as old as 5.6. It would be preferable to translation support if the minimum were bumped to 5.8. Here's why: $ perl -e 'printf "%2\$s the %1\$s has\n", ("Clone War", "Begun")' Begun the Clone War has Perl 5.6's printf doesn't support that printf syntax, which means that translators would have to make do with the word order of the English messages. I haven't seen any documentation about Perl coding guidelines or Perl versions that we aim to support in Documentation/, so I don't know if 5.6 is supposed to be supported or whether the support is just incidental. Note that this 5.8 could only be a requirement if the user was using a translation with positional printf formats. Users interested in running the English-only version could still do so on 5.6. * Updated is.po. It now contains example translations for C, Shell and Perl programs as a proof of concept. * Rewrote the commit message of the shell script support commit to use use the gettext: prefix. Jeff Epler (1): Add infrastructure for translating Git with gettext Ævar Arnfjörð Bjarmason (5): gitignore: Ignore files generated by gettext Makefile: Remove Gettext files on make clean gettext: Add a Gettext interface for shell scripts gettext: Add a Gettext interface for Perl gettext: Add a skeleton po/is.po .gitignore | 1 + Makefile | 37 +++++++- gettext.c | 17 +++ gettext.h | 15 +++ git-pull.sh | 15 ++-- git-send-email.perl | 3 +- git-sh-setup.sh | 33 ++++++ git.c | 3 + perl/Git/Gettext.pm | 83 +++++++++++++++ perl/Makefile.PL | 5 +- po/.gitignore | 1 + po/is.po | 282 +++++++++++++++++++++++++++++++++++++++++++++++++++ wt-status.c | 129 ++++++++++++------------ 13 files changed, 550 insertions(+), 74 deletions(-) create mode 100644 gettext.c create mode 100644 gettext.h create mode 100644 perl/Git/Gettext.pm create mode 100644 po/.gitignore create mode 100644 po/is.po -- 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