@@ -, +, @@ in language switcher - Have a multilingual koha installation, let's say en, de-CH, fr-FR and it-IT - Create external links e.g. from your multilingual library website to each language variant of OPAC: - Apply patch - Repeat steps above - Verify that the language switcher works - Verify in browser address field that after switching language, the param 'language= 'has vanished from url string - Try links with multiple params and with params containing 'language', e.g. ...cgi-bin/koha/opac-search.pl?language=fr-FR&q=language&mylanguage=test - Verify that only the parameter 'language=' vanishes --- changelanguage.pl | 4 +++- opac/opac-changelanguage.pl | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) --- a/changelanguage.pl +++ a/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 ); --- a/opac/opac-changelanguage.pl +++ a/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 ); --