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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。