# lang => $lang
# );
- # Bidirectionality
+ # Bidirectionality, must be sent even if is the only language
my $current_lang = regex_lang_subtags($lang);
my $bidi;
$bidi = get_bidi($current_lang->{script}) if $current_lang->{script};
+ $template->param(
+ bidi => $bidi,
+ );
# Languages
my $languages_loop = getTranslatedLanguages($interface,$theme,$lang);
my $num_languages_enabled = 0;
$num_languages_enabled++ if $sublang->{enabled};
}
}
+ my $one_language_enabled = ($num_languages_enabled <= 1) ? 1 : 0; # deal with zero enabled langs as well
$template->param(
languages_loop => $languages_loop,
- bidi => $bidi,
- one_language_enabled => ($num_languages_enabled <= 1) ? 1 : 0, # deal with zero enabled langs as well
- ) unless @$languages_loop<2;
+ one_language_enabled => $one_language_enabled,
+ ) unless $one_language_enabled;
return $template;
}
($query) or warn "no query in themelanguage";
# Select a language based on cookie, syspref available languages & browser
- my $lang = getlanguage($query, $interface);
+ my $lang = C4::Languages::getlanguage($query);
# Select theme
my $is_intranet = $interface eq 'intranet';
sub setlanguagecookie {
my ( $query, $language, $uri ) = @_;
+
my $cookie = $query->cookie(
-name => 'KohaOpacLanguage',
-value => $language,
return $cookie;
}
-=head2 getlanguage
-
- Select a language based on the URL parameter 'language', a cookie,
- syspref available languages & browser
-
-=cut
-
-sub getlanguage {
- my ($query, $interface) = @_;
-
- my $preference_to_check =
- $interface eq 'intranet' ? 'language' : 'opaclanguages';
- # Get the available/valid languages list
- my @languages = split /,/, C4::Context->preference($preference_to_check);
-
- my $lang;
-
- # Chose language from the URL
- $lang = $query->param( 'language' );
- if ( defined $lang && any { $_ eq $lang } @languages) {
- return $lang;
- }
-
- # cookie
- if ( $query->cookie('KohaOpacLanguage') ) {
- $lang = $query->cookie('KohaOpacLanguage');
- $lang =~ s/[^a-zA-Z_-]*//; # sanitize cookie
- }
-
- # HTTP_ACCEPT_LANGUAGE
- if ( !$lang && $ENV{HTTP_ACCEPT_LANGUAGE} ) {
- $lang = accept_language( $ENV{HTTP_ACCEPT_LANGUAGE},
- getTranslatedLanguages( $interface, 'prog' ) );
- }
-
- # Ignore a lang not selected in sysprefs
- if ( $lang && any { $_ eq $lang } @languages ) {
- return $lang;
- }
-
- # Pick the first selected syspref language
- $lang = shift @languages;
- return $lang if $lang;
-
- # Fall back to English if necessary
- return 'en';
-}
-
1;