diff --git a/core/modules/language/src/Config/LanguageConfigFactoryOverrideInterface.php b/core/modules/language/src/Config/LanguageConfigFactoryOverrideInterface.php index e79e90b..2cf4de9 100644 --- a/core/modules/language/src/Config/LanguageConfigFactoryOverrideInterface.php +++ b/core/modules/language/src/Config/LanguageConfigFactoryOverrideInterface.php @@ -14,8 +14,9 @@ /** * Gets the language object used to override configuration data. * - * @return \Drupal\Core\Language\LanguageInterface - * The language object used to override configuration data. + * @return \Drupal\Core\Language\LanguageInterface|null + * The language object used to override configuration data or NULL, if not + * set yet. */ public function getLanguage(); diff --git a/core/modules/language/src/ConfigurableLanguageManager.php b/core/modules/language/src/ConfigurableLanguageManager.php index 26892c3..41791f5 100644 --- a/core/modules/language/src/ConfigurableLanguageManager.php +++ b/core/modules/language/src/ConfigurableLanguageManager.php @@ -437,7 +437,8 @@ public function setConfigOverrideLanguage(LanguageInterface $language = NULL) { * {@inheritdoc} */ public function getConfigOverrideLanguage() { - return $this->configFactoryOverride->getLanguage(); + // There might be cases where the language override was not set yet. + return $this->configFactoryOverride->getLanguage() ?: $this->getCurrentLanguage(); } /** diff --git a/core/modules/language/tests/src/Unit/ConfigurableLanguageManagerTest.php b/core/modules/language/tests/src/Unit/ConfigurableLanguageManagerTest.php new file mode 100644 index 0000000..88bec9d --- /dev/null +++ b/core/modules/language/tests/src/Unit/ConfigurableLanguageManagerTest.php @@ -0,0 +1,45 @@ +getConfigFactoryStub([]); + $module_handler = $this->prophesize(ModuleHandlerInterface::class); + $config_override = $this->prophesize(LanguageConfigFactoryOverrideInterface::class); + $config_override->getLanguage()->willReturn(NULL); + $language_manager = new ConfigurableLanguageManager(new LanguageDefault(['id' => 'en']), $config_factory, $module_handler->reveal(), $config_override->reveal(), new RequestStack()); + + $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); + } + + /** + * @covers ::getConfigOverrideLanguage + */ + public function testGetConfigOverrideLanguageWithLanguage() { + $config_factory = $this->getConfigFactoryStub([]); + $module_handler = $this->prophesize(ModuleHandlerInterface::class); + $config_override = $this->prophesize(LanguageConfigFactoryOverrideInterface::class); + $config_override->getLanguage()->willReturn(new Language(['id' => 'fr'])); + $language_manager = new ConfigurableLanguageManager(new LanguageDefault(['id' => 'en']), $config_factory, $module_handler->reveal(), $config_override->reveal(), new RequestStack()); + + $this->assertEquals('fr', $language_manager->getConfigOverrideLanguage()->getId()); + } + +}