git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] PRItime: wrap PRItime for better l10n compatibility

From
Jiang Xin <worldhello.net@gmail.com>
Date
Jul 21, 2017, 22:17 UTC
Message-ID
<CANYiYbGSaaFOq7iw=ON1Oo87bSA96o=zyzym5RDT32kMae7bsw@mail.gmail.com>
In-Reply-To
<xmqqo9sfkm32.fsf@gitster.mtv.corp.google.com>
2017-07-21 2:19 GMT+08:00 Junio C Hamano <gitster@pobox.com>:
Show 68 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>
>>> But there may be hope. Since the character sequence "PRItime" is highly
>>> unlikely to occur in Git's source code in any context other than the
>>> format to print/parse timestamp_t, it should be possible to automate a the
>>> string replacement
>>>
>>>      git ls-files -z \*.[ch] |
>>>      xargs -0r sed -i 's/PRItime/PRIuMAX/g'
>>>
>>> (assuming, of course, that you use GNU sed, not BSD sed, for which the
>>> `-i` needs to read `-i ''` instead) as part of the update?
>>
>> I somehow missed this bit.
>>
>> Given that this needs to be done only once every release by only one
>> person (i.e. the l10n coordinator who updates *.pot file), as long
>> as the procedure is automated as much as possible to ease the pain
>> for the l10n coordinator and clearly described in the "Maintaining
>> the po/git.pot file" section of po/README, something along that line
>> does sound like a very tempting approach.  If it works well, it is
>> certainly much easier for normal developers than the other possible
>> alternatives I mentioned in my previous response.
>
> So, I was offline for most of the day yesterday and with this issue
> blocking the release candidate, didn't manage to tag -rc1.
>
> 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.
>
> Thanks.
>
>
>  Makefile | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index ba4359ef8d..7069a12f75 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2216,12 +2216,22 @@ LOCALIZED_SH += t/t0200/test.sh
>  LOCALIZED_PERL += t/t0200/test.perl
>  endif
>
> +## Note that this is only meant to run 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.
>  po/git.pot: $(GENERATED_H) FORCE
> +       @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

Sorry, I'm late. I want to try a safer way to change PRItime to PRInMax using a hacked version of gettext.

We can change Makefile like this:
    --- a/Makefile
    +++ b/Makefile
    @@ -2216,7 +2216,14 @@ LOCALIZED_SH += t/t0200/test.sh
     LOCALIZED_PERL += t/t0200/test.perl
     endif
    -po/git.pot: $(GENERATED_H) FORCE
    +check_gettext:
    +       @if ! $(XGETTEXT) --version | grep -q -i PRItime; then \
    +               echo >&2 "Error: must use a hacked xgettext, which
can handle PRItime macro properly."; \
    +               echo >&2 "Error: download the hacked version of
gettext from https://github.com/......" ; \
    +               exit 1; \
    +       fi
    +
    +po/git.pot: check_gettext $(GENERATED_H) FORCE
           $(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ $(XGETTEXT_FLAGS_C) $(LOCALIZED_C)
           $(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing
$(XGETTEXT_FLAGS_SH) \
                   $(LOCALIZED_SH)
But I'm not sure I can handle this in this very busy weekend.
-- 
Jiang Xin
Previous: Junio C HamanoNext: Junio C Hamano
Message 23 of 45 in “[L10N] Kickoff of translation for Git 2.14.0 round 1”
  1. Jiang XinJul 15, 2017
  2. Jean-Noël AvilaJul 15, 2017
  3. Jiang XinJul 17, 2017
  4. Johannes SchindelinJul 17, 2017
  5. Jiang XinJul 18, 2017
  6. PRItime: wrap PRItime for better l10n compatibilityJiang Xin, Jul 17, 2017
  7. Junio C HamanoJul 17, 2017
  8. Jiang XinJul 18, 2017
  9. Junio C HamanoJul 18, 2017
  10. Jiang XinJul 19, 2017
  11. Johannes SchindelinJul 19, 2017
  12. Junio C HamanoJul 19, 2017
  13. Junio C HamanoJul 19, 2017
  14. Junio C HamanoJul 20, 2017
  15. Junio C HamanoJul 20, 2017
  16. Junio C HamanoJul 20, 2017
  17. Jean-Noël AvilaJul 21, 2017
  18. Junio C HamanoJul 21, 2017
  19. Johannes SchindelinJul 22, 2017
  20. Junio C HamanoJul 22, 2017
  21. Johannes SchindelinJul 25, 2017
  22. Junio C HamanoJul 25, 2017
  23. Jiang XinJul 21, 2017
  24. Junio C HamanoJul 21, 2017
  25. Jiang XinJul 21, 2017
  26. Junio C HamanoJul 21, 2017
  27. Jiang XinJul 22, 2017
  28. Makefile: generate pot file using a tweaked version of xgettextJiang Xin, Jul 22, 2017
  29. Junio C HamanoJul 22, 2017
  30. Johannes SchindelinJul 22, 2017
  31. Junio C HamanoJul 22, 2017
  32. Jiang XinJul 24, 2017
  33. Johannes SchindelinJul 25, 2017
  34. Junio C HamanoJul 25, 2017
  35. Jiang XinJul 24, 2017
  36. Junio C HamanoJul 24, 2017
  37. Johannes SchindelinJul 25, 2017
  38. Jean-Noël AVILAJul 23, 2017
  39. Junio C HamanoJul 23, 2017
  40. Jiang XinJul 24, 2017
  41. Junio C HamanoJul 24, 2017
  42. Kaartic SivaraamJul 22, 2017
  43. Jean-Noël AvilaJul 23, 2017
  44. Jordi MasJul 19, 2017
  45. Jiang XinJul 20, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.