WordPress.org

Make WordPress Core

Ticket #29783: 29783.7.diff

File 29783.7.diff, 1.9 KB (added by pento, 9 months ago)
  • src/wp-includes/l10n.php

     
    2828 * @return string The locale of the blog or from the {@see 'locale'} hook. 
    2929 */ 
    3030function get_locale() { 
    31         global $locale, $wp_local_package; 
     31        global $locale, $wp_local_package, $wpdb; 
    3232 
    3333        if ( isset( $locale ) ) { 
    3434                /** 
     
    5050                $locale = WPLANG; 
    5151        } 
    5252 
     53        // If $wpdb hasn't been initialised yet, we can only return what we have. 
     54        if ( ! $wpdb ) { 
     55                if ( ! $locale ) { 
     56                        return 'en_US'; 
     57                } 
     58 
     59                return $locale; 
     60        } 
     61 
    5362        // If multisite, check options. 
    5463        if ( is_multisite() ) { 
    5564                // Don't check blog option when installing. 
  • tests/phpunit/tests/l10n/getLocale.php

     
    8181                $this->assertSame( 'en_US', $found ); 
    8282        } 
    8383 
     84        public function test_should_fall_back_on_locale_when_wpdb_is_unavailable() { 
     85                global $locale, $wpdb; 
     86 
     87                $old_locale = $locale; 
     88                $old_wpdb = $wpdb; 
     89 
     90                $locale = $expected = "Is this a locale? No. No it isn't."; 
     91                $wpdb = null; 
     92 
     93                $found = get_locale(); 
     94 
     95                $locale = $old_locale; 
     96                $wpdb = $old_wpdb; 
     97 
     98                $this->assertSame( $expected, $found ); 
     99        } 
     100 
     101        public function test_should_fall_back_on_es_US_when_locale_and_wpdb_are_unavailable() { 
     102                global $locale, $wpdb; 
     103 
     104                $old_locale = $locale; 
     105                $old_wpdb = $wpdb; 
     106 
     107                $locale = null; 
     108                $wpdb = null; 
     109 
     110                $found = get_locale(); 
     111 
     112                $locale = $old_locale; 
     113                $wpdb = $old_wpdb; 
     114 
     115                $this->assertSame( 'en_US', $found ); 
     116        } 
     117 
    84118        public function test_should_respect_get_locale_filter() { 
    85119                add_filter( 'locale', array( $this, 'filter_get_locale' ) ); 
    86120                $found = get_locale();