/**
  * @ticket 34114
  */
 public function test_plugin_translation_should_be_translated_without_calling_load_plugin_textdomain()
 {
     add_filter('locale', array($this, 'filter_set_locale_to_german'));
     require_once DIR_TESTDATA . '/plugins/internationalized-plugin.php';
     $is_textdomain_loaded_before = is_textdomain_loaded('internationalized-plugin');
     $expected_output = i18n_plugin_test();
     $is_textdomain_loaded_after = is_textdomain_loaded('internationalized-plugin');
     unload_textdomain('internationalized-plugin');
     remove_filter('locale', array($this, 'filter_set_locale_to_german'));
     $this->assertFalse($is_textdomain_loaded_before);
     $this->assertSame('Das ist ein Dummy Plugin', $expected_output);
     $this->assertTrue($is_textdomain_loaded_after);
 }
 public function test_multiple_switches_to_site_locale_and_user_locale()
 {
     global $wp_locale_switcher;
     $site_locale = get_locale();
     $user_id = $this->factory()->user->create(array('role' => 'administrator', 'locale' => 'en_GB'));
     wp_set_current_user($user_id);
     set_current_screen('dashboard');
     $locale_switcher = clone $wp_locale_switcher;
     $wp_locale_switcher = new WP_Locale_Switcher();
     $wp_locale_switcher->init();
     $user_locale = get_user_locale();
     load_default_textdomain($user_locale);
     require_once DIR_TESTDATA . '/plugins/internationalized-plugin.php';
     switch_to_locale('de_DE');
     switch_to_locale($site_locale);
     $expected = i18n_plugin_test();
     restore_current_locale();
     $wp_locale_switcher = $locale_switcher;
     set_current_screen('front');
     $this->assertSame('en_US', get_locale());
     $this->assertSame('This is a dummy plugin', $expected);
 }
 /**
  * @ticket 38485
  */
 public function test_plugin_translation_with_user_locale()
 {
     require_once DIR_TESTDATA . '/plugins/internationalized-plugin.php';
     set_current_screen('dashboard');
     wp_set_current_user(self::$user_id);
     $expected = i18n_plugin_test();
     set_current_screen('front');
     $this->assertSame('Das ist ein Dummy Plugin', $expected);
 }
 /**
  * @ticket 37113
  */
 public function test_should_allow_unloading_of_text_domain()
 {
     add_filter('locale', array($this, 'filter_set_locale_to_german'));
     require_once DIR_TESTDATA . '/plugins/internationalized-plugin.php';
     $expected_output_before = i18n_plugin_test();
     $is_textdomain_loaded_before = is_textdomain_loaded('internationalized-plugin');
     unload_textdomain('internationalized-plugin');
     remove_filter('locale', array($this, 'filter_set_locale_to_german'));
     $expected_output_after = i18n_plugin_test();
     $is_textdomain_loaded_after = is_textdomain_loaded('internationalized-plugin');
     add_filter('locale', array($this, 'filter_set_locale_to_german'));
     load_textdomain('internationalized-plugin', WP_LANG_DIR . '/plugins/internationalized-plugin-de_DE.mo');
     $expected_output_final = i18n_plugin_test();
     $is_textdomain_loaded_final = is_textdomain_loaded('internationalized-plugin');
     unload_textdomain('internationalized-plugin');
     remove_filter('locale', array($this, 'filter_set_locale_to_german'));
     // Text domain loaded just in time.
     $this->assertSame('Das ist ein Dummy Plugin', $expected_output_before);
     $this->assertTrue($is_textdomain_loaded_before);
     // Text domain unloaded.
     $this->assertSame('This is a dummy plugin', $expected_output_after);
     $this->assertFalse($is_textdomain_loaded_after);
     // Text domain loaded manually again.
     $this->assertSame('Das ist ein Dummy Plugin', $expected_output_final);
     $this->assertTrue($is_textdomain_loaded_final);
 }