问题描述

我正在做一个主题,我想让它可用于翻译。我没有在翻译的文本中包含一个文本域,因为我不知道文本域将会是什么。我想,直到我能找到一个我的主题名称,我应该使用一个函数输出我的文本域名,而不是硬编码它的翻译文本。

例:

这是添加文本域的传统方式:

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。