我試圖找到一種可靠的方式來查找區域代碼傳遞給Sys.setlocale
。在R中獲取允許的語言環境名稱的可靠方法是什麼?
的?Sys.setlocale
幫助頁面剛指出允許值是依賴於操作系統的,並給出了一些例子:
Sys.setlocale("LC_TIME", "de") # Solaris: details are OS-dependent
Sys.setlocale("LC_TIME", "de_DE.utf8") # Modern Linux etc.
Sys.setlocale("LC_TIME", "de_DE.UTF-8") # ditto
Sys.setlocale("LC_TIME", "de_DE") # Mac OS X, in UTF-8
Sys.setlocale("LC_TIME", "German") # Windows
在Linux下,可能可以使用檢索
locales <- system("locale -a", intern = TRUE)
## [1] "C" "C.utf8" "POSIX"
## [4] "af_ZA" "af_ZA.utf8" "am_ET"
## ...
我不有Solaris或Mac的機器,但我想那個輸出可以使用類似的東西生成:
library(stringr)
unique(str_split_fixed(locales, "_", 2)[, 1]) #Solaris
unique(str_split_fixed(locales, "\\.", 2)[, 1]) #Mac
在Windows種
語言環境更成問題:他們需要的形式是「LANGUAGE_COUNTRY」的長文件名,例如:
Sys.setlocale("LC_ALL", "German_Germany")
我找不到語言環境的Windows下的列表中選擇一個可靠的參考依據。從Windows命令行調用locale -a
失敗,除非安裝了cygwin,然後返回與Linux下相同的值(我猜它正在訪問標準C庫中的值)。
似乎沒有與R打包的語言環境列表(我認爲可能類似於包含時區詳細信息的share/zoneinfo/zone.tab
)。
我目前的最佳策略是從Microsoft瀏覽此網頁,並通過操作表的SUBLANG
列來形成名稱。
http://msdn.microsoft.com/en-us/library/dd318693.aspx
一些猜測是必要的,例如有關SUBLANG_ENGLISH_UK
語言環境English_United Kingdom
。
Sys.setlocale("LC_ALL", "English_United Kingdom")
如果存在不同字母的變體,則需要括號。
Sys.setlocale("LC_ALL", "Uzbek (Latin)_Uzbekistan")
Sys.setlocale("LC_ALL", "Uzbek (Cyrillic)_Uzbekistan")
這個猜測不會太糟糕,但許多語言環境根本不起作用,包括大多數印度語言環境。
Sys.setlocale("LC_ALL", "Hindi_India")
Sys.setlocale("LC_ALL", "Tamil_India")
Sys.setlocale("LC_ALL", "Sindhi_Pakistan")
Sys.setlocale("LC_ALL", "Nynorsk_Norway")
Sys.setlocale("LC_ALL", "Amharic_Ethiopia")
在Windows區域和語言選項對話框(Windows\System32\intl.cpl
,見PIC)具有相似但不相同的可用區域設置列表中,但我不知道是從填充。
有幾個相關問題:
1. Mac版本和Solaris的人:請您可以檢查,看看我的用於獲取區域設置代碼的操作系統下工作。
2.使用Windows的印度/巴基斯坦/挪威/埃塞俄比亞人:請你告訴我什麼Sys.getlocale()
爲你回報。
3.其他Windows用戶:有哪些語言環境可用的更好的文檔?
更新:在點擊Ben B提到的問題中的鏈接後,我在Windows中偶然發現了這個better list of locales。通過使用「區域和語言」對話框手動更改區域設置並致電Sys.getlocale()
,我推斷Nynorsk是「Norwegian-Nynorsk_Norway」。還有很多古怪,例如
Sys.setlocale(, "Inuktitut (Latin)_Canada")
是好的,但
Sys.setlocale(, "Inuktitut (Syllabics)_Canada")
失敗(如大多數的印第安人的語言)。在任何這些語言環境中啓動R會導致警告,R的語言環境將恢復爲C
。
我仍然有興趣聽到任何印度人等,你有什麼地方。
http://stackoverflow.com/questions/5152866/list-of-locales-in-windows,http://superuser.com/questions/166089/where-is-the-list-of-available- windows-locales(但後面的問題是你的!)...谷歌搜索「Windows列表可用區域設置」顯示你在其他地方問過的問題(我無法分辨你是否爲得到了你問,或者這些答案是否沒有任何作用 - 它似乎是一個相當混亂) –
@BenBolker似乎老年癡呆症是設置英寸我以前有地方的問題,但我完全忘記了問這個問題。感謝您的提醒。 –
另請參閱http://stackoverflow.com/q/26603564/134830 –