locales
位于 base
包(package)。 说明
获取区域设置的详细信息或设置区域设置的各个方面R过程。
用法
Sys.getlocale (category = "LC_ALL")
Sys.setlocale (category = "LC_ALL", locale = "")
.LC.categories
参数
category |
字符串。应始终支持以下类别: |
locale |
字符串。正在使用的系统上的有效区域设置名称。通常 |
细节
语言环境说明了程序国际化的各个方面。最初,语言环境的大部分方面R被设置为"C"
(这是 C 语言的默认设置,反映了 North-American 用法 - 也称为"POSIX"
)。R套"LC_CTYPE"
和"LC_COLLATE"
,它允许使用不同的字符集和该字符集中的字母比较(包括使用sort
),"LC_MONETARY"
(供使用Sys.localeconv
) 和"LC_TIME"
可能会影响行为as.POSIXlt
和strptime
以及使用它们的函数(但不是date
)。
这里说明的前七个类别是 POSIX 指定的类别。"LC_MESSAGES"
将会"C"
在不支持消息翻译的系统上,并且在 Windows 上不受支持,您可以在其中必须使用LANGUAGE消息翻译的环境变量,见下文Sys.setLanguage()
公用事业。尝试使用不受支持的类别是一个错误Sys.setlocale
.
请注意,设置类别 "LC_ALL"
仅设置类别 "LC_COLLATE"
、 "LC_CTYPE"
、 "LC_MONETARY"
和 "LC_TIME"
。
设置无效区域设置的尝试将被忽略。可能有也可能没有警告,具体取决于操作系统。
在会话期间尝试更改字符集(通过 Sys.setlocale("LC_CTYPE", )
,如果这意味着不同的字符集)可能不起作用,并且可能会导致一些混乱。
请注意,LANGUAGE环境变量优先于"LC_MESSAGES"
在大多数情况下选择消息翻译语言R平台。
在使用 ICU 进行排序规则的平台上,可以通过 icuSetCollate
重置用于排序规则的区域设置。除 Windows 外,初始设置取自 "LC_COLLATE"
类别,并且当通过调用 Sys.setlocale
更改该类别时,该设置将被重置。
值
长度为 1 的字符串,说明正在使用的区域设置(在设置 Sys.setlocale
之后),如果当前区域设置无效,则为空字符串;如果区域设置信息不可用,则为 NULL
。
对于 category = "LC_ALL"
,字符串的详细信息是特定于系统的:它可能是单个区域设置名称或由 "/"
(macOS) 或 ";"
(Windows、Linux)分隔的一组区域设置名称。为了可移植性,最好单独查询类别:foo <- Sys.getlocale()
的结果不一定可以在 Sys.setlocale("LC_ALL", locale = foo)
中使用。
可用区域设置
在大多数 Unix 类似系统上,POSIX shell 命令 locale -a
将列出“可用的公共”区域设置。这意味着依赖于平台。在最近的 Linuxen 上,这可能意味着“可以安装”,因为在某些基于 RPM 的系统上,区域设置数据位于单独的 RPM 中。在 Debian/Ubuntu 上,可用区域设置集由特定于操作系统的工具管理,例如 locale-gen
和 locale -a
列出当前启用的区域设置。
对于 Windows,Microsoft 经常移动其文档,因此 Web 搜索是查找当前信息的最佳方式。从R4.2、应使用UCRT语言环境名称。字符集应与系统/ANSI 代码页匹配(l10n_info()$codepage
与l10n_info()$system.codepage
)。将其设置为任何其他值都会导致警告并可能导致编码问题。来自R4.2 在最新的 Windows 上,系统代码页为 65001,并且应始终使用以以下结尾的区域设置名称".UTF-8"
(除了"C"
和""
),否则 Windows 可能会添加不同的字符集。
警告
环境"LC_NUMERIC"
为除"C"
可能会导致R函数异常,因此发出警告。输入转换为R本身不受影响,但ASCII的读写save
文件将如此,也可能有自己的输入/输出的包。
在类似 Unix 的系统上临时设置它以生成图形或文本输出可能效果很好,但 options(OutDec)
通常更可取。
几乎所有的输出例程都使用RWindows下本身忽略设置"LC_NUMERIC"
因为他们使用的是非国际化的 Trio 库。
注意
更改区域设置类别的值,同时R正在运行应该被操作系统服务注意到,并且通常是,但已经看到异常(通常在整理服务中)。
请勿使用以下值Sys.getlocale("LC_CTYPE")
尝试查找字符集 - 例如 UTF-8 语言环境可以有后缀“.UTF-8' 或者 '.utf8’(在 Linux 上比‘更常见UTF-8’) 或无(如在 macOS 上),Latin-9 语言环境可以有后缀 ‘ISO8859-15', 'iso885915', 'iso885915@euro' 或者 'ISO8859-15@euro’。使用l10n_info
反而。
例子
Sys.getlocale()
## Date-time related :
Sys.getlocale("LC_TIME") -> olcT
then <- as.POSIXlt("2001-01-01 01:01:01", tz = "UTC+1")
## Not run:
c(m = months(then), wd = weekdays(then)) # locale specific
Sys.setlocale("LC_TIME", "de") # Solaris: details are OS-dependent
Sys.setlocale("LC_TIME", "de_DE") # Many Unix-alikes
Sys.setlocale("LC_TIME", "de_DE.UTF-8") # Linux, macOS, other Unix-alikes
Sys.setlocale("LC_TIME", "de_DE.utf8") # some Linux versions
Sys.setlocale("LC_TIME", "German.UTF-8") # Windows
Sys.getlocale("LC_TIME") # the last one successfully set above
c(m = months(then), wd = weekdays(then)) # in C_TIME locale 'cT' ; typically German
## End(Not run)
Sys.setlocale("LC_TIME", "C")
c(m = months(then), wd = weekdays(then)) # "standard" (still platform specific ?)
Sys.setlocale("LC_TIME", olcT) # reset to previous
## Other locales
Sys.getlocale("LC_PAPER") # may or may not be set
.LC.categories # of length 9 on all platforms
## Not run: Sys.setlocale("LC_COLLATE", "C") # turn off locale-specific sorting,
# usually (but not on all platforms)
Sys.setenv("LANGUAGE" = "es") # set the language for error/warning messages
## End(Not run)
## some nice formatting; should work on most platforms:
sys <- Sys.info()[["sysname"]]
sep <- switch(sys,
"Darwin"=, "SunOS" = "/",
"Linux" =, "Windows" = ";")
##' show a "full" Sys.getlocale() nicely:
showL <- function(loc) {
sl <- strsplit(strsplit(loc, sep)[[1L]], "=")
setNames(sapply(sl, `[[`, 2L), sapply(sl, `[[`, 1L))
}
print.Dlist(lloc <- showL(Sys.getlocale()))
## R-supported ones (but LC_ALL):
lloc[.LC.categories[-1]]
也可以看看
strptime
用于 category = "LC_TIME"
的使用。 Sys.localeconv
了解数字和货币表示的详细信息。
l10n_info
提供了有关区域设置及其编码(包括是否为 UTF-8)的一些摘要事实。
“R 安装和管理”手册,了解语言环境背景以及如何查找系统上的语言环境名称。
相关用法
- R load 重新加载保存的数据集
- R lower.tri 矩阵的下三角部分和上三角部分
- R log 对数和指数
- R logical 逻辑向量
- R lapply 对列表或向量应用函数
- R list2DF 从列表创建 DataFrame
- R levels 级别属性
- R ls 列出对象
- R lengths 列表或向量元素的长度
- R libPaths 包的搜索路径
- R l10n_info 本地化信息
- R length 物体的长度
- R license R 许可条款
- R list.files 列出目录/文件夹中的文件
- R labels 从对象中查找标签
- R list 列表 – 通用和点对
- R library 加载/附加和列出包
- R list2env 从列表中构建或添加到环境
- R library.dynam 从包中加载 DLL
- R libcurlVersion libcurl 的报告版本
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R dump R 对象的文本表示
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Query or Set Aspects of the Locale。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。