diff --git a/changelanguage.pl b/changelanguage.pl index 9a72f8dcba..360484c5fa 100755 --- a/changelanguage.pl +++ b/changelanguage.pl @@ -25,5 +25,7 @@ my $query = new CGI; my $language = $query->param('language'); my $url = $query->referer(); -#warn "Language : $query // $language // $url"; +$url =~ s|(.)language=[\w-]*&?|$1|; +$url =~ s|(&\|\?)$||; # Remove extraneous ? or & + C4::Templates::setlanguagecookie( $query, $language, $url ); diff --git a/opac/opac-changelanguage.pl b/opac/opac-changelanguage.pl index 2773704e02..9c68ab46f6 100755 --- a/opac/opac-changelanguage.pl +++ b/opac/opac-changelanguage.pl @@ -25,4 +25,11 @@ my $language = $query->param('language'); my $url = $query->referer() || '/'; # warn "Language : $query // $language // $url"; + +# If language was set by an external URL the parameter +# 'language=' should be removed from url string, otherwise +# the language picker will not work +$url =~ s|(.)language=[\w-]*&?|$1|; +$url =~ s|(&\|\?)$||; # Remove extraneous ? or & + C4::Templates::setlanguagecookie( $query, $language, $url );