問題描述
我的目標是什麼?
我期待為 WordPress 外掛的可用翻譯編寫測試用例。
我的方法:
我已經使用 VVV 設定 WordPress,我的測試套件包括 PHPUnit 和 WP-CLI 。
為了測試 (斷言) 翻譯,我檢查該語言的.mo 檔案是否存在。
/**
* Test the translations.
*/
public function test_translations() {
$this->assertFileExists( $this->object->path . 'lang/domain-name-de_DE.mo' );
$this->assertFileExists( $this->object->path . 'lang/domain-name-lt_LT.mo' );
$this->assertFileExists( $this->object->path . 'lang/domain-name-nl_NL.mo' );
}
我被困在哪裡
這是對於 WordPress 外掛測試 translations 的正確方法嗎?如果沒有,請提出替代方案。
最佳解決思路
如果您想要測試的是翻譯檔案存在,那麼這可能是最簡單的方法,因為您可能已經在使用 PHPUnit 來執行外掛程式碼上的單元/整合測試。
但是,只是檢查檔案是否存在並沒有告訴你。它不會告訴你這些語言是否實際完全翻譯,或者即使這些檔案將被 WordPress 正確載入。
所以你需要問的問題是:「為什麼要測試?如果您只是想確保您不會意外遺漏翻譯檔案,那麼您的測試應該做你所需要的。如果您希望確實能夠為每種語言提供完整的翻譯,而且這些翻譯實際上是有效的,那就是一個完全不同的故事。
測試翻譯載入
要檢查 WordPress 是否能正確載入每個翻譯檔案,您可能會建立一個使用 load_plugin_textdomain()載入檔案的 PHPUnit 測試,並檢查它是否返回 true,這將表明文字域可以正確載入。您可能需要掛接到 plugin_locale 過濾器來檢查您的外掛附帶的每個區域設定。
測試完整性
然而,仍然不會告訴你有多少字串實際上被翻譯成該語言,有多少是模糊的。如果你想檢查每個翻譯是否至少 xx%完成,你可能想要使用一個不是 PHPUnit 的工具。
測試外觀
您還可以進一步檢查每個翻譯中的字串是否在外掛 UI 中正確顯示。有時字串的翻譯可能比原始語言長得多,這可能會導致它溢位為其分配的區域。要檢查這一點,您需要使用類似 Codeception 驗收測試。
結論
因此,總而言之,您所擁有的測試是否適合您,取決於您要測試的內容。就個人而言,我沒有任何測試我的外掛的翻譯,雖然最後一部分關於檢查 UI 吸引了我。只是檢查翻譯是否存在,正如你現在所做的,對我來說似乎沒有提供很多的好處。它是一個支票,只有你正在檢查的翻譯檔案列表一樣好。在某種意義上,它並沒有測試任何東西,只是確保它在那裡。這可以在構建指令碼而不是 PHPUnit 中執行。檢查翻譯實際上可以由 WordPress 載入確實為 IMO 提供了好處,因為它實際上測試它們沒有被破壞。當然,它測試它們同時存在。所以我可能會擴大你的測試來檢查。
Edit
在相關說明中,您可能還會考慮測試主 POT 中的任何拼寫錯誤 (我也猜測翻譯也是如此) 。這很容易在雷達下滑落。可能有可用的 shell 指令碼可以做到這一點。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。