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