[PATCH/RFC v2 0/6] Add internationalization support to Git
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:48:52
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