Disabling Translation Update

时间:2018-04-14 作者:Rahmat Baghdadi

WordPress更新Languages文件夹中的翻译文件有两种方式:1。触发时自动更新。2、当用户在“更新”页面上请求时手动执行。

有没有办法禁用这两个文件夹,这样就不能对Languages文件夹应用任何更改?

2 个回复
最合适的回答,由SO网友:Tim 整理而成

您已经使用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 策略在上面的代码中,您的文件实际上首先完成,然后合并到已安装文件的顶部。

SO网友:Rahmat Baghdadi

我有一段代码禁用了自动翻译更新:

if( function_exists(\'add_filter\') ){add_filter( \'auto_update_translation\', \'__return_false\' );}
这是一个解决了的问题。但如果我手动更新插件,WordPress会在之后更新翻译。如何修复此部件?有什么想法吗?

结束

相关推荐

Custom metabox translation

我已经创建了一个自定义的帖子类型,并添加了一些自定义的元数据库,现在我想知道我在我的网站上使用了什么样的翻译插件?我对它们都没有经验,所以我不知道谁会支持我的自定义元数据库,谁不会。