Changeset 37855
- Timestamp:
- 06/23/2016 02:47:44 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/l10n.php
r37517 r37855 510 510 * @since 1.5.0 511 511 * 512 * @global array $l10n 512 * @global array $l10n An array of all currently loaded text domains. 513 * @global array $l10n_unloaded An array of all text domains that have been unloaded again. 513 514 * 514 515 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 517 518 */ 518 519 function load_textdomain( $domain, $mofile ) { 519 global $l10n; 520 global $l10n, $l10n_unloaded; 521 522 $l10n_unloaded = (array) $l10n_unloaded; 520 523 521 524 /** … … 531 534 532 535 if ( true == $plugin_override ) { 536 unset( $l10n_unloaded[ $domain ] ); 537 533 538 return true; 534 539 } … … 562 567 $mo->merge_with( $l10n[$domain] ); 563 568 569 unset( $l10n_unloaded[ $domain ] ); 570 564 571 $l10n[$domain] = &$mo; 565 572 … … 572 579 * @since 3.0.0 573 580 * 574 * @global array $l10n 581 * @global array $l10n An array of all currently loaded text domains. 582 * @global array $l10n_unloaded An array of all text domains that have been unloaded again. 575 583 * 576 584 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 578 586 */ 579 587 function unload_textdomain( $domain ) { 580 global $l10n; 588 global $l10n, $l10n_unloaded; 589 590 $l10n_unloaded = (array) $l10n_unloaded; 581 591 582 592 /** … … 590 600 $plugin_override = apply_filters( 'override_unload_textdomain', false, $domain ); 591 601 592 if ( $plugin_override ) 602 if ( $plugin_override ) { 603 $l10n_unloaded[ $domain ] = true; 604 593 605 return true; 606 } 594 607 595 608 /** … … 604 617 if ( isset( $l10n[$domain] ) ) { 605 618 unset( $l10n[$domain] ); 619 620 $l10n_unloaded[ $domain ] = true; 621 606 622 return true; 607 623 } … … 794 810 * 795 811 * @see get_translations_for_domain() 812 * @global array $l10n_unloaded An array of all text domains that have been unloaded again. 796 813 * 797 814 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 799 816 */ 800 817 function _load_textdomain_just_in_time( $domain ) { 818 global $l10n_unloaded; 819 820 $l10n_unloaded = (array) $l10n_unloaded; 821 801 822 static $cached_mofiles = null; 802 823 803 824 // Short-circuit if domain is 'default' which is reserved for core. 804 if ( 'default' === $domain ) {825 if ( 'default' === $domain || isset( $l10n_unloaded[ $domain ] ) ) { 805 826 return false; 806 827 } -
trunk/tests/phpunit/tests/l10n/loadTextdomainJustInTime.php
r37440 r37855 23 23 wp_clean_themes_cache(); 24 24 unset( $GLOBALS['wp_themes'] ); 25 26 unset( $GLOBALS['l10n_unloaded'] ); 25 27 } 26 28 … … 90 92 91 93 /** 92 * @ticket 34114 294 * @ticket 34114 93 95 */ 94 96 public function test_get_translations_for_domain_does_not_return_null_if_override_load_textdomain_is_used() { … … 101 103 $this->assertTrue( $translations instanceof NOOP_Translations ); 102 104 } 105 106 /** 107 * @ticket 37113 108 */ 109 public function test_should_allow_unloading_of_text_domain() { 110 add_filter( 'locale', array( $this, 'filter_set_locale_to_german' ) ); 111 112 require_once DIR_TESTDATA . '/plugins/internationalized-plugin.php'; 113 114 $expected_output_before = i18n_plugin_test(); 115 $is_textdomain_loaded_before = is_textdomain_loaded( 'internationalized-plugin' ); 116 117 unload_textdomain( 'internationalized-plugin' ); 118 remove_filter( 'locale', array( $this, 'filter_set_locale_to_german' ) ); 119 120 $expected_output_after = i18n_plugin_test(); 121 $is_textdomain_loaded_after = is_textdomain_loaded( 'internationalized-plugin' ); 122 123 add_filter( 'locale', array( $this, 'filter_set_locale_to_german' ) ); 124 load_textdomain( 'internationalized-plugin', WP_LANG_DIR . '/plugins/internationalized-plugin-de_DE.mo' ); 125 126 $expected_output_final = i18n_plugin_test(); 127 $is_textdomain_loaded_final = is_textdomain_loaded( 'internationalized-plugin' ); 128 129 unload_textdomain( 'internationalized-plugin' ); 130 remove_filter( 'locale', array( $this, 'filter_set_locale_to_german' ) ); 131 132 // Text domain loaded just in time. 133 $this->assertSame( 'Das ist ein Dummy Plugin', $expected_output_before ); 134 $this->assertTrue( $is_textdomain_loaded_before ); 135 136 // Text domain unloaded. 137 $this->assertSame( 'This is a dummy plugin', $expected_output_after ); 138 $this->assertFalse( $is_textdomain_loaded_after ); 139 140 // Text domain loaded manually again. 141 $this->assertSame( 'Das ist ein Dummy Plugin', $expected_output_final ); 142 $this->assertTrue( $is_textdomain_loaded_final ); 143 } 103 144 }
Note: See TracChangeset
for help on using the changeset viewer.