问题描述
我正在做一个主题,我想让它可用于翻译。我没有在翻译的文本中包含一个文本域,因为我不知道文本域将会是什么。我想,直到我能找到一个我的主题名称,我应该使用一个函数输出我的文本域名,而不是硬编码它的翻译文本。
例:
这是添加文本域的传统方式:
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。