Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

__()、_e() 及 translate() 等函式是否可以以變數作為函式參數

先說結論,不行。因為解析字串的工具 (譬如 wp make-pot 或 Poedit) 無法判斷變數,並把它變成可以翻譯的字串。因此在 gettext 函式裡的字串必須都是固定值。

如何翻譯帶變數、動態值的字串

在製作彙整頁 (archive) 時,因為彙整頁的標題會根據分類法 (分類 category、標籤 tag) 不同而有差異,因此需要透過 get_the_archive_title() 取得對應的標題。

最直觀的做法,是直接將字串串起來:

echo get_the_archive_title() . esc_html__( 'に関する記事はこちらから。', 'applemint' );

但語言不同,動態值的位置也會改變。以上述的例子來說,在中文應該翻譯成「關於 彙整標題 的文章」,因此比較建議的做法是用 printf()sprintf() 等函式來定義字串。

printf(
	/* translators: %s is the archive title */
	esc_html__( '%s に関する記事はこちらから。', 'applemint' ),
	esc_html( get_the_archive_title() )
);

參考資料

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

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

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料