函数文档

load_default_textdomain()

💡 云策文档标注

概述

load_default_textdomain() 函数用于根据当前区域设置加载默认的翻译字符串,主要处理 WordPress 核心的 .mo 文件加载。它基于 locale 参数确定文件路径,并支持多站点和管理界面的特殊处理。

关键要点

  • 函数加载位于 WP_LANG_DIR 常量路径下的 .mo 文件,文件名基于 locale 参数(如 en_US.mo)。
  • 参数 $locale 可选,默认为 get_locale() 或 determine_locale() 的值,用于指定要加载的区域设置。
  • 返回布尔值,表示 textdomain 是否成功加载。
  • 函数内部会先卸载已加载的默认翻译字符串,然后根据条件加载 admin-$locale.mo、ms-$locale.mo 或 admin-network-$locale.mo 等文件。
  • 相关函数包括 load_textdomain()、unload_textdomain()、determine_locale() 等,用于辅助翻译管理。

代码示例

function load_default_textdomain( $locale = null ) {
    if ( null === $locale ) {
        $locale = determine_locale();
    }

    // Unload previously loaded strings so we can switch translations.
    unload_textdomain( 'default', true );

    $return = load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo", $locale );

    if ( ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) && ! file_exists( WP_LANG_DIR . "/admin-$locale.mo" ) ) {
        load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo", $locale );
        return $return;
    }

    if ( is_admin() || wp_installing() || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) || doing_action( 'wp_maybe_auto_update' ) ) {
        load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo", $locale );
    }

    if ( is_network_admin() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) {
        load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo", $locale );
    }

    return $return;
}

📄 原文内容

Loads default translated strings based on locale.

Description

Loads the .mo file in WP_LANG_DIR constant path from WordPress root.
The translated (.mo) file is named based on the locale.

See also

Parameters

$localestringoptional
Locale to load. Default is the value of get_locale() .

Default:null

Return

bool Whether the textdomain was loaded.

Source

function load_default_textdomain( $locale = null ) {
	if ( null === $locale ) {
		$locale = determine_locale();
	}

	// Unload previously loaded strings so we can switch translations.
	unload_textdomain( 'default', true );

	$return = load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo", $locale );

	if ( ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) && ! file_exists( WP_LANG_DIR . "/admin-$locale.mo" ) ) {
		load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo", $locale );
		return $return;
	}

	if ( is_admin() || wp_installing() || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) || doing_action( 'wp_maybe_auto_update' ) ) {
		load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo", $locale );
	}

	if ( is_network_admin() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) {
		load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo", $locale );
	}

	return $return;
}

Changelog

Version Description
1.5.0 Introduced.