Compare commits

..

5 commits

Author SHA1 Message Date
Matt Friedman
9b49a13927
Merge b82d7d3f47 into 9c49a2b86b 2025-06-15 14:54:14 -07:00
Marc Alexander
9c49a2b86b
[ticket/17399] Fix declaration to be in line with PHP documentation
PHPBB-17399
2025-06-15 19:59:13 +02:00
Marc Alexander
d017eff8f1
Merge branch '3.3.x' 2025-06-15 09:10:57 +02:00
Marc Alexander
d4a3311b76
Merge pull request #6829 from battye/ticket/17399
[ticket/17399] Fix selected language bug in installer
2025-06-15 09:08:49 +02:00
battye
8411da1819 [ticket/17399] Fix selected language in installer
This fixes a bug where a user could have other languages in the installer
but the language dropdown did not match the language shown.

PHPBB-17399
2025-06-14 14:35:18 +00:00
3 changed files with 34 additions and 1 deletions

View file

@ -20,7 +20,7 @@
<form method="post" action="#" id="language_selector">
<fieldset class="nobg">
<label for="language">{L_SELECT_LANG}{L_COLON}</label>
<select id="language" name="language">
<select id="language" name="language">
<!-- BEGIN language_select_item -->
<option value="{language_select_item.VALUE}"<!-- IF language_select_item.SELECTED --> selected="selected"<!-- ENDIF -->>{language_select_item.NAME}</option>
<!-- END language_select_item -->

View file

@ -339,6 +339,14 @@ class helper
protected function render_language_select($selected_language = null)
{
$langs = $this->lang_helper->get_available_languages();
// The first language will be selected by default. Unless a user has consciously included
// other languages in the installation process, it will be British English anyway.
if ($selected_language === null && count($langs))
{
$selected_language = $langs[0]['iso'];
}
foreach ($langs as $lang)
{
$this->template->assign_block_vars('language_select_item', array(

View file

@ -65,6 +65,8 @@ class language_file_helper
$available_languages[] = $this->get_language_data_from_json($data);
}
usort($available_languages, [$this, 'sort_by_local_name']);
return $available_languages;
}
@ -123,4 +125,27 @@ class language_file_helper
'turnstile_lang' => $data['extra']['turnstile-lang'] ?? '',
];
}
/**
* Sorts the languages by their name instead of iso code
*
* @param mixed $a First language data
* @param mixed $b Second language data
* @return int
*/
private static function sort_by_local_name(mixed $a, mixed $b): int
{
if ($a['local_name'] > $b['local_name'])
{
return 1;
}
else if ($a['local_name'] < $b['local_name'])
{
return -1;
}
else
{
return 0;
}
}
}