首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别R中的实际消息语言设置

识别R中的实际消息语言设置
EN

Stack Overflow用户
提问于 2018-03-04 10:52:08
回答 1查看 304关注 0票数 2

我试图识别R中的语言设置(信息等所用的语言)。

初步情况如下:

  • 我使用的是Windows,所以Sys.getlocale(category="LC_MESSAGES")不可用
  • 在R控制台(标准编辑器)中,所有消息都是德语的;但是,Sys.getenv("LANGUAGE")=""
  • 在R中,所有消息都是英文的;Sys.getenv("LANGUAGE")=""也是。

我想要做的是:识别实际的R消息语言,即提供给用户的消息的语言(德语为R控制台,英语为RStudio),独立于所使用的操作系统。这意味着,理想情况下,希望避免处理依赖于操作系统的结果字符串,比如来自Sys.getlocale()的结果字符串(例如"de_DE.UTF-8")。

有什么想法吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 23:15:14

我终于想出了解决办法。我生成错误并分析错误消息以识别语言。

为此,我首先使用以下函数检查所有可能的错误消息语言版本,该函数返回带有ISO国家代码(我从Wikipedia获取的)数据和相应语言中的错误消息:

代码语言:javascript
复制
createmessages <- function() {
  countries <- c("AF","EG","AX","AL","DZ","AS","VI","AD","AO","AI","AQ","AG","GQ","AR","AM","AW","AC","AZ","ET","AU","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","VG","IO","BN","BG","BF","BU","BI","EA","CL","CN","CP","CK","CR","CI","CW","DK","DD","DE","DG","DM","DO","DJ","EC","SV","ER","EE","CE","EU","FK","FO","FJ","FI","FR","FX","GF","PF","TF","GA","GM","GE","GH","GI","GD","GR","GL","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","IN","ID","IM","IQ","IR","IE","IS","IL","IT","JM","JP","YE","JE","JO","YU","KY","KH","CM","CA","IC","CV","KZ","QA","KE","KG","KI","CC","CO","KM","CD","CG","KP","KR","XK","HR","CU","KW","LA","LS","LV","LB","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MA","MH","MQ","MR","MU","YT","MK","MX","FM","MD","MC","MN","ME","MS","MZ","MM","NA","NR","NP","NC","NZ","NT","NI","NL","AN","NE","NG","NU","MP","NF","NO","OM","AT","TL","PK","PS","PW","PA","PG","PY","PE","PH","PN","PL","PT","PR","RE","RW","RO","RU","SB","BL","MF","ZM","WS","SM","ST","SA","SE","CH","SN","RS","CS","SC","SL","ZW","SG","SX","SK","SI","SO","ES","LK","SH","KN","LC","PM","VC","ZA","SD","GS","SS","SR","SJ","SZ","SY","TJ","TW","TZ","TH","TG","TK","TO","TT","TA","TD","CZ","CS","TN","TR","TM","TC","TV","SU","UG","UA","HU","UM","UY","UZ","VU","VA","VE","AE","US","UK","VN","WF","CX","EH","ZR","CF","CY")
  e <- c()
  for(i in 1:length(countries))
  {
    Sys.setenv("LANGUAGE"=countries[i])
    res <- tryCatch( { xhajakjkula/1 }, error = function(err) { return(err) })
    e[i] <- res$message
  }
  Sys.setenv("LANGUAGE"="DE")
  return(data.frame(countries,e))
}

在分析得出的数据框架后,我发现在ISO国家代码中,只有6个国家以不同于英语的语言(即波兰语、法语、西班牙语、德语、土耳其语和意大利语)产生错误信息。我使用错误消息创建返回语言的函数(以英语作为默认返回值):

代码语言:javascript
复制
getlanguage <- function() {
  res <- tryCatch( { xhajakjkula/1 }, error = function(err) { return(err) })
  lang <- "EN"
  if(res$message == "Objekt 'xhajakjkula' nicht gefunden") lang <- "DE"
  if(res$message == "objet 'xhajakjkula' introuvable") lang <- "FR"
  if(res$message == "oggetto \"xhajakjkula\" non trovato") lang <- "IT"
  if(res$message == "nie znaleziono obiektu 'xhajakjkula'") lang <- "PL"
  if(res$message == "objeto 'xhajakjkula' no encontrado") lang <- "ES"
  if(res$message == "'xhajakjkula' nesnesi bulunamadi") lang <- "TR"
  return(lang)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49094581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档