Bugfix 3176 - Browser selected languages are not use by OPAC
authorFrédéric Demians <f.demians@tamil.fr>
Thu, 30 Apr 2009 15:23:17 +0000 (17:23 +0200)
committerGalen Charlton <galen.charlton@liblime.com>
Mon, 11 May 2009 14:13:24 +0000 (09:13 -0500)
This patch uses HTTP_ACCEPT_LANGUAGE web browser variable
to select OPAC available language.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
C4/Languages.pm
C4/Output.pm

index 5795202..a082b1f 100644 (file)
@@ -443,7 +443,6 @@ sub accept_language {
     if ($clientPreferences) {
         # There should be no whitespace anways, but a cleanliness/sanity check
         $clientPreferences =~ s/\s//g;
-
         # Prepare the list of client-acceptable languages
         foreach my $tag (split(/,/, $clientPreferences)) {
             my ($language, $quality) = split(/\;/, $tag);
@@ -464,10 +463,11 @@ sub accept_language {
     my %supportedLanguages = ();
     my %secondaryLanguages = ();
     foreach my $language (@$supportedLanguages) {
-        # warn "Language supported: " . $language->{language_code};
-        $supportedLanguages{lc($language->{language_code})} = $language->{language_code};
-        if ($language->{language_code} =~ /^([^-]+)-?/) {
-            $secondaryLanguages{lc($1)} = $language->{language_code};
+        # warn "Language supported: " . $language->{language};
+        my $subtag = $language->{rfc4646_subtag};
+        $supportedLanguages{lc($subtag)} = $subtag;
+        if ( $subtag =~ /^([^-]+)-?/ ) {
+            $secondaryLanguages{lc($1)} = $subtag;
         }
     }
 
index c8404dc..36b83a2 100644 (file)
@@ -139,13 +139,10 @@ sub themelanguage {
     # Set some defaults for language and theme
     # First, check the user's preferences
     my $lang;
-       my $http_env = $ENV{HTTP_ACCEPT_LANGUAGE};
-       $http_env =~ m/(\w+-*\w*),/;
-       my $language_preference = $1;
-    my $http_accept_language = regex_lang_subtags($language_preference)->{language};
-    if ($http_accept_language) {
-        $lang = accept_language($http_accept_language,getTranslatedLanguages($interface,'prog'));
-    } 
+    my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE };
+    $lang = accept_language( $http_accept_language, 
+              getTranslatedLanguages($interface,'prog') )
+      if $http_accept_language;
     # But, if there's a cookie set, obey it
     $lang = $query->cookie('KohaOpacLanguage') if $query->cookie('KohaOpacLanguage');
     # Fall back to English