[Rd] [R] gettext weirdness

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Feb 4 15:02:25 CET 2013


On 04/02/2013 11:14, Florent Angly wrote:
> Hi Brian,
>
> I appreciate your clarifications. I am sending this reply to the
> R-devel, as per you suggestion.
>
> As mentioned in my post, I have no prior experience with this R function
> and logically, I looked up its help page, which states:
>> Conventionally the domain for *R* warning/error messages in package
>> pkg is |"R-pkg"|, and that for C-level messages is |"pkg"|.
> While it certainly mentions messages in the C-realm, it does not state
> that they cannot be translated using gettext(). This is less than
> obvious and could perhaps be explicitly stated.

You are asking us to state what *can not* be done?  It does clearly 
state the the domain for *R* messages in a package is "R-pkg".   Domain 
"R" is not of that form.

> If gettext() cannot be used to get the translation for the "Error in "
> message in some supported language, then is there an alternative?

You put it in a domain named "R-pkg", prepared using xgetttext().

>
> Best,
>
> Florent
>
>
>
> On 04/02/13 18:27, Prof Brian Ripley wrote:
>> The 'wierdness' is that 'R' is a domain of C messages and you are
>> trying to use it from R.  How messages are massaged before being sent
>> for translation depends on the language, including how trailing spaces
>> are handled.   There is no reason to expect domains intended for C
>> code to work in R-level gettext(), nor in stop() etc.
>>
>> This was really an R-devel question: see the posting guide.
>>
>> On Mon, 4 Feb 2013, Florent Angly wrote:
>>
>>> Hi,
>>>
>>> I am trying to use the gettext() function to translate some text. I
>>> have never used this function before, so, it's entirely possible that
>>> I am doing something wrong. The issue that I am encountering is that
>>> gettext() properly translates some text, but not some other.
>>>
>>> Natural language was compiled in my R (installed from the Debian
>>> repositories):
>>> $ R
>>> R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows"
>>> [...]
>>>   Natural language support but running in an English locale
>>> [...]
>>>> q()
>>>
>>> Here is some text that has some translation in the file ./po/fr.po:
>>>     #: src/main/errors.c:290
>>>     msgid "invalid option \"warning.expression\""
>>>     msgstr "option incorrecte \"warning.expression\""
>>>     [...]
>>>     #: src/main/errors.c:582
>>>     msgid "Error in "
>>>     msgstr "Erreur dans "
>>>
>>> Start R in French and see if I can get something translated to French:
>>> $ LANG=fr_FR.UTF8  R
>>>> stop('This is an error')
>>> Erreur : This is an error
>>>
>>>> bindtextdomain("R") # does not seem necessary, but just to be safe...
>>> [1] "/usr/share/R/share/locale"
>>>
>>>> gettext("Error in ", domain="R")
>>> [1] "Error in "
>>>
>>>> "invalid option \"warning.expression\"" -> msg; gettext(msg,
>>>> domain="R")
>>> [1] "option incorrecte \"warning.expression\""
>>>
>>>
>>> So, the stop() function successfully translates. I can also manually
>>> translate some entries, but why can does it not work for
>>> gettext("Error in ", domain="R")?
>>> Any idea?
>>> Thanks
>>>
>>> Florent
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list