[WordPress] 強制修改外掛或主題翻譯的做法(以 WooCommerce 為例)

WordPress 的多國語言架構算滿完整的,透過開發者有閱讀開發文件的前提下就能將程式做到多國語言化。

有些需求與某些外掛功能一樣但顯示的項目不同時,不一定要去硬改程式。就是很單純的透過本地化翻譯功能自己處理轉換字串的問題就好。

舉 WooCommerce 的翻譯為例也是因為最常使用到它。有時候就不一定是把上架的東西當作「商品」或「產品」,所以需要調整過才能使用。

能夠修改到這翻譯的方法很多,有透過外掛來幫助的,也有透過 WordPress 系統推送的,更還有本篇直接說明程式硬改的..等等。

但這些方法都會要在外掛或主題目錄下面找到 {主題或外掛Slug}.pot 的 pot 檔案來處理自己語系的翻譯,產生出來的 {主題或外掛Slug}-zh_TW.po{主題或外掛Slug}-zh_TW.mo 才會開始使用上述手段來套用翻譯。

這邊使用的開發方法是直接從檔案讀取端下手,確保直接載入到對應的翻譯編譯檔案(.mo)。

function mxp_load_custom_wc_translation_mo_file($mofile, $domain) {
    if ($domain === 'woocommerce') {
        $mofile = get_stylesheet_directory() . '/language/woocommerce/' . get_locale() . '.mo';
    }
    return $mofile;
}
add_filter('load_textdomain_mofile', 'mxp_load_custom_wc_translation_mo_file', 11, 2);

這段程式碼片段就是針對載入對應 mo 檔案時去處理,所以不只是將這段程式碼放置在子主題的 functions.php 中,還要把前面提到,翻譯好的 .mo 檔案放置在子主題下 language/woocommerce 裡。

這段程式的寫法對應到的檔案名稱是 {語系}.mo ,所以不用特別寫前綴的 woocommerce- 這部分,系統會根據語系來對應檔案載入,看得懂怎改的人自然就是取代成自己 .mo 檔案的絕對路徑即可。

本篇算是最終極手段了,其他方法都還要面對這翻譯檔案載入順序與檔名配合的問題,此方法就是直搗黃龍給他不管如何都取代成這檔案來處理翻譯字串,透過程式直接指派也是比輾轉透過其他方法來處理得快囉~

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *