From: Junio C Hamano <gitster@pobox•com>
To: Jiang Xin <worldhello.net@gmail•com>
Cc: "Johannes Schindelin" <Johannes.Schindelin@gmx•de>,
"Git List" <git@vger•kernel.org>,
"Jean-Noël Avila" <jn.avila@free•fr>
Subject: Re: [PATCH] PRItime: wrap PRItime for better l10n compatibility
Date: Thu, 20 Jul 2017 11:57:01 -0700 [thread overview]
Message-ID: <xmqqfudrkkci.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqqo9sfkm32.fsf@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Thu, 20 Jul 2017 11:19:29 -0700")
> The use of "make pot" from the top-level is already described in
> po/README, so the only thing that we need is something like this
> change. I'll follow up this message with a sample output from the
> updated process to ask others to sanity check the result (they are
> tiny) in a separate message.
So I am inclined to apply this directly on 'master' before tagging
the first release candidate that includes timestamp_t; I'll wait for
the earth to rotate once for comments, though.
Thanks.
-- >8 --
Subject: [PATCH] Makefile: help gettext tools to cope with our custom PRItime format
We started using our own timestamp_t type and PRItime format
specifier to go along with it, so that we can later change the
underlying type and output format more easily, but this does not
play well with gettext tools.
Because gettext tools need to keep the *.po file portable across
platforms, they have to special-case the format specifiers like
PRIuMAX that are known types in inttypes.h, instead of letting CPP
handle strings like
"%" PRIuMAX " seconds ago"
as an ordinary string concatenation. They fundamentally cannot do
the same for our own custom type/format.
Given that po/git.pot needs to be generated only once every release
and by only one person, i.e. the l10n coordinator, let's update the
Makefile rule to generate po/git.pot so that gettext tools are run
on a munged set of sources in which all mentions of PRItime are
replaced with PRIuMAX, which is what we happen to use right now.
This way, developers do not have to care that PRItime does not play
well with gettext, and translators do not have to care that we use
our own PRItime.
The credit for the idea to munge the source files goes to Dscho.
Possible bugs are mine.
Helped-by: Jiang Xin <worldhello.net@gmail•com>
Helped-by: Johannes Schindelin <johannes.schindelin@gmx•de>
Signed-off-by: Junio C Hamano <gitster@pobox•com>
---
Makefile | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/Makefile b/Makefile
index ba4359ef8d..527502835f 100644
--- a/Makefile
+++ b/Makefile
@@ -2216,12 +2216,32 @@ LOCALIZED_SH += t/t0200/test.sh
LOCALIZED_PERL += t/t0200/test.perl
endif
+## Note that this is meant to be run only by the localization coordinator
+## under a very controlled condition, i.e. (1) it is to be run in a
+## Git repository (not a tarball extract), (2) any local modifications
+## will be lost.
+## Gettext tools cannot work with our own custom PRItime type, so
+## we replace PRItime with PRIuMAX. Weneed to update this if we
+## switch to a signed type with PRIdMAX.
+
po/git.pot: $(GENERATED_H) FORCE
+ # All modifications will be reverted at the end, so we do not
+ # want to have any local changes
+ git diff --quiet HEAD && git diff --quiet --cached
+
+ @for s in $(LOCALIZED_C) $(LOCALIZED_SH) $(LOCALIZED_PERL); \
+ do \
+ sed -e 's|PRItime|PRIuMAX|g' <"$$s" >"$$s+" && \
+ cat "$$s+" >"$$s" && rm "$$s+"; \
+ done
+
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ $(XGETTEXT_FLAGS_C) $(LOCALIZED_C)
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_SH) \
$(LOCALIZED_SH)
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_PERL) \
$(LOCALIZED_PERL)
+
+ git reset --hard
mv $@+ $@
.PHONY: pot
--
2.14.0-rc0-194-g965e058453
next prev parent reply other threads:[~2017-07-20 18:57 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-15 5:06 [L10N] Kickoff of translation for Git 2.14.0 round 1 Jiang Xin
2017-07-15 19:30 ` Jean-Noël Avila
2017-07-17 0:56 ` Jiang Xin
2017-07-17 16:06 ` Johannes Schindelin
2017-07-18 1:28 ` Jiang Xin
2017-07-17 15:23 ` [PATCH] PRItime: wrap PRItime for better l10n compatibility Jiang Xin
2017-07-17 17:10 ` Junio C Hamano
2017-07-18 1:33 ` Jiang Xin
2017-07-18 17:35 ` Junio C Hamano
2017-07-19 0:57 ` Jiang Xin
2017-07-19 13:25 ` Johannes Schindelin
2017-07-19 21:32 ` Junio C Hamano
2017-07-19 23:03 ` Junio C Hamano
2017-07-20 18:19 ` Junio C Hamano
2017-07-20 18:24 ` Junio C Hamano
2017-07-20 18:57 ` Junio C Hamano [this message]
2017-07-21 14:38 ` Jean-Noël Avila
2017-07-21 14:54 ` Junio C Hamano
2017-07-22 11:21 ` Johannes Schindelin
2017-07-22 15:53 ` Junio C Hamano
2017-07-25 10:20 ` Johannes Schindelin
2017-07-25 20:46 ` Junio C Hamano
2017-07-21 22:17 ` Jiang Xin
2017-07-21 22:40 ` Junio C Hamano
2017-07-21 23:13 ` Jiang Xin
2017-07-21 23:34 ` Junio C Hamano
2017-07-22 0:43 ` Jiang Xin
2017-07-22 0:52 ` [PATCH] Makefile: generate pot file using a tweaked version of xgettext Jiang Xin
2017-07-22 2:44 ` [PATCH] PRItime: wrap PRItime for better l10n compatibility Junio C Hamano
2017-07-22 11:28 ` Johannes Schindelin
2017-07-22 15:48 ` Junio C Hamano
2017-07-24 1:50 ` Jiang Xin
2017-07-25 10:22 ` Johannes Schindelin
2017-07-25 20:49 ` Junio C Hamano
2017-07-24 1:38 ` Jiang Xin
2017-07-24 19:09 ` Junio C Hamano
2017-07-25 10:25 ` Johannes Schindelin
2017-07-23 2:33 ` Jean-Noël AVILA
2017-07-23 21:54 ` Junio C Hamano
2017-07-24 2:02 ` Jiang Xin
2017-07-24 19:10 ` Junio C Hamano
2017-07-22 17:02 ` [L10N] Kickoff of translation for Git 2.14.0 round 1 Kaartic Sivaraam
2017-07-23 2:43 ` Jean-Noël Avila
2017-07-19 5:44 ` Jordi Mas
2017-07-20 0:50 ` Jiang Xin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqfudrkkci.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox$(echo .)com \
--cc=Johannes.Schindelin@gmx$(echo .)de \
--cc=git@vger$(echo .)kernel.org \
--cc=jn.avila@free$(echo .)fr \
--cc=worldhello.net@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox