LeB*_*Ben 6 wordpress wordpress-plugin wpml
我正在使用带有插件The Events Calendar的法语WordPress .
这个插件附带一个捆绑的法语翻译,但它有一些错误.我想修复它们但更换原始文件是一个坏主意,因为它将被下一次更新所取代.我联系了开发人员提交修复程序但可能需要一些时间.
在此期间,我想从我的模板目录加载一个副本.我已经尝试过多种方式:
load_plugin_textdomain( 'tribe-events-calendar', get_template_directory() . '/languages' );
Run Code Online (Sandbox Code Playgroud)
或者
add_filter('override_load_textdomain', …)
Run Code Online (Sandbox Code Playgroud)
在我的functions.php中,但它似乎不起作用.我唯一能做的就是禁用原始翻译文件的加载.
有没有办法在加载时替换插件转换文件?我也使用WPML,但在"Translate with .mo files"模式中没有"Translate with WPML",所以我无法动态更改插件翻译.也许WPML可以加载我自己的事件日历翻译?
小智 7
我是 Transposh 插件的作者,
您的答案实际上是在以下四个过滤器中:
add_filter('gettext', ......, 3);
add_filter('gettext_with_context', ......, 3);
add_filter('ngettext', ......, 4);
add_filter('ngettext_with_context', ....., 4);
Run Code Online (Sandbox Code Playgroud)
(当然,您需要添加功能和优先级而不是.....)
这些函数将获取字符串和域,您可以使用它们来执行以下功能:
function gettext_filter($translation, $orig, $domain) {
if ($domain == 'plugin_domain') {
if ($orig == 'some text') {
return "some translation";
}
}
return $translation;
}
Run Code Online (Sandbox Code Playgroud)
您可以在您的functions.php主题文件中添加以下几行
$text_domain = 'the-events-calendar';
$original_language_file = ABSPATH . DIRECTORY_SEPARATOR . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'the-events-calendar' . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'the-events-calendar-fr_FR.mo';
$override_language_file = ABSPATH . DIRECTORY_SEPARATOR . 'wp-content' . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . 'your-own-theme' . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'the-events-calendar-fr_FR.override.mo';
// Unload the translation for the text domain of the plugin
unload_textdomain($text_domain);
// Load first the override file
load_textdomain($text_domain, $override_language_file );
// Then load the original translation file
load_textdomain($text_domain, $original_language_file );
Run Code Online (Sandbox Code Playgroud)
您必须将两个文件变量替换为实际的语言文件。
但是我们假设法语文件在插件语言文件夹中,而您的替代语言文件在语言主题文件夹中。
这个想法是:
这仅适用于已编译的mo文件。
您只能将要覆盖的几个字符串添加到覆盖文件中。
| 归档时间: |
|
| 查看次数: |
3874 次 |
| 最近记录: |