Bruno Haible <[EMAIL PROTECTED]> wrote: > Eric Blake wrote: >> > The lib/gettext.h file already arranges for this (with the i18n domain name >> > being not just "gnulib", but "findutils-gnulib" or similar). >> >> That won't work in headers. For .c files, they are compiled as part of >> the gnulib library, where the DEFAULT_TEXT_DOMAIN is in effect. But for >> the .h files, such as xstrtol.h, they are compiled as part of the main >> program, where gettext() is no longer a macro to the <pobase>-domain. It >> looks like we'll have to edit any use of gettext in gnulib headers to >> instead use something from a .c file > > There is only one use of gettext() in header files in gnulib, the one in > xstrtol.h, and it needs to be revised anyway: It violates the principle > that the translator must be presented whole sentences. Things like > > gettext ("invalid %s `%s'") > > where the first %s comes from > > STRTOL_FATAL_ERROR (spec, _("block size"), e); > > are not translatable to languages (such as German), where the adjective's > flexion depends on the gender of the noun. > > The macro should be rewritten to take three localized strings as arguments, > instead of just one.
Hi Bruno, What do you suggest to use as those strings? I.e., are you suggesting to convert each of the 5 uses of STRTOL_FATAL_ERROR in coreutils from e.g., STRTOL_FATAL_ERROR (optarg, _("skip argument"), s_err); to STRTOL_FATAL_ERROR (optarg, _("invalid skip argument `%s'"), _("invalid character following skip argument in `%s'"), _("skip argument `%s' too large"), s_err); That sort of "unfactoring" would be hard for me to swallow. It doesn't seem justifiable to do that to the code solely to emit marginally improved diagnostics.