Issue #2791405 by alexpott, Thew, flocondetoile, eyilmaz, bsnodgrass, cilefen, aralnoth, xjm, mikeohara, jaybee@baelemans.eu, szeidler, Gábor Hojtsy, catch, gagarine, vaplas, claudiu.cristea, ckaotik, idebr: When installing a site in a language besides English, the site name is not saved and reverts to "Drupal"

8.5.x
Gabor Hojtsy 2017-11-29 19:58:03 +01:00
parent 3ed16f08d7
commit dad79553d6
5 changed files with 82 additions and 1 deletions

View File

@ -415,6 +415,7 @@ function install_begin_request($class_loader, &$install_state) {
else {
$environment = 'prod';
}
$GLOBALS['conf']['container_service_providers']['InstallerConfigOverride'] = 'Drupal\Core\Installer\ConfigOverride';
// Only allow dumping the container once the hash salt has been created.
$kernel = InstallerKernel::createFromRequest($request, $class_loader, $environment, (bool) Settings::get('hash_salt', FALSE));

View File

@ -0,0 +1,62 @@
<?php
namespace Drupal\Core\Installer;
use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Config\ConfigFactoryOverrideInterface;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderInterface;
/**
* Override configuration during the installer.
*/
class ConfigOverride implements ServiceProviderInterface, ConfigFactoryOverrideInterface {
/**
* {@inheritdoc}
*/
public function register(ContainerBuilder $container) {
// Register this class so that it can override configuration.
$container
->register('core.install_config_override', static::class)
->addTag('config.factory.override');
}
/**
* {@inheritdoc}
*/
public function loadOverrides($names) {
$overrides = [];
if (drupal_installation_attempted() && function_exists('drupal_install_profile_distribution_name')) {
// Early in the installer the site name is unknown. In this case we need
// to fallback to the distribution's name.
$overrides['system.site'] = [
'name' => drupal_install_profile_distribution_name(),
];
}
return $overrides;
}
/**
* {@inheritdoc}
*/
public function getCacheSuffix() {
return 'core.install_config_override';
}
/**
* {@inheritdoc}
*/
public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
return NULL;
}
/**
* {@inheritdoc}
*/
public function getCacheableMetadata($name) {
return new CacheableMetadata();
}
}

View File

@ -1,5 +1,5 @@
uuid: ''
name: 'Drupal'
name: ''
mail: ''
slogan: ''
page:

View File

@ -46,6 +46,8 @@ class DistributionProfileTest extends InstallerTestBase {
protected function setUpLanguage() {
// Verify that the distribution name appears.
$this->assertRaw($this->info['distribution']['name']);
// Verify that the distribution name is used in the site title.
$this->assertTitle('Choose language | ' . $this->info['distribution']['name']);
// Verify that the requested theme is used.
$this->assertRaw($this->info['distribution']['install']['theme']);
// Verify that the "Choose profile" step does not appear.

View File

@ -51,13 +51,29 @@ msgstr "Anonymous $langcode"
msgid "Language"
msgstr "Language $langcode"
#: Testing site name configuration during the installer.
msgid "Drupal"
msgstr "Drupal"
ENDPO;
}
/**
* {@inheritdoc}
*/
protected function installParameters() {
$params = parent::installParameters();
$params['forms']['install_configure_form']['site_name'] = 'SITE_NAME_' . $this->langcode;
return $params;
}
/**
* Tests that translations ended up at the expected places.
*/
public function testTranslationsLoaded() {
// Ensure the title is correct.
$this->assertEqual('SITE_NAME_' . $this->langcode, \Drupal::config('system.site')->get('name'));
// Verify German and Spanish were configured.
$this->drupalGet('admin/config/regional/language');
$this->assertText('German');