問題描述

我正在做一個主題,我想讓它可用於翻譯。我沒有在翻譯的文字中包含一個文字域,因為我不知道文字域將會是什麼。我想,直到我能找到一個我的主題名稱,我應該使用一個函式輸出我的文字域名,而不是硬編碼它的翻譯文字。

例:

這是新增文字域的傳統方式:

echo _e('Hello', 'my-theme-name');

我的做法是這樣的:

function text_domain() {
   define('TEXT_DOMAIN', 'my-theme-name', true );
   echo TEXT_DOMAIN;
}

並使用如下:

 echo _e('Hello', text_domian());

… 當我想出一個名稱為我的主題,我可以更新它在一個地方,而不是一次在每個檔案。

問題是:這是一個很好的方法,我會遇到問題,讓我的主題被 WordPress 主題審查小組批准?

最佳解決方案

不,這不行。不不不。這裡是 my favourite Otto quote

Inside all translation functions, no PHP variables are allowed in the strings, for any reason, ever.

奧託更詳細地解釋了這一點,但簡單的說法就是翻譯呼叫被解析,而不是執行。所以你的變數 (更不用說你的函式) 可能不被評估,並且文字域會中斷。

所以,你最好暫時為你的文字域使用一個獨一無二的名字,如 wpse241589,如果你有一個更好的名字,可以進行搜尋和替換。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。