問題描述

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

例:

這是添加文本域的傳統方式:

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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。