Subject: Re: Is there any interest in localizing term delimiters in git messages?

From: Junio C Hamano <[email-masked]>
Date: Tue, 17 Oct 2023 19:47:24 -0700

Jiang Xin <[email-masked]> writes:

> Starting with the release of git 2.34.0 two years ago, we had a new
> l10n pipeline and the git-po-helper tool as part of our l10n workflow.
> The first version of git-po-helper introduced a validator to protect
> git command parameters and variable names in megid.

Ahh, that is the piece I was missing.  I didn't know you guys are
doing extra checks that could trigger false positives.

> E.g. In pull
> request 541 (https://github.com/git-l10n/git-po/pull/541), a
> mismatched variable name "new_index" was reported in bg.po as below:
>
>     level=warning msg="mismatch variable names in msgstr: new_index"
>     level=warning msg=">> msgid: unable to write new_index file"
>     level=warning msg=">> msgstr: новият индекс не може да бъде записан"
>
> And po/bg.po changed as below:
>
>     msgid "unable to write new_index file"
>     msgstr "новият индекс (new_index) не може да бъде записан"

Wait.  Is this supposed to be a good example of validator working
well?  We use this exact message three times in builtin/commit.c; is
the validator insisting on the translated message to have verbatim
string "new_index" in it so that the end-users will see it?

I may still be confused, but if that is what is going on, I think it
is a wrong validation in this particular case.  I can understand if
we were creating say .git/new_index file and it helps the end users
to diagnose a troubled repository by running "ls .git" to see if a
file called "new_index" exists and getting in the way, but I do not
think it is the case.  A new file ".git/index.lock" is created via
repo_hold_locked_index() and I do not think it helps the end-user to
know that we may be calling it "new_index" internally among the
developers' circle.  If the message were about "index.lock", it
might be a different story, but such an error would probably have
been issued long before write_locked_index() gets called.

I'd suggest doing s/new_index/new index/ to msgid string for these
anyway.

> Later, more validators were introduced into git-po-helper for checking
> git config name, place holders, etc. "git-po-helper" used a list of
> regular expressions to find git config names, placeholders, and there
> are some false positive cases need to be ignored.

OK, and "<file>" in msgid string, for example, will automatically
insist on the translated msgstr string to have a string that is
enclosed by a pair of such angle brackets, regardless of the target
language convention?  If so, I can now understand where Alexander
comes from (assuming that the common convention in Bulgarian language
is not to use a pair of angle brackets to highlight such a placeholder
word).

I can see that you have a lot better handle on the matter than I do,
so I trust you and Alexander can resolve what the best "validation"
(and possibly override per language) should be in the git-po-helper
tool.

Thanks for explaining.