--- loncom/localize/lonlocal.pm 2011/03/28 21:10:41 1.62 +++ loncom/localize/lonlocal.pm 2019/02/24 01:38:14 1.67 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Localization routines # -# $Id: lonlocal.pm,v 1.62 2011/03/28 21:10:41 raeburn Exp $ +# $Id: lonlocal.pm,v 1.67 2019/02/24 01:38:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,7 +38,7 @@ Apache::lonlocal - provides localization lonlocal provides localization services for LON-CAPA programmers based on Locale::Maketext. See -C +C for more information on Maketext. =head1 OVERVIEWX @@ -81,7 +81,7 @@ Inside might be something like this if ($status eq 'WON') { $message='You have won.'; } elsif ($status eq 'LOST') { - $message='You are a total looser.'; + $message='You are a total loser.'; } return $message; } @@ -103,7 +103,7 @@ The first two examples are easy: if ($status eq 'WON') { $message='You have won.'; } elsif ($status eq 'LOST') { - $message='You are a total looser.'; + $message='You are a total loser.'; } return &mt($message); } @@ -135,7 +135,7 @@ like this: 'You have won.' => 'Sie haben gewonnen.', - 'You are a total looser.' + 'You are a total loser.' => 'Sie sind der totale Verlierer.', 'Rules' @@ -153,7 +153,7 @@ ignore the rest of the line. This is a relatively easy task, and any help is appreciated. Maketext can do a whole lot more, see -C +C but for most purposes, we do not have to mess with that. =cut @@ -171,7 +171,7 @@ use DateTime::Locale; require Exporter; our @ISA = qw (Exporter); -our @EXPORT = qw(mt mtn ns mt_user); +our @EXPORT = qw(mt mtn ns mt_user js_escape html_escape); my %mtcache=(); @@ -264,7 +264,7 @@ sub preferred_languages { my $defdom = &Apache::lonnet::default_login_domain(); foreach my $domtype ($Apache::lonnet::env{'user.domain'},$Apache::lonnet::env{'request.role.domain'},$defdom) { - if ($domtype ne '') { + if (($domtype ne '') && ($domtype ne 'public')) { my %domdefs = &Apache::lonnet::get_domain_defaults($domtype); if ($domdefs{'lang_def'} ne '') { push(@languages,$domdefs{'lang_def'}); @@ -325,7 +325,7 @@ sub current_locale { sub texthash { my %hash=@_; - foreach (keys %hash) { + foreach (keys(%hash)) { $hash{$_}=&mt($hash{$_}); } return %hash; @@ -382,7 +382,8 @@ sub gettimezone { if ($uroledomdefs{'timezone_def'} ne '') { $timezone = $uroledomdefs{'timezone_def'}; } - } elsif ($Apache::lonnet::env{'user.domain'} ne '') { + } elsif (($Apache::lonnet::env{'user.domain'} ne '') && + ($Apache::lonnet::env{'user.domain'} ne 'public')) { my %udomdefaults = &Apache::lonnet::get_domain_defaults($Apache::lonnet::env{'user.domain'}); if ($udomdefaults{'timezone_def'} ne '') { @@ -495,9 +496,11 @@ sub getdatelocale { return $locale_obj; } -=pod +=pod + +=over -=item * normalize_string +=item * normalize_string() Normalize string (reduce fragility in the lexicon files) @@ -520,7 +523,7 @@ sub normalize_string { =pod -=item * ns +=item * ns() alias for normalize_string; recommend using it only in the lexicon @@ -532,7 +535,7 @@ sub ns { =pod -=item * mtn +=item * mtn() mtn: call the mt function and the normalization function easily. Returns original non-normalized string if there was no translation @@ -561,7 +564,7 @@ sub transstatic { =pod -=item * mt_escape +=item * mt_escape() mt_escape takes a string reference and escape the [] in there so mt will leave them as is and not try to expand them @@ -574,13 +577,88 @@ sub mt_escape { $$str_ref =~s/([\[\]])/~$1/g; } +=pod + +=item * js_escape() + +js_escape takes a string, string reference or hash reference, +and escapes the values so that they can be used within a