setLanguage | R Documentation |
The function changes dynamically the language used by both R (messages only) and Tcl/Tk, retrieves its current value, and manage string translation in Tcl.
setLanguage(lang)
getLanguage()
tclmclocale(lang)
tclmcset(lang, msg, translation)
tclmc(fmt, ..., domain = NULL)
lang |
An identification for the targeted language, for instance, \"en\"
for English, \"en_US\" for american English, \"fr\" for French, \"de\" for
German, \"it\" for Italian, etc. Facultative argument for |
msg |
A single character string with the message to translate. |
translation |
The corresponding version in |
fmt |
A single character vector of format string. |
... |
Values to be passed into |
domain |
The 'domain", i;e., Tcl namespace where the translation is
defined. Use |
setLanguage()
returns TRUE
if language was successfully changed in
Tcl/Tk, FALSE
otherwise. getLanguage()
returns a string with current
language in use for R, or an empty string if it cannot determinate which is
the language currently used, and a tcl.language
attribute with the
different catalogs that are used in priority order (ending with ""
for no
translation, i.e., Tcl translations do not return an error, but the initial
string if the item is not found in the catalog).
tclmclocale()
allows to change and get language for Tcl only, without
changing anything for R.
The two functions tclmcset()
and tclmc()
allow to record and retrieve the
translation of strings in the main R domain. Moreover, tclmc()
also allows
to retrieve translations of Tcl strings in other Tcl namespaces (a.k.a.,
domains), see the examples.
You need the msgcat Tcl package to use this (but it is provided with all recent distributions of Tcl/Tk by default).
Philippe Grosjean
# What is the language used by Tcl?
tclmclocale()
# Define a simple translation in French and German
tclmcset("de", "Yes", "Ja")
tclmcset("fr", "Yes", "Oui")
# Determine which language is currently in use in R
(oldlang <- getLanguage())
if (oldlang != "") {
# Switch to English; test a command that issues a warning and a Tcl string
setLanguage("en_US")
1:3 + 1:2
tclmc("Yes")
# Switch to German and test
setLanguage("de")
1:3 + 1:2
tclmc("Yes")
# Switch to Belgian French and test
setLanguage("fr_BE")
1:3 + 1:2
tclmc("Yes")
# A more complex trnaslation message with a substitution
tclmcset("fr", "Directory contains %d files",
"Le repertoire contient %d fichiers")
tclmc("Directory contains %d files", 9)
# or from a R/Tcl variable...
nfiles <- tclVar(12)
tclmc("Directory contains %d files", tclvalue(nfiles))
# Retrieve a translation defined in the "tk" domain
tclmc("Replace existing file?", domain = "tk")
# Tcl dialog boxes are translated according to the current language
## Not run:
tkgetOpenFile()
## End(Not run)
# Restore previous language
setLanguage(oldlang)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.