[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonmsg.pm /localize lonlocal.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Sat, 13 Sep 2008 02:37:32 -0000
raeburn Fri Sep 12 22:37:32 2008 EDT
Modified files:
/loncom/interface lonmsg.pm loncommon.pm
/loncom/localize lonlocal.pm
Log:
- Bug 5786. Language used for text wrapped around body of message in notification e-mail should correspond to language preference of recipient determined in order: user pref, domain default), unless message is sent in course content, and a language is defined for course (use course langage in this case).
lonmsg.pm - &user_lang() used to get a language hadler for recipient.
- Translation of text uses &mt_user() instead of &mt().
lonlocal.pm - &mt_user() added (exported). Calls maketext, but takes language handler as firrst arg.
loncommon.pm - &get_genlanguages() added - functionality to turn en-ca into en-ca,en and also to remove duplicates from @preferred_languages - moved from &preferred_languages() to a separate subroutine so it is more widely available.
Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.212 loncom/interface/lonmsg.pm:1.213
--- loncom/interface/lonmsg.pm:1.212 Fri Jun 6 01:24:28 2008
+++ loncom/interface/lonmsg.pm Fri Sep 12 22:37:26 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.212 2008/06/06 05:24:28 raeburn Exp $
+# $Id: lonmsg.pm,v 1.213 2008/09/13 02:37:26 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -279,7 +279,7 @@
sub sendemail {
- my ($to,$subject,$body)=@_;
+ my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;
my %senderemails=&Apache::loncommon::getemails();
my $senderaddress='';
foreach my $type ('notification','permanentemail','critnotification') {
@@ -288,9 +288,9 @@
}
}
$body=
- "*** ".&mt('This is an automatic message generated by the LON-CAPA system.')."\n".
- "*** ".($senderaddress?&mt('You can reply to this message'):&mt('Please do not reply to this address.')."\n*** ".
- &mt('A reply will not be received by the recipient!'))."\n\n".$body;
+ "*** ".&mt_user($user_lh,'This is an automatic message generated by the LON-CAPA system.')."\n".
+ "*** ".($senderaddress?&mt_user($user_lh,'You can reply to this message'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ".
+ &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
my $msg = new Mail::Send;
$msg->to($to);
$msg->subject('[LON-CAPA] '.$subject);
@@ -319,8 +319,9 @@
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid);
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend);
+ my $user_lh = &user_lang($touname,$toudom,$fromcid);
if ($fromcid ne '') {
- $coursetext = "\n".&mt('Course').': ';
+ $coursetext = "\n".&mt_user($user_lh,'Course').': ';
if ($env{'course.'.$fromcid.'.description'} ne '') {
$coursetext .= $env{'course.'.$fromcid.'.description'};
} else {
@@ -333,24 +334,25 @@
}
my @recipients = split(/,/,$to);
$bodybegin = $coursetext.
- &mt('You received a'.$critical.' message from [_1] in LON-CAPA.',$sender).' ';
- $bodysubj = &mt('The subject is
+ &mt_user($user_lh,
+ 'You received a'.$critical.' message from [_1] in LON-CAPA.',$sender).' ';
+ $bodysubj = &mt_user($user_lh,'The subject is
[_1]
',$subj)."\n".
-'=== '.&mt('Excerpt')." ============================================================
+'=== '.&mt_user($user_lh,'Excerpt')." ============================================================
";
$bodyend = "
========================================================================
-".&mt('Use
+".&mt_user($user_lh,'Use
[_1]
to access the full message.',$url);
my %userenv = &Apache::lonnet::get('environment',['notifywithhtml'],$toudom,$touname);
- my $subject = &mt("'New' $critical message from ").$sender;
+ my $subject = &mt_user($user_lh,"'New' $critical message from ").$sender;
my ($blocked,$blocktext);
if (!$crit) {
@@ -361,7 +363,7 @@
$blocked = 1;
my $showstart = &Apache::lonlocal::locallocaltime($startblock);
my $showend = &Apache::lonlocal::locallocaltime($endblock);
- $blocktext = &mt('LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend);
+ $blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend);
}
}
if ($userenv{'notifywithhtml'} ne '') {
@@ -376,7 +378,7 @@
}
$body = $bodybegin.$bodysubj.$sendtext.$bodyend;
}
- &sendemail($addr,$subject,$body);
+ &sendemail($addr,$subject,$body,$touname,$toudom,$user_lh);
}
} else {
if ($blocked) {
@@ -385,7 +387,7 @@
$text =~ s/\<\/*[^\>]+\>//gs;
$body = $bodybegin.$bodysubj.$text.$bodyend;
}
- &sendemail($to,$subject,$body);
+ &sendemail($to,$subject,$body,$touname,$toudom,$user_lh);
}
}
# ============================================================= Check for email
@@ -922,6 +924,28 @@
return ($typestyle,%to);
}
+sub user_lang {
+ my ($touname,$toudom,$fromcid) = @_;
+ my @userlangs;
+ if (($fromcid ne '') && ($env{'course.'.$fromcid.'.languages'} ne '')) {
+ @userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/,
+ $env{'course.'.$fromcid.'.languages'}));
+ } else {
+ my %langhash = &Apache::lonnet::get('environment',['languages'],$toudom,$touname);
+ if ($langhash{'languages'} ne '') {
+ @userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'});
+ } else {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($toudom);
+ if ($domdefs{'lang_def'} ne '') {
+ @userlangs = ($domdefs{'lang_def'});
+ }
+ }
+ }
+ my @languages=&Apache::loncommon::get_genlanguages(@userlangs);
+ my $user_lh = Apache::localize->get_handle(@languages);
+ return $user_lh;
+}
+
=pod
=back
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.685 loncom/interface/loncommon.pm:1.686
--- loncom/interface/loncommon.pm:1.685 Thu Sep 11 17:05:19 2008
+++ loncom/interface/loncommon.pm Fri Sep 12 22:37:26 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.685 2008/09/11 21:05:19 tempelho Exp $
+# $Id: loncommon.pm,v 1.686 2008/09/13 02:37:26 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2988,14 +2988,19 @@
}
}
}
+ 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]);
- }
+ unless ($lang=~/\w/) { next; }
+ push(@genlanguages,$lang);
+ if ($lang=~/(\-|\_)/) {
+ push(@genlanguages,(split(/(\-|\_)/,$lang))[0]);
+ }
}
#uniqueify the languages list
my %count;
Index: loncom/localize/lonlocal.pm
diff -u loncom/localize/lonlocal.pm:1.47 loncom/localize/lonlocal.pm:1.48
--- loncom/localize/lonlocal.pm:1.47 Wed Jul 2 17:31:32 2008
+++ loncom/localize/lonlocal.pm Fri Sep 12 22:37:29 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Localization routines
#
-# $Id: lonlocal.pm,v 1.47 2008/07/02 21:31:32 raeburn Exp $
+# $Id: lonlocal.pm,v 1.48 2008/09/13 02:37:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -170,7 +170,7 @@
require Exporter;
our @ISA = qw (Exporter);
-our @EXPORT = qw(mt mtn ns);
+our @EXPORT = qw(mt mtn ns mt_user);
# ========================================================= The language handle
@@ -201,6 +201,27 @@
}
}
+sub mt_user {
+ my ($user_lh,@what) = @_;
+ if ($user_lh) {
+ if ($what[0] eq '') {
+ if (wantarray) {
+ return @what;
+ } else {
+ return $what[0];
+ }
+ } else {
+ return $user_lh->maketext(@what);
+ }
+ } else {
+ if (wantarray) {
+ return @what;
+ } else {
+ return $what[0];
+ }
+ }
+}
+
# ============================================================== What language?
sub current_language {