WordPress 6.7 國際化改進:翻譯管理與性能優(yōu)化

WordPress 6.7 中有各種國際化(i18n)改進,我們一起看看這些改進。

確定翻譯是否存在

有時,無需先加載給定文本域的翻譯,即可知道內(nèi)存中是否已存在翻譯,這一點很有用。新has_translation()功能正是可以實現(xiàn)這一點。

有關(guān)更多詳細信息,請參閱#52696?/?[59029]

圖片[1]-WordPress 6.7 國際化改進:翻譯管理與性能優(yōu)化-光子波動網(wǎng) | 專業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

以管理員的語言環(huán)境發(fā)送電子郵件

在 4.7 版中,WordPress 增加了讓用戶設(shè)置其首選語言環(huán)境的功能。向用戶發(fā)送電子郵件時,電子郵件始終以該語言環(huán)境發(fā)送,而其他所有人都會以站點的語言環(huán)境收到電子郵件。

現(xiàn)在,WordPress 6.7 又邁進了一步:每次向管理員電子郵件地址 (?admin_email) 發(fā)送電子郵件時,WordPress 都會檢查是否存在具有相同電子郵件地址的用戶。如果存在,則以該用戶的語言環(huán)境發(fā)送電子郵件。

有關(guān)更多詳細信息,請參閱#61518?/?[59128]。

圖片[2]-WordPress 6.7 國際化改進:翻譯管理與性能優(yōu)化-光子波動網(wǎng) | 專業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

如果翻譯加載過早,則會發(fā)出警告

如果開發(fā)人員在插件或主題中過早加載翻譯(在當前用戶尚未知曉之前),WordPress 現(xiàn)在會發(fā)出警告?,F(xiàn)有功能(如load_plugin_textdomain()和 )load_theme_textdomain()已更新,以將實際加載推遲到核心中現(xiàn)有的即時翻譯邏輯。這降低了觸發(fā)警告的可能性,甚至在某些情況下通過避免加載在給定頁面上不需要的翻譯來提高性能。

after_setup_theme當嘗試在或之前加載翻譯時init,WordPress 會嘗試比平時更早地加載當前用戶,而不會給其他插件可能參與該過程的機會。它還會阻止任何插件過濾翻譯調(diào)用,例如切換語言環(huán)境或文件位置。因此添加此警告以指出這種意外行為。

圖片[3]-WordPress 6.7 國際化改進:翻譯管理與性能優(yōu)化-光子波動網(wǎng) | 專業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

有關(guān)更多詳細信息,請參閱#44937、[59127][59157] 。

_doing_it_wrong()例如,如果直接調(diào)用get_plugin_data()(默認情況下會嘗試加載翻譯)或__()不等待鉤子,插件可能會出現(xiàn)這種情況init。以下是在實際已修復(fù)的插件中發(fā)現(xiàn)的一個常見示例:

/**
 * Plugin Name: Awesome Plugin
 */

function myplugin_get_version() {
	require_once ABSPATH . 'wp-admin/includes/plugin.php';
	// Prevent early translation call by setting $translate to false.
	$plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false );
	return $plugin_data['Version'];
}

define( 'MYPLUGIN_VERSION', myplugin_get_version() );

如果在調(diào)用時未明確設(shè)置$translate為,則該函數(shù)默認翻譯插件元數(shù)據(jù)。由于此插件只需要版本號,因此無需翻譯任何其他字段。falseget_plugin_data()

另一個例子:

/**
 * Plugin Name: Awesome Plugin
 */

class My_Awesome_Plugin {
	public $name;
	public function __construct() {
		// This triggers just-in-time translation loading
		$this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' );

		// ... do something
	}
}

// This immediately instantiates the class, way before `init`.
$myplugin = new My_Awesome_Plugin();

這里,類在主插件文件中立即實例化,類構(gòu)造函數(shù)中的代碼使用轉(zhuǎn)換函數(shù)??梢酝ㄟ^將類實例化推遲到之后init或?qū)⑥D(zhuǎn)換調(diào)用推遲到真正需要時來避免這種情況。

如果插件受到此警告的影響,可以使用如下代碼來找出觸發(fā)該警告的代碼路徑:

add_action(
	'doing_it_wrong_run',
	static function ( $function_name ) {
		if ( '_load_textdomain_just_in_time' === $function_name ) {
			debug_print_backtrace();
		}
	}
);

在這種情況下,Query Monitor之類的開發(fā)工具也很有用。

圖片[4]-WordPress 6.7 國際化改進:翻譯管理與性能優(yōu)化-光子波動網(wǎng) | 專業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

聯(lián)系我們
教程看不懂?聯(lián)系我們?yōu)槟赓M解答!免費助力個人,小企站點!
客服微信
客服微信
電話:020-2206-9892
QQ咨詢:1025174874
郵件:info@361sale.com
工作時間:周一至周五,9:30-18:30,節(jié)假日休息
? 轉(zhuǎn)載聲明
本文作者:Harry
THE END
喜歡就支持一下吧
點贊0 分享
評論 搶沙發(fā)

請登錄后發(fā)表評論

    暫無評論內(nèi)容