WordPress 6.7では様々な国際化(i18n)が改善されました。これらの改善点を一緒に見ていこう。
翻訳が存在するかどうかを判断する
あるテキストフィールドの翻訳を最初に読み込むことなく、翻訳がすでにメモリに存在するかどうかを知ることができるのは便利なことです。新しいhas_translation()
ファンクションはまさにそれができる。
![画像[1]-WordPress 6.7国際化の改善:翻訳管理とパフォーマンスの最適化 - Photon Flux|プロフェッショナルなWordPress修理サービス、ワールドワイド、迅速な対応](https://www.361sale.com/wp-content/uploads/2024/10/2024102201464042.png)
管理者の言語環境での電子メール
WordPressはバージョン4.7でユーザーが好みの言語環境を設定できる機能.ユーザーにメールを送信する場合、メールは常にそのロケールで送信され、他のユーザーはサイトのロケールでメールを受信します。
今です。ワードプレス 6.7 もう一歩前進:管理者のメールアドレスにメッセージを送るたびに( 管理者メールアドレス
) メールを送信する際、WordPressは同じメールアドレスを持つユーザーがいるかどうかを確認します。その場合、メールはそのユーザーのロケールで送信されます。
![画像[2]-WordPress 6.7の国際的な改善:翻訳管理とパフォーマンスの最適化 - Photon Flux|プロフェッショナルなWordPress修理サービス、グローバルなリーチ、迅速な対応](https://www.361sale.com/wp-content/uploads/2024/10/2024102201474622.png)
翻訳が早くロードされた場合の警告
WordPressは、プラグインやテーマで翻訳をあまりに早い段階で読み込むと(現在のユーザーがそれを知る前に)、開発者に警告するようになりました。既存の機能(たとえばload_plugin_textdomain()
そして)load_theme_textdomain()
が更新され、コアの既存のインスタント翻訳ロジック.これにより、警告が発生する可能性が低くなり、場合によっては、特定のページで必要とされない翻訳の読み込みを回避することで、パフォーマンスが向上することさえあります。
after_setup_theme
翻訳をロードしようとするとき開始
WordPressは、他のプラグインがこのプロセスに参加する機会を与えることなく、通常よりも早く現在のユーザーをロードしようとします。また、ロケールやファイルの場所の切り替えのような、翻訳の呼び出しをフィルタリングするプラグインを妨げます。そのため、この警告はこの予期せぬ動作を指摘するために追加されました。
![画像[3]-WordPress 6.7国際的な改善:翻訳管理とパフォーマンスの最適化 - Photon Flux|プロフェッショナルなWordPress修理サービス、グローバルなリーチ、迅速な対応](https://www.361sale.com/wp-content/uploads/2024/10/2024102201480472.png)
詳細については#44937そして[59127]歌で応える[59157].
_doing_it_wrong()
例えばget_plugin_data()
(デフォルトで翻訳をロードしようとする)または__()
フックを待たずに、プラグインは次のように表示されます。開始
.以下は、実際の固定プラグインに見られる一般的な例である:
/*** プラグイン名:Awesome Plugin*/関数 myplugin_get_version() {require_once ABSPATH . 'wp-admin/includes/plugin.php'; // $translateを設定することで、早期の翻訳呼び出しを防ぎます。// $translateをfalseに設定することで、早期の翻訳呼び出しを防ぎます。$plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ falsereturn $plugin_data['Version'];}define( 'MYPLUGIN_VERSION', myplugin_get_version() );/** * プラグイン名:Awesome Plugin */ 関数 myplugin_get_version() { require_once ABSPATH . 'wp-admin/includes/plugin.php'; // $translateを設定することで、早期の翻訳呼び出しを防ぎます。 // $translateをfalseに設定することで、早期の翻訳呼び出しを防ぎます。 $plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ false return $plugin_data['Version']; } define( 'MYPLUGIN_VERSION', myplugin_get_version() );/** * プラグイン名:Awesome Plugin */ 関数 myplugin_get_version() { require_once ABSPATH . 'wp-admin/includes/plugin.php'; // $translateを設定することで、早期の翻訳呼び出しを防ぎます。 // $translateをfalseに設定することで、早期の翻訳呼び出しを防ぎます。 $plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ false return $plugin_data['Version']; } define( 'MYPLUGIN_VERSION', myplugin_get_version() );
明示的に$ranslate(翻訳
であれば、この関数はデフォルトでプラグインのメタデータを翻訳します。このプラグインが必要とするのはバージョン番号だけなので、他のフィールドを翻訳する必要はありません。無実
get_plugin_data()
別の例を挙げよう:
/*** プラグイン名:Awesome Plugin*/クラス My_Awesome_Plugin {public $name.public function __construct() { // これはジャストインタイムの翻訳読み込みをトリガーします。// これは、ジャストインタイムの翻訳ロードをトリガーします。$this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' );// ... 何かをする}}// これは `init` よりもずっと前に、クラスをインスタンス化する。$myplugin = new My_Awesome_Plugin();/** * プラグイン名:Awesome Plugin */ クラス My_Awesome_Plugin { public $name. public function __construct() { // これはジャストインタイムの翻訳読み込みをトリガーします。 // これは、ジャストインタイムの翻訳ロードをトリガーします。 $this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' ); // ... 何かをする } } // これは `init` よりもずっと前に、クラスをインスタンス化する。 $myplugin = new My_Awesome_Plugin();/** * プラグイン名:Awesome Plugin */ クラス My_Awesome_Plugin { public $name. public function __construct() { // これはジャストインタイムの翻訳読み込みをトリガーします。 // これは、ジャストインタイムの翻訳ロードをトリガーします。 $this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' ); // ... 何かをする } } // これは `init` よりもずっと前に、クラスをインスタンス化する。 $myplugin = new My_Awesome_Plugin();
ここでは、クラスはメイン・プラグイン・ファイルですぐにインスタンス化され、クラス・コンストラクタのコードは変換関数を使用します。クラスのインスタンス化は開始
あるいは、変換の呼び出しを実際に必要になるまで遅らせることでこれを回避することもできる。
プラグインがこの警告の影響を受けている場合、以下のコードを使って警告を引き起こしたコードへのパスを調べることができます:
add_action('doing_it_wrong_run'、static function ( $function_name){次のようにします。if ( '_load_textdomain_just_in_time' === $function_name ) { { ('_load_textdomain_just_in_time' === $function_name )debug_print_backtrace();}}).add_action( 'doing_it_wrong_run'、 static function ( $function_name){次のようにします。 if ( '_load_textdomain_just_in_time' === $function_name ) { { ('_load_textdomain_just_in_time' === $function_name ) debug_print_backtrace(); } } ).add_action( 'doing_it_wrong_run'、 static function ( $function_name){次のようにします。 if ( '_load_textdomain_just_in_time' === $function_name ) { { ('_load_textdomain_just_in_time' === $function_name ) debug_print_backtrace(); } } ).
この場合クエリーモニターこのような開発ツールも便利だ。
![画像[4]-WordPress 6.7国際化の改善:翻訳管理とパフォーマンスの最適化 - Photon Flux|プロのWordPress修理サービス、グローバルリーチ、迅速な対応](https://www.361sale.com/wp-content/uploads/2024/10/2024102201490314.png)
お問い合わせ |
---|
記事が読めない?無料でお答えします!個人サイト、中小企業サイトのための無料ヘルプ! |
① 電話:020-2206-9892 |
② QQ咨询:1025174874 |
三 Eメール:info@361sale.com |
④ 勤務時間: 月~金、9:30~18:30、祝日休み |
この記事へのリンクhttps://www.361sale.com/ja/21963
この記事は著作権で保護されており、必ず帰属表示を付けて複製してください。
コメントなし