version 1.10, 2003/09/22 18:16:43
|
version 1.22, 2003/10/08 18:21:38
|
Line 144 like this:
|
Line 144 like this:
|
'No purchase necessary. Illegal where not allowed.' |
'No purchase necessary. Illegal where not allowed.' |
=> 'Es ist erlaubt, einfach zu verlieren, und das ist Ihre Schuld.' |
=> 'Es ist erlaubt, einfach zu verlieren, und das ist Ihre Schuld.' |
|
|
The German translation lexicon is in pretty okay shape, but not |
|
complete yet. Portuguese currently only covers the login screen. |
|
Russian is purely experimental. Looks like UTF-8 is the way to encode |
|
this, at least for latin/greek-based languages, but we still have to |
|
learn a lot. |
|
|
|
Comments may be added with the # symbol, which outside of a string |
Comments may be added with the # symbol, which outside of a string |
(the things with the apostrophe surrounding them, which are the |
(the things with the apostrophe surrounding them, which are the |
Line 168 package Apache::lonlocal;
|
Line 163 package Apache::lonlocal;
|
use strict; |
use strict; |
use Apache::localize; |
use Apache::localize; |
use Apache::File; |
use Apache::File; |
|
use locale; |
|
use POSIX qw(locale_h); |
|
|
require Exporter; |
require Exporter; |
|
|
our @ISA = qw (Exporter); |
our @ISA = qw (Exporter); |
our @EXPORT = qw(mt); |
our @EXPORT = qw(mt mtn ns); |
|
|
my $reroute; |
my $reroute; |
|
|
Line 184 use vars qw($lh);
|
Line 181 use vars qw($lh);
|
|
|
sub mt (@) { |
sub mt (@) { |
unless ($ENV{'environment.translator'}) { |
unless ($ENV{'environment.translator'}) { |
return $lh->maketext(@_); |
if ($lh) { |
|
return $lh->maketext(@_); |
|
} else { |
|
return @_; |
|
} |
} else { |
} else { |
my $trans=$lh->maketext(@_); |
if ($lh) { |
my $link='<a target="trans" href="/cgi-bin/translator.pl?arg1='. |
my $trans=$lh->maketext(@_); |
&Apache::lonnet::escape($_[0]).'&arg2='. |
my $link='<a target="trans" href="/cgi-bin/translator.pl?arg1='. |
&Apache::lonnet::escape($_[1]).'&arg3='. |
&Apache::lonnet::escape($_[0]).'&arg2='. |
&Apache::lonnet::escape($_[2]).'&lang='. |
&Apache::lonnet::escape($_[1]).'&arg3='. |
$ENV{'environment.translator'}. |
&Apache::lonnet::escape($_[2]).'&lang='. |
'">[['.$trans.']]</a>'; |
$ENV{'environment.translator'}. |
if ($ENV{'transreroute'}) { |
'">[['.$trans.']]</a>'; |
$reroute.=$link; |
if ($ENV{'transreroute'}) { |
return $trans; |
$reroute.=$link; |
|
return $trans; |
|
} else { |
|
return $link; |
|
} |
} else { |
} else { |
return $link; |
return @_; |
} |
} |
} |
} |
} |
} |
Line 205 sub mt (@) {
|
Line 210 sub mt (@) {
|
# ============================================================== What language? |
# ============================================================== What language? |
|
|
sub current_language { |
sub current_language { |
return $lh->language_tag(); |
if ($lh) { |
|
my $lang=$lh->maketext('language_code'); |
|
return ($lang eq 'language_code'?'en':$lang); |
|
} |
|
return 'en'; |
} |
} |
|
|
# ============================================================== What encoding? |
# ============================================================== What encoding? |
|
|
sub current_encoding { |
sub current_encoding { |
my $enc=$lh->maketext('char_encoding'); |
if ($lh) { |
return ($enc eq 'char_encoding'?'':$enc); |
my $enc=$lh->maketext('char_encoding'); |
|
return ($enc eq 'char_encoding'?'':$enc); |
|
} else { |
|
return undef; |
|
} |
|
} |
|
|
|
# =============================================================== Which locale? |
|
# Refer to locale -a |
|
# |
|
sub current_locale { |
|
if ($lh) { |
|
my $enc=$lh->maketext('lang_locale'); |
|
return ($enc eq 'lang_locale'?'':$enc); |
|
} else { |
|
return undef; |
|
} |
} |
} |
|
|
# ============================================================== Translate hash |
# ============================================================== Translate hash |
Line 252 sub endreroutetrans {
|
Line 277 sub endreroutetrans {
|
sub get_language_handle { |
sub get_language_handle { |
my $r=shift; |
my $r=shift; |
$lh=Apache::localize->get_handle(&Apache::loncommon::preferred_languages); |
$lh=Apache::localize->get_handle(&Apache::loncommon::preferred_languages); |
$r->content_languages(["¤t_language()"]); |
if (&Apache::lonnet::mod_perl_version == 1) { |
my $enc=¤t_encoding(); |
$r->content_languages([¤t_language()]); |
if ($enc) { |
} |
|
### setlocale(LC_ALL,¤t_locale); |
|
} |
|
|
|
# ========================================================== Localize localtime |
|
|
|
sub locallocaltime { |
|
my $thistime=shift; |
|
if ((¤t_language=~/^en/) || (!$lh)) { |
|
return ''.localtime($thistime); |
|
} else { |
|
my $format=$lh->maketext('date_locale'); |
|
if ($format eq 'date_locale') { |
|
return ''.localtime($thistime); |
|
} |
|
my ($seconds,$minutes,$twentyfour,$day,$mon,$year,$wday,$yday,$isdst)= |
|
localtime($thistime); |
|
my $month=(split(/\,/,$lh->maketext('date_months')))[$mon]; |
|
my $weekday=(split(/\,/,$lh->maketext('date_days')))[$wday]; |
|
if ($seconds<10) { |
|
$seconds='0'.$seconds; |
|
} |
|
if ($minutes<10) { |
|
$minutes='0'.$minutes; |
|
} |
|
$year+=1900; |
|
my $twelve=$twentyfour; |
|
my $ampm; |
|
if ($twelve>12) { |
|
$twelve-=12; |
|
$ampm=$lh->maketext('date_pm'); |
|
} else { |
|
$ampm=$lh->maketext('date_am'); |
|
} |
|
foreach |
|
('seconds','minutes','twentyfour','twelve','day','year', |
|
'month','weekday','ampm') { |
|
$format=~s/\$$_/eval('$'.$_)/gse; |
|
} |
|
return $format; |
|
} |
|
} |
|
|
|
# ==================== Normalize string (reduce fragility in the lexicon files) |
|
|
|
# This normalizes a string to reduce fragility in the lexicon files of |
|
# huge messages (such as are used by the helper), and allow useful |
|
# formatting: reduce all consecutive whitespace to a single space, |
|
# and remove all HTML |
|
sub normalize_string { |
|
my $s = shift; |
|
$s =~ s/\s+/ /g; |
|
$s =~ s/<[^>]+>//g; |
|
# Pop off beginning or ending spaces, which aren't good |
|
$s =~ s/^\s+//; |
|
$s =~ s/\s+$//; |
|
return $s; |
|
} |
|
|
|
# alias for normalize_string; recommend using it only in the lexicon |
|
sub ns { |
|
return normalize_string(@_); |
|
} |
|
|
|
# mtn: call the mt function and the normalization function easily. |
|
# Returns original non-normalized string if there was no translation |
|
sub mtn (@) { |
|
my @args = @_; # don't want to modify caller's string; if we |
|
# didn't care about that we could set $_[0] |
|
# directly |
|
$args[0] = normalize_string($args[0]); |
|
my $translation = &mt(@args); |
|
if ($translation ne $args[0]) { |
|
return $translation; |
|
} else { |
|
return $_[0]; |
} |
} |
} |
} |
|
|