如何在主题中使用Load_plugin_ext域

时间:2016-03-03 作者:TarranJones

我想为我的一个插件执行一个单词替换。

从…起

#: subscribe-and-connect-template.php:210
msgid "Subscribe"
msgstr "Subscribe"

#: subscribe-and-connect-template.php:210
msgid "Subscribe"
msgstr ""
我已复制wp-content\\plugins\\subscribe-and-connect\\languages\\subscribe-and-connect.pot并做了我的改变。

存储此新文件的最佳位置是哪里?如何加载它?

1 个回复
SO网友:Alpi Murányi

似乎没有简单的方法可以做到这一点load_plugin_textdomain() 从子主题调用时,将无法按预期工作。

A.generic workaround 是由马吕斯·维特里奇开发的,但我发现在某些情况下它与Polylang不兼容。

The most reliable solution I have found is 使用load_textdomain() 低于一级的功能load_plugin_textdomain():

load_textdomain( $textdomain, get_stylesheet_directory().\'/languages/\'.$textdomain.\'-\'.get_locale().\'.mo\' );
上述示例意味着您将在languages 子主题文件夹下的文件夹,并根据textdomain-lang_COUNTRY.mo 方案(例如:someplugin-en_US.mo).

你必须注意打电话到哪里load_textdomain() ,以便区域设置已经可用,并且您的翻译将在其他翻译之前或之后加载(取决于您的需要)。如果只想添加新的字符串翻译,则加载翻译的顺序无关紧要,但如果要覆盖现有翻译,请确保首先加载的是您的翻译,如(根据documentation), 首先加载的翻译将优先于稍后加载的翻译。翻译通常加载在init 钩子,但在Polylang的情况下pll_language_defined 使用吊钩。

请注意,它始终是。系统实际使用的mo(机器对象)文件。这个po(可移植对象)文件是人类可读的,可编译为。每次保存时的mo文件。这个pot文件是的模板。采购订单文件。

相关推荐

如何在自定义php代码中使用WordPress$polylang->Model->set_post_language?

我正在创建一个自定义内容引擎,发布艺术品内容(从dropbox上传图像,从Excel电子表格中的数据构建内容,使用自定义表进行内容管理等)我的问题是,我想发布和链接通过wordpress创建和发布的EN和ES内容。在这里,您可以看到由于$polylang和模型对我的代码不可用而失败的代码。// Insert the post into the database if($record->language == \'EN\') { if ($p