utf8::encode($hashref->{$key}) if utf8::is_utf8($hashref->{$key});
}
}
-
-
-# FIXME - this is a horrible hack to cache
-# the current known-good language, temporarily
-# put in place to resolve bug 4403. It is
-# used only by C4::XSLT::XSLTParse4Display;
-# the language is set via the usual call
-# to themelanguage.
-my $_current_language = 'en';
-
-sub _current_language {
- return $_current_language;
-}
-
# wrapper method to allow easier transition from HTML template pro to Template Toolkit
sub param {
# 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';
# Try to find first theme for the selected language
for my $theme (@themes) {
if ( -e "$htdocs/$theme/$lang/modules/$tmpl" ) {
- $_current_language = $lang;
return ($theme, $lang, \@themes)
}
}
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 and $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;