Martin Ågren <martin.ag...@gmail.com> writes:

> About the _("\t")-approach that you mentioned up-thread. It would allow
> a translator to adjust all the indentations for a particular language.
> To be clear, what you mean is _("         " /* 9 spaces */) to align
> nicely with "warning: ", which is the longest English string. Then the
> translator would translate the nine spaces and all of "fatal:   " and
> others to padded strings, all of the same length (not necessarily nine).
> Correct?

I was envisioning that these

        error: the first line of an error message
               and the second line indented by 7 places (strlen("error:")+1)
        info: the first line of an info message
              and the second line indented by 6 places (strlen("info:")+1)

are produced by

        vreportf("error: ", "       " /* 7 spaces */,
                 "the first line of an error message\nand the second ...");
        vreportf("info: ", "      " /* 6 spaces */,
                 "the first line of an info message\nand the second ...");

And if all of these string literals were inside _(), then depending
on how many display columns translated version of "error" and "info"
takes in the target language, these 7-space and 6-space secondary
prefixes would be "translated" differently.

Of course, since your language may translate "error" and "fatal" to
different display columns, the 7-space secondary prefix in this one

        vreportf("fatal: ", "       " /* 7 spaces */,
                 "the first line of a fatal error message\nand the second ...");

needs to be mapped to a string that is differnt from the 7-space for
"error: ".  I think you would use "contexts" to map the same source
7-space to different translated string when it becomes necessary.

https://www.gnu.org/software/gettext/manual/html_node/Contexts.html

Reply via email to