运行功能时
stop("m<0", domain=NA)
域的默认设置为NULL,但是当您将其设置为NA时会发生什么?我试图将域更改为,但它似乎没有做任何不同的事情.报告的错误消息是相同的.
最佳答案 在R中,消息被划分为域,并且可以对域中的一些或所有消息使用翻译.您可以通过修改LANG变量来切换语言域:
> Sys.setenv(LANG = "fr")
> 2 + x
Erreur : objet 'x' introuvable
> Sys.setenv(LANG = "en")
> 2 + x
Error: object 'x' not found
用法示例:
> Sys.setenv(LANG = "de")
>
> if((length(nopkgs) > 0) && !missing(lib.loc)) {
+ pkglist <- paste(sQuote(nopkgs), collapse = ", ")
+ msg <- sprintf(ngettext(length(nopkgs),
+ "library %s contains no packages",
+ "libraries %s contain no packages",
+ domain = "R-base"),
+ pkglist)
+ warning(msg)
+ }
Fehler: Objekt 'nopkgs' nicht gefunden
>
…重新启动R会话
> Sys.setenv(LANG = "en")
> if((length(nopkgs) > 0) && !missing(lib.loc)) {
+ pkglist <- paste(sQuote(nopkgs), collapse = ", ")
+ msg <- sprintf(ngettext(length(nopkgs),
+ "library %s contains no packages",
+ "libraries %s contain no packages",
+ domain = "R-base"),
+ pkglist)
+ warning(msg)
+ }
Error: object 'nopkgs' not found
>
R使用以下域名.
>域R用于来自R解释器的C级错误和警告消息.
>域R-pkg用于每个包中的R停止和警告消息,包括基础包的R-base.
>每个包中C级消息的域pkg.
>用于Windows GUI前端的R的菜单等的域RGui.
以这种方式划分消息允许R是可扩展的:当加载包时,也可以加载它们的消息转换目录.
根据当前指定的语言,通过域尽可能具体地查找翻译,因此,例如,奥地利(de_AT)翻译目录将优先于奥地利用户的通用德语(de)使用.但是,如果存在特定的翻译目录但不包含翻译,则会查询不太具体的目录.例如,R具有en_GB的目录,其将标准消息中的美国主义(例如灰色)翻译成英语.
使用正确语言但通过错误的字符集进行翻译通常可以通过动态重新编码来实现. LANGUAGE变量可以是以冒号分隔的列表,例如se:de,按优先级递减顺序给出一组语言.
如果未找到合适的翻译目录或未在所选目录中翻译特定消息,则使用英语.已翻译的目录存储为扩展名为.m的二进制文件.域R和RGui的目录在R_HOME / share / locale下,特定于包的目录在已安装包的po目录下(因此需要在源中的inst / po下).这些目录包含由语言标识的每个翻译的一个目录,例如, se或de_AT.每个语言目录都有一个子目录LC_MESSAGES,并在每个域的文件中.所以R安装至少包含文件
share/locale/en/LC_MESSAGES/R.mo
share/locale/en@quot/LC_MESSAGES/R.mo
library/splines/po/en/LC_MESSAGES/R-splines.mo
library/splines/po/en/LC_MESSAGES/splines.mo
(`language’en @ quot是带有Unicode双向引号的英文,用于UTF-8语言环境.)