如果我们想要在插件中转换字符串,我们不能使用定义为PHP常量的字符串吗?

时间:2017-08-19 作者:learning_13

我想翻译插件中的常量字符串,定义为:
define( \'CONSTANT\', __( \'string-A\', \'textdomain\' ) );
然后在某个地方使用它,例如:
$x= \'<h4>\'.CONSTANT_NAME.\'<h4>\'; echo $x;<但即使在添加了该区域设置后,我仍然会收到英文文本。生产任务单文件(&M);文本域。这只发生在PHP常量定义的字符串上,其余所有字符串都正常工作。那么,使用PHP常量定义的字符串是否不适用于翻译,因为即使在流行的翻译插件中,我也找不到任何包含已翻译字符串的常量?

1 个回复
最合适的回答,由SO网友:Crazycoolcam 整理而成

我认为这是因为以后无法重新定义常量。一旦设置好,它们就会被固定。http://php.net/manual/en/language.constants.php

我不太清楚WP语言构造是如何工作的,但我的一部分人认为它们是被定义的,然后在插件/主题使用它们时会动态更改。我没有这方面的参考资料,但这似乎是基于你的经历。

i、 当代码初始化时,常量用英文文本设置,但稍后,当设置了不同的语言时,语言函数会热交换文本。。。除了常数,因为它们不能被重新定义,所以它们保留在英语中。

希望其他人能证实/否认这种行为。

值得一提的是,常量对于存储动态信息(如要输出的文本)来说是一个不好的地方。它们更好地用于在脚本执行期间不会更改的服务器位置引用

如果您想在站点的不同部分之间共享变量,那么可以考虑在$GLOBALS数组中进行引用。http://php.net/manual/en/reserved.variables.globals.php 或者创建一个简单的函数,只返回您希望它在过滤语言后返回的信息。

Edit:

我在唯一的多语言网站上进行了测试。我临时调整了translate function 为了让它在返回之前回显我的输出(但在过滤之后),在西班牙语翻译开始之前,我得到了一个英语字符串列表。

我的怀疑是,字符串的早期处理是为了让翻译函数能够看到哪些字符串可用于翻译。由于常量在定义后无法更改,因此在用英语定义后无法翻译。

结束

相关推荐

Theme Translation?

我下载了一个主题名为Contango 来自Wordpress主题库。该主题有一个名为“languagues”的文件夹和一个名为“contango.po”的文件。我可以打开那个文件进行翻译,但什么也没变。我怎样才能把这个主题翻译成我自己的语言</非常感谢并为我的新手问题道歉?