Get language selector working.

The chosen language got lost (reset to "en") after following the next
link, as the language field wasn't part of those links.

Now we choose the language in three steps:

If "language" ist set (after using the language selector form), we use
that.

If it isn't set but a plugin group was chosen, we take the right
language from the filename of that page.

Only if neither is set we fall back to english.

Moreover we keep the current language "selected" in the language
selector dropdown.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2020-03-24 12:58:43 +01:00
parent 0af1411cba
commit 5ffa0ad4d3

View file

@ -1,17 +1,24 @@
<?php
# language switch
if (isset($_GET['language'])) {
#setcookie('language', $_GET['language']);
}
if (empty($_REQUEST['language'])) {
$_REQUEST['language'] = 'en';
# if language (from language selector form) is set, set LANG accordingly
if (!empty($_REQUEST['language'])) {
define('LANG', preg_replace('@[^a-z_]@i', '', $_REQUEST['language']));
# if a plugin group is displayed, get LANG from page name
} elseif (!empty($_REQUEST['mode']) && (substr(($_REQUEST['mode']), 0, 8) != 'template')) {
define('LANG', preg_replace('@[^a-z_]@i', '', end(explode('_',$_REQUEST['mode']))));
# fall back to default (english)
} else {
define('LANG', 'en');
}
define('LANG', preg_replace('@[^a-z_]@i', '', $_REQUEST['language']));
if (is_dir('homepage')) {
define('BASEDIR', 'homepage/');
} else {
define('BASEDIR', '');
}
if (!empty($_REQUEST['mode']) && (substr(($_REQUEST['mode']), 0, 8) != 'template')) {
if (!empty($_REQUEST['mode']) && !empty($_REQUEST['language']) && (substr(($_REQUEST['mode']), 0, 8) != 'template')) {
$page_language = end(explode('_',$_REQUEST['mode']));
if ($page_language != LANG) {
$_REQUEST['mode'] = preg_replace ('/'.$page_language.'$/', LANG, $_REQUEST['mode']);
@ -136,7 +143,7 @@ if (!empty($_REQUEST['mode']) && (substr(($_REQUEST['mode']), 0, 8) != 'template
'ta' => 'Tamil');
foreach($lang as $l => $d) {
?>
<option value="<?php echo $l; ?>"><?php echo htmlspecialchars($d, ENT_COMPAT, 'UTF-8'); ?></option>
<option value="<?php echo $l ?>"<?php echo ($l == LANG) ? ' selected' : ''; ?>><?php echo htmlspecialchars($d, ENT_COMPAT, 'UTF-8'); ?></option>
<?php
}
?>