|
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; |