Hey,

On Mon, Mar 22, 2021 at 04:31:19PM +0100, Miguel Ángel Arruga Vivas wrote:
> Hi,
>
> Daniel Kiper <daniel.ki...@oracle.com> writes:
>
> > Translators can use http://alpha.gnu.org/pub/gnu/grub/grub-2.06~rc1.pot for 
> > translation.
> > The pot signature is available at 
> > http://alpha.gnu.org/pub/gnu/grub/grub-2.06~rc1.pot.sig
>
> Sorry for the delay to report, but during translation I noticed that two
> messages from the POT file have a problem related to the usage of
> PRI[ux]GRUB_UINT64_T on format strings. This isn't supported by GNU
> Gettext as explained on its manual[1], therefore the strings aren't
> extracted properly by xgettext.

Thank you for the report!

> The attached patch provides a trivial solution close to the one proposed
> by the manual.

Could you send this patch using "git send-email"?

> From 750ab1afaf54c61d14419b7a5610856879f4851c Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
>  <rosen644...@gmail.com>
> Date: Mon, 22 Mar 2021 16:12:41 +0100
> Subject: [PATCH] i18n: Format large integers before the translation message.
>
> GNU gettext only supports C99 macros for integral types, more specific
> macros should be used to format the number to a string before the
> internationalization, as explained on the section of gettext's manual
> "Preparing Strings":
> <http://www.gnu.org/software/gettext/manual/html_node/Preparing-Strings.html#No-string-concatenation>

Could you add your SOB here?

...and some nits below...

> ---
>  grub-core/disk/luks2.c             |  5 ++++-
>  grub-core/efiemu/i386/loadcore64.c | 14 ++++++++++----
>  grub-core/kern/arm64/dl.c          | 12 ++++++++----
>  grub-core/kern/ia64/dl.c           | 12 ++++++++----
>  grub-core/kern/riscv/dl.c          | 13 +++++++++----
>  grub-core/kern/sparc64/dl.c        | 11 +++++++----
>  grub-core/kern/x86_64/dl.c         | 12 ++++++++----
>  7 files changed, 54 insertions(+), 25 deletions(-)
>
> diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
> index 125e8609a..5525e3c66 100644
> --- a/grub-core/disk/luks2.c
> +++ b/grub-core/disk/luks2.c
> @@ -612,6 +612,7 @@ luks2_recover_key (grub_disk_t source,
>    /* Try all keyslot */
>    for (json_idx = 0; json_idx < size; json_idx++)
>      {
> +      char indexstr[21]; /* log10 (2^64) ~ 20, plus nul character.  */
>        typeof (source->total_sectors) max_crypt_sectors = 0;
>
>        grub_errno = GRUB_ERR_NONE;
> @@ -732,11 +733,13 @@ luks2_recover_key (grub_disk_t source,
>         continue;
>       }
>
> +      grub_snprintf (indexstr, sizeof (indexstr) - 1, "%" PRIuGRUB_UINT64_T,
> +                  keyslot.idx);
>        /*
>         * TRANSLATORS: It's a cryptographic key slot: one element of an array
>         * where each element is either empty or holds a key.
>         */
> -      grub_printf_ (N_("Slot \"%" PRIuGRUB_UINT64_T "\" opened\n"), 
> keyslot.idx);
> +      grub_printf_ (N_("Slot \"%s\" opened\n"), indexstr);
>
>        candidate_key_len = keyslot.key_size;
>        break;
> diff --git a/grub-core/efiemu/i386/loadcore64.c 
> b/grub-core/efiemu/i386/loadcore64.c
> index 7316efc39..ea0b207c2 100644
> --- a/grub-core/efiemu/i386/loadcore64.c
> +++ b/grub-core/efiemu/i386/loadcore64.c
> @@ -121,10 +121,16 @@ grub_arch_efiemu_relocate_symbols64 
> (grub_efiemu_segment_t segs,
>                     return err;
>                      break;
>                 default:
> -                 return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
> -                                    N_("relocation 0x%" PRIxGRUB_UINT64_T
> -                                       " is not implemented yet"),
> -                                    ELF_R_TYPE (rel->r_info));
> +                 {
> +                   char rel_info[17]; /* log16 (2^64) = 16, plus nul.  */

Please add empty line here and s/nul/NUL/.

> +                   grub_snprintf (rel_info, sizeof (rel_info) - 1,
> +                                  "%" PRIxGRUB_UINT64_T,
> +                                  ELF_R_TYPE (rel->r_info));
> +                   return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
> +                                      N_("relocation 0x%s"
> +                                         " is not implemented yet"),
> +                                      rel_info);

Please merge all these 3 lines into one, i.e:
  N_("relocation 0x%s" is not implemented yet"), rel_info);

> +                 }
>                 }
>             }
>         }
> diff --git a/grub-core/kern/arm64/dl.c b/grub-core/kern/arm64/dl.c
> index 401672374..566bb84e0 100644
> --- a/grub-core/kern/arm64/dl.c
> +++ b/grub-core/kern/arm64/dl.c
> @@ -183,10 +183,14 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void 
> *ehdr,
>         break;
>
>       default:
> -       return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
> -                          N_("relocation 0x%" PRIxGRUB_UINT64_T
> -                             " is not implemented yet"),
> -                          ELF_R_TYPE (rel->r_info));
> +       {
> +         char rel_info[17]; /* log16 (2^64) = 16, plus nul.  */

Ditto and below please...

Does this patch fix all PRI* translation issues?

When I get next version of patch from you I will rebuild and update pot file.

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to