Rev 75084 | Rev 80024 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/locales.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2017 R Core Team% Distributed under GPL 2 or later\name{locales}\alias{locales}\alias{Sys.getlocale}\alias{Sys.setlocale}\alias{LC_ALL}\alias{LC_COLLATE}\alias{LC_CTYPE}\alias{LC_MONETARY}\alias{LC_NUMERIC}\alias{LC_TIME}#ifdef unix\alias{LC_MESSAGES}\alias{LC_PAPER}\alias{LC_MEASUREMENT}#endif\title{Query or Set Aspects of the Locale}\description{Get details of or set aspects of the locale for the \R process.}\usage{Sys.getlocale(category = "LC_ALL")Sys.setlocale(category = "LC_ALL", locale = "")}\arguments{\item{category}{character string. The following categories shouldalways be supported: \code{"LC_ALL"}, \code{"LC_COLLATE"},\code{"LC_CTYPE"}, \code{"LC_MONETARY"}, \code{"LC_NUMERIC"} and\code{"LC_TIME"}. Some systems (not Windows) will also support\code{"LC_MESSAGES"}, \code{"LC_PAPER"} and \code{"LC_MEASUREMENT"}.}\item{locale}{character string. A valid locale name on the system inuse. Normally \code{""} (the default) will pick up the defaultlocale for the system.}}\details{The locale describes aspects of the internationalization of a program.Initially most aspects of the locale of \R are set to \code{"C"}(which is the default for the C language and reflects North-Americanusage -- also known as \code{"POSIX"}). \R sets \code{"LC_CTYPE"} and\code{"LC_COLLATE"}, which allow the use of a different character setand alphabetic comparisons in that character set (including the use of\code{\link{sort}}), \code{"LC_MONETARY"} (for use by\code{\link{Sys.localeconv}}) and \code{"LC_TIME"} may affect thebehaviour of \code{\link{as.POSIXlt}} and \code{\link{strptime}} andfunctions which use them (but not \code{\link{date}}).The first seven categories described here are those specified byPOSIX. \code{"LC_MESSAGES"} will be \code{"C"} on systems that do notsupport message translation, and is not supported on Windows. Tryingto use an unsupported category is an error for \code{Sys.setlocale}.Note that setting category \code{"LC_ALL"} sets only categories\code{"LC_COLLATE"}, \code{"LC_CTYPE"}, \code{"LC_MONETARY"} and\code{"LC_TIME"}.Attempts to set an invalid locale are ignored. There may or may notbe a warning, depending on the OS.Attempts to change the character set (by\code{Sys.setlocale("LC_CTYPE", )}, if that implies a differentcharacter set) during a session may not work and are likely to lead tosome confusion.Note that the \env{LANGUAGE} environment variable has precedence over\code{"LC_MESSAGES"} in selecting the language for message translationon most \R platforms.On platforms where ICU is used for collation the locale used forcollation can be reset by \code{\link{icuSetCollate}}. Except onWindows, the initial setting is taken from the \code{"LC_COLLATE"}category, and it is reset when this is changed by a call to\code{Sys.setlocale}.}\value{A character string of length one describing the locale in use (aftersetting for \code{Sys.setlocale}), or an empty character string if thecurrent locale settings are invalid or \code{NULL} if localeinformation is unavailable.For \code{category = "LC_ALL"} the details of the string aresystem-specific: it might be a single locale name or a set of localenames separated by \code{"/"} (Solaris, macOS) or \code{";"}(Windows, Linux). For portability, it is best to query categoriesindividually: it is not necessarily the case that the result of\code{foo <- Sys.getlocale()} can be used in\code{Sys.setlocale("LC_ALL", locale = foo)}.}\section{Available locales}{On most Unix-alikes the POSIX shell command \command{locale -a} willlist the \sQuote{available public} locales. What that means isplatform-dependent. On recent Linuxen this may mean \sQuote{availableto be installed} as on some RPM-based systems the locale data is inseparate RPMs. On Debian/Ubuntu the set of available locales ismanaged by OS-specific facilities such as \command{locale-gen} and\command{locale -a} lists those currently enabled.For Windows, Microsoft moves its documentation frequently so a Websearch is the best way to find current information.}% assume this just affects strtod/atof, scanf/printf and friends,% as seems to be the case in glibc.\section{Warning}{Setting \code{"LC_NUMERIC"} to any value other than \code{"C"} maycause \R to function anomalously, so gives a warning. Inputconversions in \R itself are unaffected, but the reading and writingof ASCII \code{\link{save}} files will be, as may packages which dotheir own input/output.Setting it temporarily on a Unix-alike to produce graphical or textoutput may work well enough, but \code{\link{options}(OutDec)} isoften preferable.Almost all the output routines used by \R itself under Windows ignorethe setting of \code{"LC_NUMERIC"} since they make use of the Triolibrary which is not internationalized.}\note{Changing the values of locale categories whilst \R is running oughtto be noticed by the OS services, and usually is but exceptions havebeen seen (usually in collation services).}\seealso{\code{\link{strptime}} for uses of \code{category = "LC_TIME"}.\code{\link{Sys.localeconv}} for details of numerical and monetaryrepresentations.\code{\link{l10n_info}} gives some summary facts about the locale andits encoding.The \sQuote{R Installation and Administration} manual for backgroundon locales and how to find out locale names on your system.}\examples{Sys.getlocale()Sys.getlocale("LC_TIME")\dontrun{Sys.setlocale("LC_TIME", "de") # Solaris: details are OS-dependentSys.setlocale("LC_TIME", "de_DE") # Many Unix-alikesSys.setlocale("LC_TIME", "de_DE.UTF-8") # Linux, macOS, other Unix-alikesSys.setlocale("LC_TIME", "de_DE.utf8") # some Linux versionsSys.setlocale("LC_TIME", "German") # Windows}Sys.getlocale("LC_PAPER") # may or may not be set\dontrun{Sys.setlocale("LC_COLLATE", "C") # turn off locale-specific sorting,# usually (but not on all platforms)}}\keyword{utilities}