[Rd] gettext(msgid, domain="R") doesn't work for some 'msgid':s
tom@@@k@||ber@ @end|ng |rom gm@||@com
Fri Nov 5 16:15:19 CET 2021
On 11/5/21 4:12 PM, Duncan Murdoch wrote:
> On 05/11/2021 10:51 a.m., Henrik Bengtsson wrote:
>> I'm trying to reuse some of the translations available in base R by
>> gettext(msgid, domain="R")
>> This works great for most 'msgid's, e.g.
>> $ LANGUAGE=de Rscript -e 'gettext("cannot get working directory",
>>  "kann das Arbeitsverzeichnis nicht ermitteln"
>> However, it does not work for all. For instance,
>> $ LANGUAGE=de Rscript -e 'gettext("Execution halted\n", domain="R")'
>>  "Execution halted\n"
>> This despite that 'msgid' existing in:
>> $ grep -C 2 -F 'Execution halted\n' src/library/base/po/de.po
>> #: src/main/main.c:342
>> msgid "Execution halted\n"
>> msgstr "Ausführung angehalten\n"
>> It could be that the trailing newline causes problems, because the
>> same happens also for:
>> $ LANGUAGE=de Rscript --vanilla -e 'gettext("error during cleanup\n",
>>  "error during cleanup\n"
>> Is this meant to work, and if so, how do I get it to work, or is it a
> I don't know the solution, but I think the cause is different than you
> think, because I also have the problem with other strings not
> including "\n":
> $ LANGUAGE=de Rscript -e 'gettext("malformed version string",
>  "malformed version string"
I can reproduce Henrik's report and the problem there is that the
trailing \n is stripped by R before doing the lookup, in do_gettext
/* strip leading and trailing white spaces and
add back after translation */
for(p = tmp;
*p && (*p == ' ' || *p == '\t' || *p == '\n');
p++, ihead++) ;
But, calling dgettext with the trailing \n does translate correctly for me.
I'd leave to translation experts how this should work (e.g. whether the
.po files should have trailing newlines).
> Duncan Murdoch
> R-devel using r-project.org mailing list
More information about the R-devel