您已经使用auto_update_translation
. 我不知道手动更新后这不起作用(也没有尝试过),但也许还可以看看async_update_translation 它根据文档“在进行其他升级后异步升级语言包”。
不管上述情况如何,我建议使用另一种方法,即仍然安装社区翻译,但您自己的自定义翻译会在存在时(且仅在存在时)覆盖。
这意味着您可以改进您不喜欢的翻译,同时还可以从您尚未了解的任何新翻译中获益。(即插件更新后源字符串发生变化)。
要做到这一点,您将拥有每个语言文件的两个副本,并强制WordPress将它们加载到彼此的顶部,以您的文件为准。
(1) 模拟languages
并移动您自己的自定义翻译文件,这样无论您的语言是什么,都有如下路径:
wp-content/my-translations/plugins/foo-en_GB.mo
(2)添加以下代码作为
must-use 插件,以确保它在任何其他尝试引导其翻译之前准备就绪。
<?php
/*
Plugin Name: Custom Translations
Description: Merges translations under my-languages on top of those installed.
*/
function my_custom_load_textdomain_hook( $domain = \'\', $mofile = \'\' ){
$basedir = trailingslashit(WP_LANG_DIR);
$baselen = strlen($basedir);
// only run this if file being loaded is under WP_LANG_DIR
if( $basedir === substr($mofile,0,$baselen) ){
// Our custom directory is parallel to languages directory
if( $mofile = realpath( $basedir.\'../my-languages/\'.substr($mofile,$baselen) ) ){
load_textdomain( $domain, $mofile );
}
}
}
add_action( \'load_textdomain\', \'my_custom_load_textdomain_hook\', 10, 2 );
请注意,自定义文件只需要包含要更改的字符串。这取决于WordPress的当前
merging 策略在上面的代码中,您的文件实际上首先完成,然后合并到已安装文件的顶部。