問題描述
我正在做一個主題,我想讓它可用於翻譯。我沒有在翻譯的文字中包含一個文字域,因為我不知道文字域將會是什麼。我想,直到我能找到一個我的主題名稱,我應該使用一個函式輸出我的文字域名,而不是硬編碼它的翻譯文字。
例:
這是新增文字域的傳統方式:
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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。