Subject: Re: bug#65424: Guix doesn't use positional arguments in translated formatted messages

From: Julien Lepiller <[email-masked]>
Date: Mon, 21 Aug 2023 16:20:32 +0200

Le 21 août 2023 14:09:14 GMT+02:00, Maxime Devos <[email-masked]> a écrit :
>Consider, e.g.,
>
>(format #t (G_ "~0@*~a should be set to ~1@*~a instead of ~2@*~a~%") "CC" "(cc-for-target)" "gcc")
>->
>CC should be set to (cc-for-target) instead of gcc
>
>By using positional arguments like this, translators can reorder the sentence to:
>
>(format #t (G_ "It's not ~2@*~a that ~0@*~a should be set to, but ~1@*~a~%") "CC" (cc-for-target) "gcc"))
>
>~0@*~a should be set to ~1@*~a instead of ~2@*~a~%") "CC" "(cc-for-target)" "gcc")
>->
>It's not gcc that CC should be set to, but (cc-for-target).
>
>CC should be set to (cc-for-target) instead of gcc
>
>Such reorderings are occasionally useful, yet AFAIK nowhere (except po/guix/ta.po, the mcron service and de.po) is this used.
>
>Sure, you could as translator add these ~N@* afterwards, but you need to know that's possible in the first place (and if you know it's possible, you still need to remember or rediscover what exactly to write), and it would be much simpler and more discoverable if they were included from the start.  Also, IIRC, Weblate complains if you add these.
>
>p.s.: I'm writing a new linter, this particular example doesn't occur yet in Guix.

That sounds reasonnabe. The very least we could do is document this syntax in the manual. Weblate would complain indeed, sirce it won't find the same formats in the source and target strings. It might complain about the order too, but that's something we could contribute upstseam if it happens.