I was playing around with the setting of the LANGUAGE variable and am wondering whether I'm missing something obvious about resetting the value to its original state once it's been set. I seem to be able to reset the language for warnings/errors once, but not to change it a second time (or reset it) once it's been set ... ?? ## default (no LANGUAGE set, English locale) > sqrt(-1) [1] NaN Warning message: In sqrt(-1) : NaNs produced ## no complaints, doesn't change (as expected) > Sys.setenv(LANGUAGE = "en") > sqrt(-1) [1] NaN Warning message: In sqrt(-1) : NaNs produced ## change to German > Sys.setenv(LANGUAGE = "de") > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try to change to Spanish - no luck ## (this does work in a clean session) > Sys.setenv(LANGUAGE = "es") > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try resetting to blank > Sys.setenv(LANGUAGE = "") > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## or back to English explicitly? > Sys.setenv(LANGUAGE = "en") > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt >
restoring LANGUAGE env variable within an R session
6 messages · Dirk Eddelbuettel, Eric Berger, Sebastian Meyer +1 more
Ben,
POSIX level / glibc level variables are set at process start and AGAIK cannot
really be altered after start. They clearly work when set _before_ calling sqrt(-1):
$ LANGUAGE=es Rscript -e 'sqrt(-1)'
[1] NaN
Warning message:
In sqrt(-1) : Se han producido NaNs
$ LANGUAGE=de Rscript -e 'sqrt(-1)'
[1] NaN
Warnmeldung:
In sqrt(-1) : NaNs wurden erzeugt
$
I think the `callr` package can help you with this use from with R by
effectively spawning a new process for you. Or, lower-level, you can call
`system()` or `system2()` yourself and take care of the setup.
Cheers, Dirk
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
There is also some inconsistency. Even though sqrt(-1) returns the warning/error about NaNs in German after setting the language to Spanish, if you give the command
messages()
it will respond in Spanish.
On Mon, Jun 26, 2023 at 4:39?PM Dirk Eddelbuettel <edd at debian.org> wrote:
Ben,
POSIX level / glibc level variables are set at process start and AGAIK cannot
really be altered after start. They clearly work when set _before_ calling sqrt(-1):
$ LANGUAGE=es Rscript -e 'sqrt(-1)'
[1] NaN
Warning message:
In sqrt(-1) : Se han producido NaNs
$ LANGUAGE=de Rscript -e 'sqrt(-1)'
[1] NaN
Warnmeldung:
In sqrt(-1) : NaNs wurden erzeugt
$
I think the `callr` package can help you with this use from with R by
effectively spawning a new process for you. Or, lower-level, you can call
`system()` or `system2()` yourself and take care of the setup.
Cheers, Dirk
--
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
That's reasonable, but I'm wondering why it works the *first* time
it's called in a session. Is this just undefined behaviour (so I
shouldn't be surprised whatever happens)? Again,
$ Rscript -e 'sqrt(-1); Sys.setenv(LANGUAGE="es"); sqrt(-1)'
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced
[1] NaN
Warning message:
In sqrt(-1) : Se han producido NaNs
I should clarify that this really isn't that important for my
workflow, it just seemed like an odd loose end.
Weirdly, I just discovered that Sys.setLanguage(). Don't know how it
differs, but there's a bindtextdomain(NULL) call there which may be the
magic sauce ... ???
sqrt(-1)
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced
> Sys.setLanguage("de")
> sqrt(-1)
[1] NaN
Warnmeldung:
In sqrt(-1) : NaNs wurden erzeugt
> Sys.setLanguage("en")
> sqrt(-1)
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced
On 2023-06-26 9:38 a.m., Dirk Eddelbuettel wrote:
Ben,
POSIX level / glibc level variables are set at process start and AGAIK cannot
really be altered after start. They clearly work when set _before_ calling sqrt(-1):
$ LANGUAGE=es Rscript -e 'sqrt(-1)'
[1] NaN
Warning message:
In sqrt(-1) : Se han producido NaNs
$ LANGUAGE=de Rscript -e 'sqrt(-1)'
[1] NaN
Warnmeldung:
In sqrt(-1) : NaNs wurden erzeugt
$
I think the `callr` package can help you with this use from with R by
effectively spawning a new process for you. Or, lower-level, you can call
`system()` or `system2()` yourself and take care of the setup.
Cheers, Dirk
Dr. Benjamin Bolker Professor, Mathematics & Statistics and Biology, McMaster University Director, School of Computational Science and Engineering (Acting) Graduate chair, Mathematics & Statistics > E-mail is sent at my convenience; I don't expect replies outside of working hours.
Translated strings are cached.
I'd recommend to use the
? New partly experimental Sys.setLanguage() utility, solving the
main problem of PR#18055.
introduced in R 4.2.0.
Best,
Sebastian Meyer
Am 26.06.23 um 15:15 schrieb Ben Bolker:
I was playing around with the setting of the LANGUAGE variable and am wondering whether I'm missing something obvious about resetting the value to its original state once it's been set. I seem to be able to reset the language for warnings/errors once, but not to change it a second time (or reset it) once it's been set ... ?? ## default (no LANGUAGE set, English locale)
> sqrt(-1)
[1] NaN Warning message: In sqrt(-1) : NaNs produced ## no complaints, doesn't change (as expected)
> Sys.setenv(LANGUAGE = "en") > sqrt(-1)
[1] NaN Warning message: In sqrt(-1) : NaNs produced ## change to German
> Sys.setenv(LANGUAGE = "de") > sqrt(-1)
[1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try to change to Spanish - no luck ## (this does work in a clean session)
> Sys.setenv(LANGUAGE = "es") > sqrt(-1)
[1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try resetting to blank
> Sys.setenv(LANGUAGE = "") > sqrt(-1)
[1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## or back to English explicitly?
> Sys.setenv(LANGUAGE = "en") > sqrt(-1)
[1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt
>
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Thanks, this is exactly PR#18055. Should have looked (but assumed I was probably just overlooking something ...)
On 2023-06-26 10:02 a.m., Sebastian Meyer wrote:
Translated strings are cached. I'd recommend to use the ??? ? New partly experimental Sys.setLanguage() utility, solving the ????? main problem of PR#18055. introduced in R 4.2.0. Best, ????Sebastian Meyer Am 26.06.23 um 15:15 schrieb Ben Bolker:
??? I was playing around with the setting of the LANGUAGE variable and am wondering whether I'm missing something obvious about resetting the value to its original state once it's been set.? I seem to be able to reset the language for warnings/errors once, but not to change it a second time (or reset it) once it's been set ... ?? ## default (no LANGUAGE set, English locale) ? > sqrt(-1) [1] NaN Warning message: In sqrt(-1) : NaNs produced ## no complaints, doesn't change (as expected) ? > Sys.setenv(LANGUAGE = "en") ? > sqrt(-1) [1] NaN Warning message: In sqrt(-1) : NaNs produced ## change to German ? > Sys.setenv(LANGUAGE = "de") ? > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try to change to Spanish - no luck ## (this does work in a clean session) ? > Sys.setenv(LANGUAGE = "es") ? > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## try resetting to blank ? > Sys.setenv(LANGUAGE = "") ? > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ## or back to English explicitly? ? > Sys.setenv(LANGUAGE = "en") ? > sqrt(-1) [1] NaN Warnmeldung: In sqrt(-1) : NaNs wurden erzeugt ? >
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Dr. Benjamin Bolker Professor, Mathematics & Statistics and Biology, McMaster University Director, School of Computational Science and Engineering (Acting) Graduate chair, Mathematics & Statistics > E-mail is sent at my convenience; I don't expect replies outside of working hours.