WordPressがLanguagesフォルダ内の翻訳ファイルを更新するには2つの方法があります。ユーザーが「アップデート」ページでそれを要求したときに手動で。
両方を無効にする方法はありますか?そのため、言語フォルダには変更を適用できませんか?
既にauto_update_translation
を使用して答えを出しました。手動アップデート後にこれが機能しなかった(そして試していない)ことは知りませんでしたが、おそらく async_update_translation を参照してください。これはドキュメント他のアップグレードが行われた後」。
上記に関係なく、コミュニティの翻訳をインストールする別のアプローチをお勧めしますが、独自のカスタム翻訳が存在する場合(および存在する場合のみ)オーバーライドします。
これは、あなたが嫌いな翻訳を改善する利点があることを意味しますが、それでもあなたがそれらについて知る前に現れる新しい翻訳の恩恵を受けます。 (つまり、プラグインの更新後にソース文字列が変更されます)。
これを行うには、各言語ファイルのコピーを2つ作成し、WordPressを強制的に互いの上にロードして、自分のものを優先させます。
(1)並列ディレクトリのlanguages
フォルダー構造を模倣し、独自のカスタム翻訳ファイルを移動して、言語が何であってもこのようなパスを作成します。
wp-content/my-translations/plugins/foo-en_GB.mo
(2)次のコードを must-use プラグインとして追加して、他の何かがそのbootstrap_を試みる前に準備ができていることを確認します。
<?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の現在の マージ 戦略に依存しています。上記のコードでは、ファイルは実際に最初に完了し、インストールされたファイルの上にマージされます。
自動翻訳更新を無効にするスニペットがあります。
if( function_exists('add_filter') ){add_filter( 'auto_update_translation', '__return_false' );}
それが解決した1つの問題です。しかし、私がプラグインを手動で更新すると、WordPressはその後翻訳を更新します。この部分も修正するには?何か案は?