diff --git a/modules/mod_languages/helper.php b/modules/mod_languages/helper.php index 3b344960d5290..bd122c68e81c6 100644 --- a/modules/mod_languages/helper.php +++ b/modules/mod_languages/helper.php @@ -114,7 +114,7 @@ public static function getList(&$params) { $language->link = JRoute::_($cassociations[$language->lang_code] . '&lang=' . $language->sef); } - elseif (isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) + elseif (!$language->active && isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) { $itemid = $associations[$language->lang_code]; $language->link = JRoute::_('index.php?lang=' . $language->sef . '&Itemid=' . $itemid); @@ -127,7 +127,10 @@ public static function getList(&$params) { if ($language->active) { - $language->link = JUri::getInstance()->toString(array('path', 'query')); + $limitstart = $app->input->get('limitstart'); + + // Correct the current URL, if it is damaged, add an additional fix for the limitstart parameter + $language->link = JRoute::_('&' . ($limitstart !== null ? 'limitstart=' . $limitstart : '')); } else { diff --git a/modules/mod_languages/tmpl/default.php b/modules/mod_languages/tmpl/default.php index 0192c3f05f557..0a3cf6335d5ac 100644 --- a/modules/mod_languages/tmpl/default.php +++ b/modules/mod_languages/tmpl/default.php @@ -56,9 +56,8 @@ get('show_active', 1)) : ?> -
  • - + image) : ?> image . '.gif', '', null, true); ?> @@ -87,9 +86,8 @@
  • get('show_active', 1)) : ?> -
  • - + get('image', 1)) : ?> image) : ?> image . '.gif', $language->title_native, array('title' => $language->title_native), true); ?> diff --git a/plugins/system/languagefilter/languagefilter.php b/plugins/system/languagefilter/languagefilter.php index 7ab830b308f4b..8c0efd1b332cb 100644 --- a/plugins/system/languagefilter/languagefilter.php +++ b/plugins/system/languagefilter/languagefilter.php @@ -827,10 +827,11 @@ public function onAfterDispatch() if (count($languages) > 1) { // Remove the sef from the default language if "Remove URL Language Code" is on - if ($remove_default_prefix && isset($languages[$this->default_lang])) + if ($remove_default_prefix && isset($languages[$this->default_lang]) && $this->default_lang !== $this->current_lang) { - $languages[$this->default_lang]->link - = preg_replace('|/' . $languages[$this->default_lang]->sef . '/|', '/', $languages[$this->default_lang]->link, 1); + $sef = $languages[$this->default_lang]->sef; + + $languages[$this->default_lang]->link = preg_replace("~/$sef/~", '/', $languages[$this->default_lang]->link, 1); } foreach ($languages as $i => &$language)