From 220f04c2009b31314181937125d21acaa726857d Mon Sep 17 00:00:00 2001 From: quietone <quietone@2572884.no-reply.drupal.org> Date: Tue, 30 Jan 2024 12:51:47 +1300 Subject: [PATCH] Issue #3406697 by alexpott, chr.fritsch: Fix notice in _install_prepare_import() due to alternate approach to translations --- core/includes/install.core.inc | 5 ++- ...lerTranslationNonStandardFilenamesTest.php | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationNonStandardFilenamesTest.php diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 15ec5704b38b..1bea5ddee7e1 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -1792,8 +1792,9 @@ function _install_prepare_import($langcodes, $server_pattern) { if (is_object($file)) { $filename = $file->filename; preg_match('/drupal-([0-9a-z\.-]+)\.' . $langcode . '\.po/', $filename, $matches); - // Get the version information. - if ($version = $matches[1]) { + // Get the version information. Custom translation files may not have a + // version number. + if (isset($matches[1]) && $version = $matches[1]) { $info = _install_get_version_info($version); // Picking the first file does not necessarily result in the right file. So // we check if at least the major version number is available. diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationNonStandardFilenamesTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationNonStandardFilenamesTest.php new file mode 100644 index 000000000000..f2eb8ef7c219 --- /dev/null +++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationNonStandardFilenamesTest.php @@ -0,0 +1,41 @@ +<?php + +namespace Drupal\FunctionalTests\Installer; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests non-standard named translation files get imported during install. + * + * @group Installer + */ +class InstallerTranslationNonStandardFilenamesTest extends InstallerTranslationMultipleLanguageNonInteractiveTest { + + /** + * {@inheritdoc} + */ + protected function prepareEnvironment() { + BrowserTestBase::prepareEnvironment(); + // Place custom local translations in the translations directory. + mkdir(DRUPAL_ROOT . '/' . $this->siteDirectory . '/files/translations', 0777, TRUE); + file_put_contents(DRUPAL_ROOT . '/' . $this->siteDirectory . '/files/translations/drupal.de.po', $this->getPo('de')); + file_put_contents(DRUPAL_ROOT . '/' . $this->siteDirectory . '/files/translations/drupal.es.po', $this->getPo('es')); + } + + /** + * {@inheritdoc} + */ + protected function prepareSettings() { + parent::prepareSettings(); + $settings['config']['locale.settings']['translation']['default_filename'] = (object) [ + 'value' => '%project.%language.po', + 'required' => TRUE, + ]; + $settings['config']['locale.settings']['translation']['default_server_pattern'] = (object) [ + 'value' => 'translations://%project.%language.po', + 'required' => TRUE, + ]; + $this->writeSettings($settings); + } + +} -- GitLab