--- loncom/interface/loncommon.pm	2003/09/16 19:23:47	1.117
+++ loncom/interface/loncommon.pm	2003/09/21 20:06:36	1.123
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.117 2003/09/16 19:23:47 www Exp $
+# $Id: loncommon.pm,v 1.123 2003/09/21 20:06:36 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -348,11 +348,11 @@ sub selectstudent_link {
 	   return '';
        }
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.
-        '","'.$udomele.'");'."'>Select User</a>";
+        '","'.$udomele.'");'."'>".&mt('Select User')."</a>";
    }
    if ($ENV{'request.role'}=~/^(au|dc|su)/) {
        return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele.
-        '","'.$udomele.'",1);'."'>Select User</a>";
+        '","'.$udomele.'",1);'."'>".&mt('Select User')."</a>";
    }
    return '';
 }
@@ -384,7 +384,7 @@ ENDSTDBRW
 sub selectcourse_link {
    my ($form,$unameele,$udomele)=@_;
     return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele.
-        '","'.$udomele.'");'."'>Select Course</a>";
+        '","'.$udomele.'");'."'>".&mt('Select Course')."</a>";
 }
 
 =pod
@@ -516,7 +516,7 @@ END
     foreach my $value (sort(keys(%$hashref))) {
         $result.="    <option value=\"$value\" ";
         $result.=" selected=\"true\" " if ($value eq $firstdefault);
-        $result.=">$hashref->{$value}->{'text'}</option>\n";
+        $result.=">".&mt($hashref->{$value}->{'text'})."</option>\n";
     }
     $result .= "</select>\n";
     my %select2 = %{$hashref->{$firstdefault}->{'select2'}};
@@ -526,7 +526,7 @@ END
     foreach my $value (sort(keys(%select2))) {
         $result.="    <option value=\"$value\" ";        
         $result.=" selected=\"true\" " if ($value eq $seconddefault);
-        $result.=">$select2{$value}</option>\n";
+        $result.=">".&mt($select2{$value})."</option>\n";
     }
     $result .= "</select>\n";
     #    return $debug;
@@ -767,7 +767,7 @@ sub select_form {
     foreach (sort keys %hash) {
         $selectform.="<option value=\"$_\" ".
             ($_ eq $def ? 'selected' : '').
-                ">".$hash{$_}."</option>\n";
+                ">".&mt($hash{$_})."</option>\n";
     }
     $selectform.="</select>";
     return $selectform;
@@ -1613,16 +1613,8 @@ sub fileextensions {
 
 sub display_languages {
     my %languages=();
-    if ($ENV{'environment.languages'}) {
-	foreach (split(/\s*(\,|\;|\:)\s*/,$ENV{'environment.languages'})) {
-	    $languages{$_}=1;
-        }
-    }
-    if ($ENV{'course.'.$ENV{'request.course.id'}.'.languages'}) {
-	foreach (split(/\s*(\,|\;|\:)\s*/,
-	$ENV{'course.'.$ENV{'request.course.id'}.'.languages'})) {
-	    $languages{$_}=1;
-        }
+    foreach (&preferred_languages()) {
+	$languages{$_}=1;
     }
     &get_unprocessed_cgi($ENV{'QUERY_STRING'},['displaylanguage']);
     if ($ENV{'form.displaylanguage'}) {
@@ -1642,7 +1634,34 @@ sub preferred_languages {
 	@languages=(@languages,split(/\s*(\,|\;|\:)\s*/,
 	         $ENV{'course.'.$ENV{'request.course.id'}.'.languages'}));
     }
-    return (@languages,'en-US');
+    my $browser=(split(/\;/,$ENV{'HTTP_ACCEPT_LANGUAGE'}))[0];
+    if ($browser) {
+	@languages=(@languages,split(/\s*(\,|\;|\:)\s*/,$browser));
+    }
+    if ($Apache::lonnet::domain_lang_def{$ENV{'user.domain'}}) {
+	@languages=(@languages,
+		$Apache::lonnet::domain_lang_def{$ENV{'user.domain'}});
+    }
+    if ($Apache::lonnet::domain_lang_def{$ENV{'request.role.domain'}}) {
+	@languages=(@languages,
+		$Apache::lonnet::domain_lang_def{$ENV{'request.role.domain'}});
+    }
+    if ($Apache::lonnet::domain_lang_def{
+	                          $Apache::lonnet::perlvar{'lonDefDomain'}}) {
+	@languages=(@languages,
+		$Apache::lonnet::domain_lang_def{
+                                  $Apache::lonnet::perlvar{'lonDefDomain'}});
+    }
+# turn "en-ca" into "en-ca,en"
+    my @genlanguages;
+    foreach (@languages) {
+	unless ($_=~/\w/) { next; }
+	push (@genlanguages,$_);
+	if ($_=~/(\-|\_)/) {
+	    push (@genlanguages,(split(/(\-|\_)/,$_))[0]);
+	}
+    }
+    return @genlanguages;
 }
 
 ###############################################################
@@ -2302,6 +2321,14 @@ sub no_cache {
   #$r->header_out("Expires" => $date);
 }
 
+sub content_type {
+  my ($r,$type,$charset) = @_;
+  unless ($charset) {
+      $charset=&Apache::lonlocal::current_encoding;
+  }
+  $r->content_type($type.($charset?'; charset='.$charset:''));
+}
+
 =pod
 
 =item * add_to_env($name,$value)