Lines 569-574
sub accept_language {
Link Here
|
569 |
sub getlanguage { |
569 |
sub getlanguage { |
570 |
my ($cgi) = @_; |
570 |
my ($cgi) = @_; |
571 |
|
571 |
|
|
|
572 |
my $cache = Koha::Cache->get_instance(); |
573 |
my $cache_key = "getlanguage"; |
574 |
if ( not $cgi or not $cgi->param('language') ) { |
575 |
my $cached = $cache->get_from_cache($cache_key); |
576 |
return $cached if $cached; |
577 |
} |
578 |
|
572 |
$cgi //= new CGI; |
579 |
$cgi //= new CGI; |
573 |
my $interface = C4::Context->interface; |
580 |
my $interface = C4::Context->interface; |
574 |
my $theme = C4::Context->preference( ( $interface eq 'opac' ) ? 'opacthemes' : 'template' ); |
581 |
my $theme = C4::Context->preference( ( $interface eq 'opac' ) ? 'opacthemes' : 'template' ); |
Lines 584-597
sub getlanguage {
Link Here
|
584 |
} |
591 |
} |
585 |
|
592 |
|
586 |
# Chose language from the URL |
593 |
# Chose language from the URL |
587 |
$language = $cgi->param( 'language' ); |
594 |
my $cgi_param_language = $cgi->param( 'language' ); |
588 |
if ( defined $language && any { $_ eq $language } @languages) { |
595 |
if ( defined $cgi_param_language && any { $_ eq $cgi_param_language } @languages) { |
589 |
return $language; |
596 |
$language = $cgi_param_language; |
590 |
} |
597 |
} |
591 |
|
598 |
|
592 |
# cookie |
599 |
# cookie |
593 |
if ($language = $cgi->cookie('KohaOpacLanguage') ) { |
600 |
if (not $language and my $cgi_cookie_language = $cgi->cookie('KohaOpacLanguage') ) { |
594 |
$language =~ s/[^a-zA-Z_-]*//; # sanitize cookie |
601 |
( $language = $cgi_cookie_language ) =~ s/[^a-zA-Z_-]*//; # sanitize cookie |
595 |
} |
602 |
} |
596 |
|
603 |
|
597 |
# HTTP_ACCEPT_LANGUAGE |
604 |
# HTTP_ACCEPT_LANGUAGE |
Lines 601-616
sub getlanguage {
Link Here
|
601 |
} |
608 |
} |
602 |
|
609 |
|
603 |
# Ignore a lang not selected in sysprefs |
610 |
# Ignore a lang not selected in sysprefs |
604 |
if ( $language && any { $_ eq $language } @languages ) { |
611 |
if ( $language && not any { $_ eq $language } @languages ) { |
605 |
return $language; |
612 |
$language = undef; |
606 |
} |
613 |
} |
607 |
|
614 |
|
608 |
# Pick the first selected syspref language |
615 |
# Pick the first selected syspref language |
609 |
$language = shift @languages; |
616 |
$language = shift @languages unless $language; |
610 |
return $language if $language; |
|
|
611 |
|
617 |
|
612 |
# Fall back to English if necessary |
618 |
# Fall back to English if necessary |
613 |
return 'en'; |
619 |
$language ||= 'en'; |
|
|
620 |
|
621 |
$cache->set_in_cache( $cache_key, $language ); |
622 |
return $language; |
614 |
} |
623 |
} |
615 |
|
624 |
|
616 |
1; |
625 |
1; |