Subject: [bug#35790] [PATCH] scripts: lint: Handle warnings with a record type.

From: Ludovic Courtès <[email-masked]>
Date: Thu, 20 Jun 2019 13:49:42 +0200

Christopher Baines <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> writes:
>
>> A possibility would be to pass ‘make-warning’ a ‘format’ list instead of
>> a single string:
>>
>>   (make-warning package (list (G_ "~a is bad") 'something) …)
>>
>> That’d solve the problem but it’d have to be packaged nicely to avoid
>> having too much boilerplate.
>
> I've now made an attempt at doing this, I've kept the changes separate
> for now, and I've sent them as a separate patch.

Nice!

> I'm not sure I've got it working yet though. I've been testing with the
> zile package, as there's a lint warning for the synopsis, however, if I
> try to set the language to Spanish, it isn't translated.
>
> I've also tried checking the existing behaviour, but that doesn't seem
> to work either:
>
>   → LC_MESSAGES=es_ES LANGUAGE=es_ES LC_ALL=es_ES ./pre-inst-env guile
>   ...
>   scheme@(guile-user)> (use-modules (guix i18n))
>   scheme@(guile-user)> (G_ "~a: ~a: proposed synopsis: ~s~%")
>   $1 = "~a: ~a: proposed synopsis: ~s~%"
>
> Many of the translated strings won't match up with the code now as I've
> changed them. I did try changing the Spanish translation for this
> proposed synopsis message to match the code, but it didn't seem to work.
>
> Any ideas on what's going on here?

You need to tell libc (gettext) where to look for message catalogs.
This is normally done in scripts/guix:

  (bindtextdomain "guix" "@localedir@")

For testing purposes, you can probably do:

  (bindtextdomain "guix"
                  "/run/current-system/profile/share/locale")

HTH!

Ludo’.