Lines 282-288
sub themelanguage {
Link Here
|
282 |
($query) or warn "no query in themelanguage"; |
282 |
($query) or warn "no query in themelanguage"; |
283 |
|
283 |
|
284 |
# Select a language based on cookie, syspref available languages & browser |
284 |
# Select a language based on cookie, syspref available languages & browser |
285 |
my $lang = getlanguage($query, $interface); |
285 |
my $lang = C4::Languages::getlanguage($query); |
286 |
|
286 |
|
287 |
# Select theme |
287 |
# Select theme |
288 |
my $is_intranet = $interface eq 'intranet'; |
288 |
my $is_intranet = $interface eq 'intranet'; |
Lines 304-309
sub themelanguage {
Link Here
|
304 |
|
304 |
|
305 |
sub setlanguagecookie { |
305 |
sub setlanguagecookie { |
306 |
my ( $query, $language, $uri ) = @_; |
306 |
my ( $query, $language, $uri ) = @_; |
|
|
307 |
|
307 |
my $cookie = $query->cookie( |
308 |
my $cookie = $query->cookie( |
308 |
-name => 'KohaOpacLanguage', |
309 |
-name => 'KohaOpacLanguage', |
309 |
-value => $language, |
310 |
-value => $language, |
Lines 336-387
sub getlanguagecookie {
Link Here
|
336 |
return $cookie; |
337 |
return $cookie; |
337 |
} |
338 |
} |
338 |
|
339 |
|
339 |
=head2 getlanguage |
|
|
340 |
|
341 |
Select a language based on the URL parameter 'language', a cookie, |
342 |
syspref available languages & browser |
343 |
|
344 |
=cut |
345 |
|
346 |
sub getlanguage { |
347 |
my ($query, $interface) = @_; |
348 |
|
349 |
my $preference_to_check = |
350 |
$interface eq 'intranet' ? 'language' : 'opaclanguages'; |
351 |
# Get the available/valid languages list |
352 |
my @languages = split /,/, C4::Context->preference($preference_to_check); |
353 |
|
354 |
my $lang; |
355 |
|
356 |
# Chose language from the URL |
357 |
$lang = $query->param( 'language' ); |
358 |
if ( defined $lang && any { $_ eq $lang } @languages) { |
359 |
return $lang; |
360 |
} |
361 |
|
362 |
# cookie |
363 |
if ($query and $query->cookie('KohaOpacLanguage') ) { |
364 |
$lang = $query->cookie('KohaOpacLanguage'); |
365 |
$lang =~ s/[^a-zA-Z_-]*//; # sanitize cookie |
366 |
} |
367 |
|
368 |
# HTTP_ACCEPT_LANGUAGE |
369 |
if ( !$lang && $ENV{HTTP_ACCEPT_LANGUAGE} ) { |
370 |
$lang = accept_language( $ENV{HTTP_ACCEPT_LANGUAGE}, |
371 |
getTranslatedLanguages( $interface, 'prog' ) ); |
372 |
} |
373 |
|
374 |
# Ignore a lang not selected in sysprefs |
375 |
if ( $lang && any { $_ eq $lang } @languages ) { |
376 |
return $lang; |
377 |
} |
378 |
|
379 |
# Pick the first selected syspref language |
380 |
$lang = shift @languages; |
381 |
return $lang if $lang; |
382 |
|
383 |
# Fall back to English if necessary |
384 |
return 'en'; |
385 |
} |
386 |
|
387 |
1; |
340 |
1; |