version 1.23, 2003/10/10 16:56:16
|
version 1.40, 2006/06/27 14:20:55
|
Line 162 package Apache::lonlocal;
|
Line 162 package Apache::lonlocal;
|
|
|
use strict; |
use strict; |
use Apache::localize; |
use Apache::localize; |
use Apache::File; |
|
use locale; |
use locale; |
use POSIX qw(locale_h); |
use POSIX qw(locale_h strftime); |
|
|
require Exporter; |
require Exporter; |
|
|
our @ISA = qw (Exporter); |
our @ISA = qw (Exporter); |
our @EXPORT = qw(mt mtn ns); |
our @EXPORT = qw(mt mtn ns); |
|
|
my $reroute; |
|
|
|
# ========================================================= The language handle |
# ========================================================= The language handle |
|
|
use vars qw($lh); |
use vars qw($lh); |
Line 180 use vars qw($lh);
|
Line 177 use vars qw($lh);
|
# ===================================================== The "MakeText" function |
# ===================================================== The "MakeText" function |
|
|
sub mt (@) { |
sub mt (@) { |
# my $fh=Apache::File->new('>>/home/www/loncapa/loncom/localize/localize/newphrases.txt'); |
# open(LOG,'>>/home/www/loncapa/loncom/localize/localize/newphrases.txt'); |
# print $fh join('',@_)."\n"; |
# print LOG (@_[0]."\n"); |
# $fh->close(); |
# close(LOG); |
unless ($ENV{'environment.translator'}) { |
if ($lh) { |
if ($lh) { |
return $lh->maketext(@_); |
return $lh->maketext(@_); |
|
} else { |
|
return @_; |
|
} |
|
} else { |
} else { |
if ($lh) { |
if (wantarray) { |
my $trans=$lh->maketext(@_); |
|
my $link='<a target="trans" href="/cgi-bin/translator.pl?arg1='. |
|
&Apache::lonnet::escape($_[0]).'&arg2='. |
|
&Apache::lonnet::escape($_[1]).'&arg3='. |
|
&Apache::lonnet::escape($_[2]).'&lang='. |
|
$ENV{'environment.translator'}. |
|
'">[['.$trans.']]</a>'; |
|
if ($ENV{'transreroute'}) { |
|
$reroute.=$link; |
|
return $trans; |
|
} else { |
|
return $link; |
|
} |
|
} else { |
|
return @_; |
return @_; |
|
} else { |
|
return $_[0]; |
} |
} |
} |
} |
} |
} |
Line 223 sub current_language {
|
Line 204 sub current_language {
|
# ============================================================== What encoding? |
# ============================================================== What encoding? |
|
|
sub current_encoding { |
sub current_encoding { |
|
my $default='UTF-8'; |
|
if ($Apache::lonnet::env{'browser.os'} eq 'win' && |
|
$Apache::lonnet::env{'browser.type'} eq 'explorer') { |
|
$default='ISO-8859-1'; |
|
} |
if ($lh) { |
if ($lh) { |
my $enc=$lh->maketext('char_encoding'); |
my $enc=$lh->maketext('char_encoding'); |
return ($enc eq 'char_encoding'?'':$enc); |
return ($enc eq 'char_encoding'?$default:$enc); |
} else { |
} else { |
return undef; |
return $default; |
} |
} |
} |
} |
|
|
Line 252 sub texthash {
|
Line 238 sub texthash {
|
} |
} |
return %hash; |
return %hash; |
} |
} |
# ======================================================== Re-route translation |
|
|
|
sub clearreroutetrans { |
|
&reroutetrans(); |
|
$reroute=''; |
|
} |
|
|
|
# ======================================================== Re-route translation |
|
|
|
sub reroutetrans { |
|
$ENV{'transreroute'}=1; |
|
} |
|
|
|
# ==================================================== End re-route translation |
|
sub endreroutetrans { |
|
$ENV{'transreroute'}=0; |
|
if ($ENV{'environment.translator'}) { |
|
return $reroute; |
|
} else { |
|
return ''; |
|
} |
|
} |
|
|
|
# ========= Get a handle (do not invoke in vain, leave this to access handlers) |
# ========= Get a handle (do not invoke in vain, leave this to access handlers) |
|
|
sub get_language_handle { |
sub get_language_handle { |
my $r=shift; |
my $r=shift; |
$lh=Apache::localize->get_handle(&Apache::loncommon::preferred_languages); |
if ($r) { |
if (&Apache::lonnet::mod_perl_version == 1) { |
my $headers=$r->headers_in; |
|
$ENV{'HTTP_ACCEPT_LANGUAGE'}=$headers->{'Accept-language'}; |
|
} |
|
my @languages=&Apache::loncommon::preferred_languages; |
|
$ENV{'HTTP_ACCEPT_LANGUAGE'}=''; |
|
$lh=Apache::localize->get_handle(@languages); |
|
if ($r) { |
$r->content_languages([¤t_language()]); |
$r->content_languages([¤t_language()]); |
} |
} |
### setlocale(LC_ALL,¤t_locale); |
### setlocale(LC_ALL,¤t_locale); |
} |
} |
|
|
# ========================================================== Localize localtime |
# ========================================================== Localize localtime |
|
sub gettimezone { |
|
my ($time) = @_; |
|
return ' ('.&strftime("%Z",localtime($time)).')'; |
|
} |
|
|
sub locallocaltime { |
sub locallocaltime { |
my $thistime=shift; |
my $thistime=shift; |
|
if (!defined($thistime) || $thistime eq '') { |
|
return &mt('Never'); |
|
} |
if ((¤t_language=~/^en/) || (!$lh)) { |
if ((¤t_language=~/^en/) || (!$lh)) { |
return ''.localtime($thistime); |
return ''.localtime($thistime).&gettimezone($thistime); |
} else { |
} else { |
my $format=$lh->maketext('date_locale'); |
my $format=$lh->maketext('date_locale'); |
if ($format eq 'date_locale') { |
if ($format eq 'date_locale') { |
Line 321 sub locallocaltime {
|
Line 298 sub locallocaltime {
|
'month','weekday','ampm') { |
'month','weekday','ampm') { |
$format=~s/\$$_/eval('$'.$_)/gse; |
$format=~s/\$$_/eval('$'.$_)/gse; |
} |
} |
return $format; |
return $format.&gettimezone($thistime); |
} |
} |
} |
} |
|
|
Line 361 sub mtn (@) {
|
Line 338 sub mtn (@) {
|
} |
} |
} |
} |
|
|
|
# ---------------------------------------------------- Replace MT{...} in files |
|
|
|
sub transstatic { |
|
my $strptr=shift; |
|
$$strptr=~s/MT\{([^\}]*)\}/&mt($1)/gse; |
|
} |
|
|
1; |
1; |
|
|
__END__ |
__END__ |