當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R checkPoFiles 檢查翻譯文件中格式字符串不一致的情況


R語言 checkPoFiles 位於 tools 包(package)。

說明

這些函數將英語消息中嵌入的格式與翻譯後的字符串進行比較,以檢查一致性。 checkPoFile 檢查一個文件,而 checkPoFiles 檢查指定語言的所有文件。

用法

checkPoFile(f, strictPlural = FALSE)
checkPoFiles(language, dir = ".")

參數

f

給出單個文件路徑的字符串。

strictPlural

是否嚴格比較單數和複數形式的格式。

language

給出語言代碼的字符串。

dir

要在其中檢查文件的目錄的路徑。

細節

部分R的國際化取決於‘中消息的翻譯.po’文件。在這些文件中,一條“英語”消息取自R來源之後是另一種語言的翻譯。其中許多消息是 C 或R sprintf及相關函數。在這些情況下,翻譯必須提供兼容的格式,否則在顯示消息時將會生成錯誤。

C 和 C 之間的兼容性規則不同R在幾個方麵。 C 支持多種不支持的轉換R,即c,u,p,n。在C語言中是允許的sprintf()函數的參數多於格式字符串所需的參數,但在R計數必須完全匹配。R要求參數類型匹配,而 C 會顯示,無論它是否有意義。

這些函數對測試的影響如下。接受 C 中允許的附加格式,並報告參數類型或計數的所有差異。因此,一些報告的差異並不是錯誤。

如果strictPlural參數是TRUE,那麽參數列表必須在消息的單數和複數形式之間完全一致;如果FALSE,那麽翻譯隻需要匹配兩種形式中的一種或另一種。什麽時候checkPoFiles調用checkPoFile, 這strictPlural參數設置為TRUE對於名稱開頭為“的文件R-', 並FALSE否則。

在‘中標記為‘fuzzy’的項目.po' 文件不會被處理(因為它們被消息編譯器忽略)。

如果發現差異,則檢查翻譯後的字符串是否有不同的百分號(例如,寬百分號 "\uFF05" )。此類符號不會被識別為格式說明符,並且很可能是錯誤。

這兩個函數都返回 S3 類 "check_po_files" 的對象。為此類定義了 print 方法來顯示差異報告。

例子

## Not run: 
checkPoFiles("de", "/path/to/R/src/directory")

## End(Not run)

作者

Duncan Murdoch

參考

See the GNU gettext manual for the ‘.po’ file format:
https://www.gnu.org/software/gettext/manual/gettext.html.

也可以看看

update_pkg_po() 調用 checkPoFile()xgettextsprintf

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Check Translation Files for Inconsistent Format Strings。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。