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