I18N: Don't initialize `WP_Locale_Switcher` in `wp_load_translations_early()`.
`wp_load_translations_early()` is used when WordPress isn't fully initialized. Therefore using the `WP_Locale_Switcher` with `get_locale()`/`get_user_locale()` can cause PHP fatal errors. This reverts [38976] and [38977], and instead removes `WP_Locale_Switcher` from `wp_load_translations_early()`. See #29783. Fixes #38535. git-svn-id: https://develop.svn.wordpress.org/trunk@39005 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
eb68984b1b
commit
404c584956
|
@ -50,16 +50,6 @@ function get_locale() {
|
||||||
$locale = WPLANG;
|
$locale = WPLANG;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If $wpdb hasn't been initialised yet, we can only return what we have.
|
|
||||||
if ( ! $wpdb ) {
|
|
||||||
if ( ! $locale ) {
|
|
||||||
$locale = 'en_US';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This filter is documented in wp-includes/l10n.php */
|
|
||||||
return apply_filters( 'locale', $locale );
|
|
||||||
}
|
|
||||||
|
|
||||||
// If multisite, check options.
|
// If multisite, check options.
|
||||||
if ( is_multisite() ) {
|
if ( is_multisite() ) {
|
||||||
// Don't check blog option when installing.
|
// Don't check blog option when installing.
|
||||||
|
|
|
@ -917,8 +917,6 @@ function wp_load_translations_early() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$wp_locale = new WP_Locale();
|
$wp_locale = new WP_Locale();
|
||||||
$wp_locale_switcher = new WP_Locale_Switcher();
|
|
||||||
$wp_locale_switcher->init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -81,40 +81,6 @@ class Tests_L10n_GetLocale extends WP_UnitTestCase {
|
||||||
$this->assertSame( 'en_US', $found );
|
$this->assertSame( 'en_US', $found );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_should_fall_back_on_locale_when_wpdb_is_unavailable() {
|
|
||||||
global $locale, $wpdb;
|
|
||||||
|
|
||||||
$old_locale = $locale;
|
|
||||||
$old_wpdb = $wpdb;
|
|
||||||
|
|
||||||
$locale = $expected = "Is this a locale? No. No it isn't.";
|
|
||||||
$wpdb = null;
|
|
||||||
|
|
||||||
$found = get_locale();
|
|
||||||
|
|
||||||
$locale = $old_locale;
|
|
||||||
$wpdb = $old_wpdb;
|
|
||||||
|
|
||||||
$this->assertSame( $expected, $found );
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_should_fall_back_on_es_US_when_locale_and_wpdb_are_unavailable() {
|
|
||||||
global $locale, $wpdb;
|
|
||||||
|
|
||||||
$old_locale = $locale;
|
|
||||||
$old_wpdb = $wpdb;
|
|
||||||
|
|
||||||
$locale = null;
|
|
||||||
$wpdb = null;
|
|
||||||
|
|
||||||
$found = get_locale();
|
|
||||||
|
|
||||||
$locale = $old_locale;
|
|
||||||
$wpdb = $old_wpdb;
|
|
||||||
|
|
||||||
$this->assertSame( 'en_US', $found );
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_should_respect_get_locale_filter() {
|
public function test_should_respect_get_locale_filter() {
|
||||||
add_filter( 'locale', array( $this, 'filter_get_locale' ) );
|
add_filter( 'locale', array( $this, 'filter_get_locale' ) );
|
||||||
$found = get_locale();
|
$found = get_locale();
|
||||||
|
|
Loading…
Reference in New Issue