[PATCH/RFC v3 0/7] Add internationalization support to Git
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:48:53
Here's version 3 of the patch series begun by Jeff Epler to make Git
optionally translatable with GNU gettext.
This version contains a lot of fixes to issues pointe out by Jakub
Narebski, and other misc.
Since the last RFC:
* Squashed some infrastructure patches into the initial commit.
* Added basic sanity testing for the Gettext support
* .mo files aren't installed on `make install` time if NO_GETTEXT
was specified during the build.
In C gettext support isn't compiled in. But this happens
implicitly in Shell/Perl because the locale files won't be there
on the system.
* NO_GETTEXT is now set correctly depending on whether libintl.h
exists when autoconf is used to build Git. Whether this is the
best approach to gettext detection with autoconf is being
discussed in the "[PATCH/RCF] autoconf: Check if <libintl.h>
exists and set NO_GETTEX" thread.
* The localedir is now passed to the Perl code via Makefile
trickery. It's no longer hardcoded to /usr/local/share/locale
* Add `--keyword=` to all xgettext invocations. This way we make
sure that only our gettext functions are extracted, not the
defaults xgettext.
* Git::Gettext is now called Git::I18N
* Remove LICENSE from I18N.pm. It was a boilerplate that shouldn't
have been there.
* Use qw() not qw< > in Perl code.
* Changed the interface to Git::I18N. Now it exports all its
functions by default. If something's using the module it's going
to want to import everything anyway. This makes the issue of '@{
$EXPORT_TAGS{'all'} }' being ugly syntax moot since it isn't used
anymore.
Users can still import selectively by specifying arguments to
import().
* The GIT_TEXTDOMAINDIR environment variable can be set to override
where the C/Perl/Shell locale files are found. This is intended to
be set by the test suite.
* The boolean test for whether gettext.sh was successfully loaded
was inverted (oops!)
Things that haven't changed:
Jakub pointed out some things that I might want to change that I
didn't yet. Mostly because I didn't have time yet.
* Git::I18N still uses Locale::Messages, not Locale::TextDomain.
I'm still not convinced that the low-level Locale::Messages
interface isn't a better fit for us. But I didn't get
Locale::TextDomain working at all today so I'm still using
Locale::Messages.
* Perl still uses gettext($), not __($) (see above).
* use Exporter 'import': Subclassing Exporter instead since we
apparently need Perl 5.6 compatibility.
Jeff Epler (1):
Add infrastructure for translating Git with gettext
Ævar Arnfjörð Bjarmason (6):
gettext: Add a Gettext interface for shell scripts
gettext: Add a Gettext interface for Perl
Makefile: Don't install Gettext .mo files if NO_GETTEXT
Makefile: Override --keyword= for all languages
gettext: Basic sanity tests for Git's Gettext support
gettext: Add a skeleton po/is.po
.gitignore | 1 +
Makefile | 43 ++++++++-
config.mak.in | 1 +
configure.ac | 6 +
gettext.c | 25 +++++
gettext.h | 13 +++
git-pull.sh | 15 ++--
git-send-email.perl | 3 +-
git-sh-setup.sh | 33 ++++++
git.c | 3 +
perl/Git/I18N.pm | 73 +++++++++++++
perl/Makefile | 3 +-
perl/Makefile.PL | 14 +++-
po/.gitignore | 1 +
po/is.po | 282 +++++++++++++++++++++++++++++++++++++++++++++++++++
t/t0200-gettext.sh | 28 +++++
wt-status.c | 129 ++++++++++++------------
17 files changed, 597 insertions(+), 76 deletions(-)
create mode 100644 gettext.c
create mode 100644 gettext.h
create mode 100644 perl/Git/I18N.pm
create mode 100644 po/.gitignore
create mode 100644 po/is.po
create mode 100755 t/t0200-gettext.sh