很多翻譯工具,提取翻譯字符串將查找字符串文字,像這樣:
$translation = __('red', 'textdomain');
這是一個安全的賭注*的主題檢查插件提醒你一個事實,即你的動態字符串不會被這些工具提取。這是因爲代碼不會提取期間被執行,因此表達get_color()
不會被評估成可翻譯字符串。
如果你不關心與列提取工具的兼容性,然後就離開你的代碼按你的第一個例子(第二個例子是錯誤的,因爲已經指出的那樣)。
如果您確實希望自己的代碼能夠使用翻譯工具,那麼我建議您創建一個包含所有可能的顏色值的虛擬 PHP文件。 (假設列表是有限的)。你的文件看起來是這樣的:
<?php
__('red', 'textdomain');
__('blue', 'textdomain');
// and so on..
然後,如果你想停止的實際翻譯通話生產「主題檢查」錯誤,你必須將它重構到的東西,不會得到回升。像這樣的東西會被大多數提取得到錯過:
$translation = call_user_func('__', get_color(), 'textdomain');
*值得關注的主題檢查的作者是一個核心的WordPress貢獻者,約doing WordPress i18n correctly相當聲樂。
來源
2017-12-22 10:21:26
Tim
雖然這段代碼可能回答這個問題,但提供關於爲什麼和/或代碼如何回答這個問題的附加上下文會提高它的長期價值。 – liliscent