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