load_plugin_textdomain
我有一个类似的问题,我正在使用 PSR-4 从服务类中加载带有函数的翻译文件。这意味着dirname( plugin_basename( __FILE__ ) )
字符串返回了错误的路径。
- 正确的路径是相对路径
your-plugin/languages
(假设您从/languages
目录加载翻译文件)。
- 诸如此类的绝对路径
/var/www/html/wp-content/plugins/my-plugin/languages
不起作用。
我的插件文件结构如下所示:
- my-plugin
- assets
- languages
- services
- Api
- Base
Translation.php
- ...
Plugin.php
- vendor
- views
composer.json
composer.lock
index.php
my-plugin.php
uninstall.php
由于我的翻译服务放在/services/Base/
目录中,这对我有用:
$root = plugin_basename(dirname(__FILE__, 3));
load_plugin_textdomain( 'my-plugin', false, "$root/languages/");
此外,我根本没有使用操作钩子而不是init
orplugins_loaded
并在插件开始时触发了该load_plugin_textdomain
函数,因为钩子没有足够早地触发,无法翻译管理菜单和操作链接。