当.po文件中有两个相同的条目时,转换机制如何确定使用哪个条目?

时间:2022-01-28 作者:shenkwen

当我看到他们的插件时,我正试图翻译一些插件。采购订单文件有两个;“登录”;s、 我相信Wordpress使用__ 分析需要翻译的文本。

所以当代码像

__(\'Sign in\', \'buddyboss-theme\')
执行时,它如何知道;“登录”;中的条目。po文件是要查找的文件吗?

4 个回复
SO网友:tiago calado

如果有任何特定的动机需要对同一个句子进行两次翻译,那么你应该只翻译一次,删除第二次翻译,然后按照你想要的方式翻译第一次翻译。或者更好的做法是,将其中一个与大写字母连用,而另一个与大写字母连用,就像这样“;“登录”;和;“登录”;,这里大写字母很重要。有可能获得有关wpml documentation

SO网友:Mark Kaplun

这听起来像是.po 文件除非翻译使用上下文,否则不应该对同一文本进行两种不同的翻译(_x 功能IIRC),在这种情况下,应在.po 文件

不管是什么原因,您的问题的可能答案是,您不能假设将使用哪个翻译,因为它将取决于解析.mo 文件生成自.po 文件其中一个很可能会凌驾于另一个之上,但假设哪一个是错误的。

SO网友:bueltge

WordPress的翻译机制不仅查找以下翻译函数字符串__( \'string\', \'key\' ). 它还查找密钥,在您的情况下\'buddyboss-theme\' 并仅使用此键在翻译文件中搜索buddyboss-theme-en_US.po.

参考https://make.wordpress.org/polyglots/handbook/plugin-theme-authors-guide/

SO网友:Tom J Nowell

当a中有两个相同的条目时。po文件,翻译机制如何决定使用哪一个?

没有,WordPress不知道有两个条目__ etc不直接读取文件。

加载采购订单/生产任务单文件时,会从上到下进行处理,每个条目都有一个基于其上下文和单数值组合的键。

这会加载到内存中,正如我们在PO/MO loader类中看到的那样,这就是数据的摄取方式:

$this->entries[ $entry->key() ] = &$entry;
因此,第二个条目在处理时会覆盖第一个条目,永远不会出现WP必须在这两个条目之间进行选择的情况,它只会看到一个条目。

相关推荐