diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html
index bb22ac861c8..dc6dcf1797a 100644
--- a/phpBB/adm/style/acp_ext_list.html
+++ b/phpBB/adm/style/acp_ext_list.html
@@ -99,25 +99,44 @@
{L_EXTENSIONS_ADMIN}
-
- {L_EXTENSION_INSTALL_HEADLINE} |
-
-
- {L_EXTENSION_INSTALL_EXPLAIN} |
-
-
- {L_EXTENSION_UPDATE_HEADLINE} |
-
-
- {L_EXTENSION_UPDATE_EXPLAIN} |
-
-
- {L_EXTENSION_REMOVE_HEADLINE} |
-
-
- {L_EXTENSION_REMOVE_EXPLAIN} |
-
-
+
+
+ {L_EXTENSION_INSTALLING_HEADLINE} |
+
+
+
+
+ {% for step in lang_raw('EXTENSION_INSTALLING_EXPLAIN') %}
+ - {{ step }}
+ {% endfor %}
+
+ |
+
+
+ {L_EXTENSION_UPDATING_HEADLINE} |
+
+
+
+
+ {% for step in lang_raw('EXTENSION_UPDATING_EXPLAIN') %}
+ - {{ step }}
+ {% endfor %}
+
+ |
+
+
+ {L_EXTENSION_REMOVING_HEADLINE} |
+
+
+
+
+ {% for step in lang_raw('EXTENSION_REMOVING_EXPLAIN') %}
+ - {{ step }}
+ {% endfor %}
+
+ |
+
+
diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php
index c6eb147b86e..bf854cdb7b4 100644
--- a/phpBB/language/en/acp/extensions.php
+++ b/phpBB/language/en/acp/extensions.php
@@ -36,14 +36,15 @@
$lang = array_merge($lang, array(
- 'EXTENSION_ALREADY_INSTALLED' => 'The “%s” extension has already been installed.',
- 'EXTENSION_ALREADY_INSTALLED_MANUALLY' => 'The “%s” extension has already been installed manually.',
- 'EXTENSION_ALREADY_MANAGED' => 'The “%s” extension is already managed.',
- 'EXTENSION_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the existing files could not be removed from the filesystem.',
- 'EXTENSION_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension could not be installed. The prior installation of this extension has been restored.',
- 'EXTENSION_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files could not be removed. You might want to delete the “%2$s” files manually.',
- 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred while enabling it.',
- 'EXTENSION_NOT_INSTALLED' => 'The “%s” extension is not installed.',
+ 'EXTENSIONS_ALREADY_INSTALLED' => 'The “%s” extension has already been installed.',
+ 'EXTENSIONS_ALREADY_INSTALLED_MANUALLY' => 'The “%s” extension has already been installed manually.',
+ 'EXTENSIONS_ALREADY_MANAGED' => 'The “%s” extension is already managed.',
+ 'EXTENSIONS_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the existing files could not be removed from the filesystem.',
+ 'EXTENSIONS_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension could not be installed. The prior installation of this extension has been restored.',
+ 'EXTENSIONS_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files could not be removed. You might want to delete the “%2$s” files manually.',
+ 'EXTENSIONS_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred while enabling it.',
+ 'EXTENSIONS_NOT_INSTALLED' => 'The “%s” extension is not installed.',
+ 'EXTENSIONS_NOT_MANAGED' => 'The “%s” extension is not being managed.',
'ENABLING_EXTENSIONS' => 'Enabling extensions',
'DISABLING_EXTENSIONS' => 'Disabling extensions',
@@ -74,6 +75,8 @@
'EXTENSION_DELETE_DATA_EXPLAIN' => 'Deleting an extension’s data removes all of its data and settings. The extension files are retained so it can be enabled again.',
'EXTENSION_DISABLE_EXPLAIN' => 'Disabling an extension retains its files, data and settings but removes any functionality added by the extension.',
'EXTENSION_ENABLE_EXPLAIN' => 'Enabling an extension allows you to use it on your board.',
+ 'EXTENSION_REMOVE_EXPLAIN' => 'Removing an extension removes all of its files, data and settings.',
+ 'EXTENSION_UPDATE_EXPLAIN' => 'Updating an extension will install the latest version compatible with your board, removing old files and replacing them with new ones, and updating the database if necessary.',
'EXTENSION_DELETE_DATA_IN_PROGRESS' => 'The extension’s data is currently being deleted. Please do not leave or refresh this page until it is completed.',
'EXTENSION_DISABLE_IN_PROGRESS' => 'The extension is currently being disabled. Please do not leave or refresh this page until it is completed.',
@@ -86,25 +89,25 @@
'EXTENSION_NAME' => 'Extension Name',
'EXTENSION_ACTIONS' => 'Actions',
'EXTENSION_OPTIONS' => 'Options',
- 'EXTENSION_INSTALL_HEADLINE'=> 'Installing an extension',
- 'EXTENSION_INSTALL_EXPLAIN' => '
- - Download an extension from phpBB’s extensions database
- - Unzip the extension and upload it to the ext/ directory of your phpBB board
- - Enable the extension, here in the Extensions manager
-
',
- 'EXTENSION_UPDATE_HEADLINE' => 'Updating an extension',
- 'EXTENSION_UPDATE_EXPLAIN' => '
- - Disable the extension
- - Delete the extension’s files from the filesystem
- - Upload the new files
- - Enable the extension
-
',
- 'EXTENSION_REMOVE_HEADLINE' => 'Completely removing an extension from your board',
- 'EXTENSION_REMOVE_EXPLAIN' => '
- - Disable the extension
- - Delete the extension’s data
- - Delete the extension’s files from the filesystem
-
',
+ 'EXTENSION_INSTALLING_HEADLINE' => 'Installing an extension',
+ 'EXTENSION_INSTALLING_EXPLAIN' => [
+ 0 => 'Download an extension from phpBB’s extensions database',
+ 1 => 'Unzip the extension and upload it to the ext/ directory of your phpBB board',
+ 2 => 'Enable the extension, here in the Extensions manager',
+ ],
+ 'EXTENSION_REMOVING_HEADLINE' => 'Deleting an extension from your board',
+ 'EXTENSION_REMOVING_EXPLAIN' => [
+ 0 => 'Disable the extension',
+ 1 => 'Delete the extension’s data',
+ 2 => 'Delete the extension‘s files from the filesystem',
+ ],
+ 'EXTENSION_UPDATING_HEADLINE' => 'Updating an extension',
+ 'EXTENSION_UPDATING_EXPLAIN' => [
+ 0 => 'Disable the extension',
+ 1 => 'Delete the extension’s files from the filesystem',
+ 2 => 'Upload the new files',
+ 3 => 'Enable the extension',
+ ],
'EXTENSION_DELETE_DATA_CONFIRM' => 'Are you sure that you wish to delete the data associated with “%s”?
This removes all of its data and settings and cannot be undone!',
'EXTENSION_DISABLE_CONFIRM' => 'Are you sure that you wish to disable the “%s” extension?',
diff --git a/phpBB/phpbb/template/twig/extension.php b/phpBB/phpbb/template/twig/extension.php
index 2e920dbe4be..7fde9e2cac2 100644
--- a/phpBB/phpbb/template/twig/extension.php
+++ b/phpBB/phpbb/template/twig/extension.php
@@ -93,6 +93,7 @@ public function getFunctions()
new \Twig\TwigFunction('lang', array($this, 'lang')),
new \Twig\TwigFunction('lang_defined', array($this, 'lang_defined')),
new \Twig\TwigFunction('lang_js', [$this, 'lang_js']),
+ new \Twig\TwigFunction('lang_raw', [$this, 'lang_raw']),
new \Twig\TwigFunction('get_class', 'get_class'),
);
}
@@ -214,4 +215,16 @@ public function lang_js(): string
return twig_escape_filter($this->environment, call_user_func_array([$this, 'lang'], $args), 'js');
}
+
+ /**
+ * Get raw value associated with lang key
+ *
+ * @param string $key
+ *
+ * @return array|string Raw value associated with lang key
+ */
+ public function lang_raw(string $key): array|string
+ {
+ return call_user_func_array(array($this->language, 'lang_raw'), [$key]);
+ }
}
diff --git a/tests/template/template_test.php b/tests/template/template_test.php
index 8faa52d8acd..4fc98583669 100644
--- a/tests/template/template_test.php
+++ b/tests/template/template_test.php
@@ -365,15 +365,15 @@ public function template_data()
array(),
array(),
array(),
- "VARIABLE\n1_VARIABLE\nVARIABLE\n1_VARIABLE",
+ "VARIABLE\n1_VARIABLE\nVARIABLE\n1_VARIABLE\nVARIABLE\n1_VARIABLE\nARY_VARIABLE",
),
array(
'lang_twig.html',
array(),
array(),
array(),
- "Value'\n1 O'Clock\nValue\\u0027\n1\\u0020O\\u0027Clock",
- array('VARIABLE' => "Value'", '1_VARIABLE' => "1 O'Clock"),
+ "Value'\n1 O'Clock\nValue\\u0027\n1\\u0020O\\u0027Clock\nValue'\n1 O'Clock\nfoo|bar",
+ array('VARIABLE' => "Value'", '1_VARIABLE' => "1 O'Clock", 'ARY_VARIABLE' => ['foo', 'bar']),
),
array(
'loop_nested_multilevel_ref.html',
diff --git a/tests/template/templates/lang_twig.html b/tests/template/templates/lang_twig.html
index bf31012819c..a331c7f5063 100644
--- a/tests/template/templates/lang_twig.html
+++ b/tests/template/templates/lang_twig.html
@@ -3,3 +3,7 @@
{{ lang_js('VARIABLE') }}
{{ lang_js('1_VARIABLE') }}
+
+{{ lang_raw('VARIABLE') }}
+{{ lang_raw('1_VARIABLE') }}
+{{ lang_raw('ARY_VARIABLE')|join('|') }}