Martin Ågren <[email protected]> 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