--- loncom/localize/lonlocal.pm 2003/09/22 18:16:43 1.10 +++ loncom/localize/lonlocal.pm 2003/09/29 13:24:49 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Localization routines # -# $Id: lonlocal.pm,v 1.10 2003/09/22 18:16:43 bowersj2 Exp $ +# $Id: lonlocal.pm,v 1.16 2003/09/29 13:24:49 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -144,11 +144,6 @@ like this: 'No purchase necessary. Illegal where not allowed.' => '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 (the things with the apostrophe surrounding them, which are the @@ -168,6 +163,8 @@ package Apache::lonlocal; use strict; use Apache::localize; use Apache::File; +use locale; +use POSIX qw(locale_h); require Exporter; @@ -184,20 +181,28 @@ use vars qw($lh); sub mt (@) { unless ($ENV{'environment.translator'}) { - return $lh->maketext(@_); + if ($lh) { + return $lh->maketext(@_); + } else { + return @_; + } } else { - my $trans=$lh->maketext(@_); - my $link='[['.$trans.']]'; - if ($ENV{'transreroute'}) { - $reroute.=$link; - return $trans; + if ($lh) { + my $trans=$lh->maketext(@_); + my $link='[['.$trans.']]'; + if ($ENV{'transreroute'}) { + $reroute.=$link; + return $trans; + } else { + return $link; + } } else { - return $link; + return @_; } } } @@ -205,14 +210,31 @@ sub mt (@) { # ============================================================== What language? sub current_language { - return $lh->language_tag(); + my $lang=$lh->maketext('language_code'); + return ($lang eq 'language_code'?'en':$lang); } # ============================================================== What encoding? sub current_encoding { - my $enc=$lh->maketext('char_encoding'); - return ($enc eq 'char_encoding'?'':$enc); + if ($lh) { + 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 @@ -252,11 +274,10 @@ sub endreroutetrans { sub get_language_handle { my $r=shift; $lh=Apache::localize->get_handle(&Apache::loncommon::preferred_languages); - $r->content_languages(["¤t_language()"]); - my $enc=¤t_encoding(); - if ($enc) { - + if (&Apache::lonnet::mod_perl_version == 1) { + $r->content_languages([¤t_language()]); } +### setlocale(LC_ALL,¤t_locale); } 1;