Gettext 過濾器簡介
已發表: 2023-02-12為您的 WordPress 網站找到滿足您所有要求的插件或主題可能是一個挑戰。 許多可能接近但仍需要調整或定制。 此外,作為開發人員,確保您的代碼足夠靈活以支持全球用戶也很重要。
幸運的是,WordPress 核心的一些功能可以幫助您調整網站的某些元素。 這使您能夠自定義按鈕或標籤文本,而不是放棄其他有用的插件,或者甚至準備您的網站進行翻譯。
在本文中,我們將更好地理解 gettext 過濾器,包括它如何與您站點的翻譯過程一起工作。 有很多內容要介紹,所以讓我們開始吧!
什麼是Gettext?
gettext 過濾器使您能夠修改 WordPress 網站上的文本元素。 最好通過一個例子來理解。
假設您的評論表單有兩個字段:“姓名”和“電子郵件”。 如果您希望他們閱讀“名字”和“電子郵件地址”,您可以使用 gettext 過濾器來修改它們,而不必手動替換主題文件中每個術語的每個實例。
gettext 過濾器僅在您的站點已準備好進行翻譯時才起作用。 因此,在我們深入探討如何使用它來自定義文本之前,我們必須討論如何使您的代碼國際化。
在繼續之前需要了解的一些術語包括:
- 國際化 (i18n)。 這意味著您的 WordPress 代碼已準備好翻譯成其他語言。
- 本地化 (l10n)。 您可以進行 i18n 編程並將 WordPress 安裝本地化以在本地語言中使用的過程。
- GNU gettext 庫。 GNU 是一個免費的開源操作系統。 它的 gettext 庫使您能夠將文本包裝在代碼字符串中,然後可以將其提取出來進行翻譯。
- POT 文件:為了提取使用 gettext 函數創建的可翻譯字符串,創建了可移植對像模板 (POT) 文件。
- PO 文件:諸如 Poedit 之類的工具使用 POT 文件來創建可移植對象 (PO) 文件,其中包括已完成的翻譯以及可翻譯的字符串。
- MO 文件:機器對象 (MO) 文件是從 PO 文件創建的。 它駐留在您的插件或主題目錄中,如果您的網站需要翻譯版本,則由您的服務器提供。
正如您將在下面的步驟中看到的,這些元素都在準備 WordPress 產品進行翻譯時發揮作用。
用於翻譯的 Gettext 和 PHP
下面,我們解釋了國際化主題或插件的工作流程。 在嘗試此類更改之前,建議您創建一個要使用的子主題。 這將保護您的網站免受任何潛在的災難。
第 1 步:將文本字符串提取為 POT 文件
您要做的第一件事是檢查您的主題或插件是否已包含 POT 文件。 如果沒有,您需要自動生成它們,使用終端手動創建它們,或者使用我們之前提到的 WordPress 推薦的名為 Poedit 的應用程序:
Pro 版本提供了一個快速的 WordPress 功能,用於創建您需要的文件。 但是,您仍然可以使用免費應用程序通過額外點擊幾下來生成 POT 文件。
要開始使用,您需要下載並安裝 Poedit,它將在您的桌面上運行。 完成後,導航到File > New 。 系統將提示您選擇翻譯語言:
然後您需要在繼續之前保存您的新項目。 接下來,您可以選擇更新現有的 POT 文件或從源中提取:
如果需要,您也可以從一個空白的 POT 文件開始,然後在 Poedit 中更改您的文本字符串。 或者,您可以在 Glotpress 中搜索要使用的現有插件和主題文件。 但是,對於此示例,我們假設您需要使用其他選項。
單擊從源中提取後,您將可以配置三個設置選項卡:
您將需要為文本字符串的來源設置路徑。 您還可以排除某些路徑。 然後,您需要配置翻譯屬性:
您可以在此處為項目命名並為複數和其他特定於語言的元素自定義設置。 最後,您可以使用Sources Keywords選項卡來完成 POT 文件的設置:
單擊加號時,您將能夠添加 gettext 關鍵字以完成翻譯設置。 您還可以查看和搜索源文件中的文本字符串。
第 2 步:創建可移植對象 (PO) 文件
接下來,您需要針對要添加的每種語言將 POT 文件轉換為 PO 文件。 如果您不翻譯您的主題或插件,並且只打算使用 gettext 過濾器將英語替換為英語,請將兩種語言(源和翻譯)設置為英語。
如果您在 Poedit 中導航到“目錄” > “從 POT 文件更新” ,您可以選擇要翻譯的文件:
接下來,文件將經過一個提取過程,在此期間所有可翻譯的字符串都將被帶入 Poedit。 這將創建 PO 文件。 您需要為其命名以匹配該項目的其他文件。
然後,單擊文本字符串列表底部的創建新翻譯以開始進行更改:
要將文本從英文更改為英文,只需單擊要更改的字符串,然後使用源文本下方的翻譯窗口輸入替換詞:
對您想要在整個主題或插件中更改的任何文本完成此過程。 接下來,您將創建三個必要文件中的最後一個。
第 3 步:轉換為機器對象 (MO) 文件
到目前為止,您一直在採取措施創建有關您的翻譯的編程指令。 現在,您需要轉換每個 PO 文件,以便服務器可以讀取它並將所需的文本傳送給訪問者。
根據您執行 Poedit 工作流程的方式,可能已經在主題的Languages文件夾中創建了一個 MO 文件。 如果沒有,請導航至文件>編譯為 MO :
現在您應該擁有執行 WordPress 中的 gettext 過濾器使之成為可能的功能所需的組件。
什麼時候 WordPress Gettext 過濾器有用?
儘管我們上面描述的過程可以幫助您將網站翻譯成多種語言,但這不是 gettext 過濾器的目的。 換句話說,您不想使用此掛鉤將英文文本轉換為西班牙文。
相反,這更像是一種設計功能,您可以使用它來修改通過插件或主題添加到您網站的默認文本,例如:
- 標籤定制
- 按鈕文本更改
- 航向變更
此過程可用於自定義在您的網站文件中被視為可翻譯的任何文本。 再舉一個例子,如果您的主題有顯示為“立即購買”的預設按鈕,但您的網站需要它們顯示為“訂閱”,gettext 是可以使這種改變成為現實的過濾器。
請務必注意,過於頻繁地使用 gettext 會對您網站的性能產生負面影響。 這是每次加載網站時都必須運行的附加代碼,因此請謹慎使用它以避免頁面速度下降。
使用 WP Engine 傳播您的信息
決定是否使用插件或對您的網站創建手動代碼更改可能具有挑戰性。 這就是為什麼擁有最好的開發人員資源是關鍵。 借助 WP Engine 的專業支持,您將擁有創建高度自定義網站所需的一切。
為您的下一個項目查看我們託管的專用 WordPress 託管計劃。 我們已涵蓋您的服務器維護,因此您可以輕鬆進行創新!