Diff for /loncom/localize/lonlocal.pm between versions 1.49 and 1.50.2.1

version 1.49, 2008/09/19 03:27:04 version 1.50.2.1, 2008/12/12 04:29:35
Line 233  sub current_language { Line 233  sub current_language {
     return 'en';      return 'en';
 }  }
   
   sub preferred_languages {
       my @languages=();
       if (($Apache::lonnet::env{'request.role.adv'}) && ($Apache::lonnet::env{'form.languages'})) {
           @languages=(@languages,split(/\s*(\,|\;|\:)\s*/,$Apache::lonnet::env{'form.languages'}));
       }
       if ($Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.languages'}) {
           @languages=(@languages,split(/\s*(\,|\;|\:)\s*/,
                    $Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.languages'}));
       }
   
       if ($Apache::lonnet::env{'environment.languages'}) {
           @languages=(@languages,
                       split(/\s*(\,|\;|\:)\s*/,$Apache::lonnet::env{'environment.languages'}));
       }
       my $browser=$ENV{'HTTP_ACCEPT_LANGUAGE'};
       if ($browser) {
           my @browser =
               map { (split(/\s*;\s*/,$_))[0] } (split(/\s*,\s*/,$browser));
           push(@languages,@browser);
       }
   
       foreach my $domtype ($Apache::lonnet::env{'user.domain'},$Apache::lonnet::env{'request.role.domain'},
                            $Apache::lonnet::perlvar{'lonDefDomain'}) {
           if ($domtype ne '') {
               my %domdefs = &Apache::lonnet::get_domain_defaults($domtype);
               if ($domdefs{'lang_def'} ne '') {
                   push(@languages,$domdefs{'lang_def'});
               }
           }
       }
       return &get_genlanguages(@languages);
   }
   
   sub get_genlanguages {
       my (@languages) = @_;
   # turn "en-ca" into "en-ca,en"
       my @genlanguages;
       foreach my $lang (@languages) {
           unless ($lang=~/\w/) { next; }
           push(@genlanguages,$lang);
           if ($lang=~/(\-|\_)/) {
               push(@genlanguages,(split(/(\-|\_)/,$lang))[0]);
           }
       }
       #uniqueify the languages list
       my %count;
       @genlanguages = map { $count{$_}++ == 0 ? $_ : () } @genlanguages;
       return @genlanguages;
   }
   
 # ============================================================== What encoding?  # ============================================================== What encoding?
   
 sub current_encoding {  sub current_encoding {
Line 279  sub get_language_handle { Line 329  sub get_language_handle {
  my $headers=$r->headers_in;   my $headers=$r->headers_in;
  $ENV{'HTTP_ACCEPT_LANGUAGE'}=$headers->{'Accept-language'};   $ENV{'HTTP_ACCEPT_LANGUAGE'}=$headers->{'Accept-language'};
     }      }
     my @languages=&Apache::loncommon::preferred_languages;      my @languages=&preferred_languages();
     $ENV{'HTTP_ACCEPT_LANGUAGE'}='';      $ENV{'HTTP_ACCEPT_LANGUAGE'}='';
     $lh=Apache::localize->get_handle(@languages);      $lh=Apache::localize->get_handle(@languages);
     if ($r) {      if ($r) {
Line 301  sub gettimezone { Line 351  sub gettimezone {
                 $timezone = $domdefaults{'timezone_def'};                  $timezone = $domdefaults{'timezone_def'};
             }              }
         }          }
       } elsif ($Apache::lonnet::env{'request.role.domain'} ne '') {
           my %uroledomdefs = 
               &Apache::lonnet::get_domain_defaults($Apache::lonnet::env{'request.role.domain'});
           if ($uroledomdefs{'timezone_def'} ne '') {
               $timezone = $uroledomdefs{'timezone_def'};
           }
       } elsif ($Apache::lonnet::env{'user.domain'} ne '') {
           my %udomdefaults = 
               &Apache::lonnet::get_domain_defaults($Apache::lonnet::env{'user.domain'});
           if ($udomdefaults{'timezone_def'} ne '') {
               $timezone = $udomdefaults{'timezone_def'};
           }
     }      }
     if ($timezone ne '') {      if ($timezone ne '') {
         if (DateTime::TimeZone->is_valid_name($timezone)) {          if (DateTime::TimeZone->is_valid_name($timezone)) {

Removed from v.1.49  
changed lines
  Added in v.1.50.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>