xgettext
位于 tools
包(package)。 说明
对于“中的每个文件R的目录(包括系统特定的子目录)资源包,提取传递给这些“message generating”调用的唯一参数;
- 对于
xgettext()
: -
至
stop
、warning
、message
、packageStartupMessage
、gettext
和gettextf
, - 对于
xngettext()
: -
到
ngettext
。
xgettext2pot()
调用 xgettext()
然后调用 xngettext()
。
用法
xgettext(dir, verbose = FALSE, asCall = TRUE)
xngettext(dir, verbose = FALSE)
xgettext2pot(dir, potFile, name = "R", version, bugs)
参数
dir |
源码包的目录,即带有‘./R’子目录。 |
verbose |
逻辑:每个文件在处理时是否应该列出? |
asCall |
逻辑:如果 |
potFile |
的名字 |
name , version , bugs |
正如模板文件中记录的那样: |
细节
前导和尾随空白(空格、制表符和换行符(又名换行符,即“\n’)) 对于通过以下方式提取的所有调用均被删除xgettext()
,请参阅上面的“说明”,因为它是通过内部代码传递字符串进行翻译的。
我们查看是否使用 domain = NA
调用了匹配的函数。如果是这样,当 asCall
为 true 时,整个调用将被省略。请注意,调用可能包含对 gettext
(或 warning
等)的嵌套调用,如果 asCall
为 false,则其字符串将可见。
xgettext2pot
依次调用 xgettext
和 xngettext
,并写入 PO 模板文件(写入 potFile
)以与 GNU Gettext
工具一起使用。这确保了简单翻译的字符串在文件中是唯一的(如 GNU Gettext
所要求的),但对于 ngettext
调用则不然(Gettext 手册中没有说明规则,但 msgfmt
会抱怨如果存在是集合之间的重复。)。
如果应用到base
包,这也会出现在‘.R' 文件在'base Rhome/分享/R’。
值
对于 xgettext
,类 "xgettext"
的对象列表(具有 print
方法),每个包含潜在可翻译字符串的源文件一个。
对于 xngettext
,类 "xngettext"
的对象列表,它们本身就是长度为 2 的字符向量列表。
例子
## Not run: ## in a source-directory build (not typical!) of R;
## otherwise, download and unpack the R sources, and replace
## R.home() by "<my_path_to_source_R>" :
xgettext(file.path(R.home(), "src", "library", "splines"))
## End(Not run)
## Create source package-like <tmp>/R/foo.R and get text from it:
tmpPkg <- tempdir()
tmpRDir <- file.path(tmpPkg, "R")
dir.create(tmpRDir, showWarnings = FALSE)
fnChar <- paste(sep = "\n",
"foo <- function(x) {",
" if (x < -1) stop('too small')",
" # messages unduplicated (not so for ngettext)",
" if (x < -.5) stop('too small')",
" if (x < 0) {",
" warning(",
" 'sqrt(x) is', sqrt(as.complex(x)),",
" ', which may be too small'",
" )",
" }",
" # calls with domain=NA are skipped",
" if (x == 0) cat(gettext('x is 0!\n', domain=NA))",
" # gettext strings may be ignored due to 'outer' domain=NA",
" if (x > 10) warning('x is ', gettextf('%.2f', x), domain=NA)",
" # using a custom condition class",
" if (x == 42)",
" stop(errorCondition(gettext('needs Deep Thought'), class='myError'))",
" x",
"}")
writeLines(fnChar, con = file.path(tmpRDir, "foo.R"))
## [[1]] : suppressing (tmpfile) name to make example Rdiff-able
xgettext(tmpPkg, asCall=TRUE )[[1]] # default; shows calls
xgettext(tmpPkg, asCall=FALSE)[[1]] # doesn't ; but then ' %.2f '
unlink(tmpRDir, recursive=TRUE)
也可以看看
update_pkg_po()
调用 xgettext2pot()
。
相关用法
- R update_PACKAGES 更新现有的 PACKAGES 文件
- R print.via.format 打印实用程序
- R prepare_Rd 准备用于渲染的解析 Rd 对象
- R startDynamicHelp 启动动态 HTML 帮助系统
- R getVignetteInfo 获取有关已安装 Vignettes 的信息
- R matchConcordance 源行和目标行之间的一致性
- R checkVignettes 检查包装插图
- R Rd2HTML 路转换器
- R HTMLheader 为 R 帮助生成标准 HTML 标头
- R undoc 查找未记录的对象
- R vignetteInfo 有关晕影的基本信息
- R HTMLlinks 从包文档收集 HTML 链接
- R toTitleCase 将标题转换为标题大小写
- R package_native_routine_registration_skeleton 编写用于将本机例程注册添加到包的框架
- R parse_Rd 解析 Rd 文件
- R update_pkg_po 准备包的翻译
- R vignetteEngine 设置或获取晕影处理引擎
- R Rcmd R命令接口
- R Rdindex 从 Rd 文件生成索引
- R checkMD5sums 检查并创建 MD5 校验和文件
- R checkFF 检查外部函数调用
- R package_dependencies 包的依赖层次结构的计算
- R QC R 代码和/或文档的 QC 检查
- R psnice 获取或设置进程的优先级(良好性)
- R checkTnF 检查 R 包或 T/F 代码
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Extract Translatable Messages from R Files in a Package。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。