]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/Template.pm
Packages::I18N::*: Add some missing definitions for Khmer
[deb/packages.git] / lib / Packages / Template.pm
index be71d154ffbcaf890d8e0fc8cec583e90a5ade81..1a6aa0cfb558478c647207cf009506d516e76c90 100644 (file)
@@ -4,13 +4,13 @@ use strict;
 use warnings;
 
 use Template;
-use Locale::gettext;
 use URI ();
 use HTML::Entities ();
 use URI::Escape ();
 use Benchmark ':hireswallclock';
 
 use Packages::CGI;
+use Packages::Config qw( @LANGUAGES );
 use Packages::I18N::Locale;
 use Packages::I18N::Languages;
 use Packages::I18N::LanguageNames;
@@ -35,11 +35,18 @@ sub new {
     };
     $vars->{make_search_url} = sub { return &Packages::CGI::make_search_url(@_) };
     $vars->{make_url} = sub { return &Packages::CGI::make_url(@_) };
-    $vars->{g} = sub { return &Packages::I18N::Locale::tt_gettext(@_) };
-    $vars->{extract_host} = sub { my $uri = URI->new($_[0]);
-                                 my $host = $uri->host;
-                                 $host .= ':'.$uri->port if $uri->port != $uri->default_port;
-                                 return $host;
+    $vars->{g} = sub { my ($f, @a) = @_; return sprintf($f, @a); };
+    if ($vars->{cat}) {
+       $vars->{g} = sub { return Packages::I18N::Locale::g($vars->{cat}, @_) };
+    }
+    $vars->{extract_host} = sub { my $uri_str = $_[0];
+                                 my $uri = URI->new($uri_str);
+                                 if ($uri->can('host')) {
+                                     my $host = $uri->host;
+                                     $host .= ':'.$uri->port if $uri->port != $uri->default_port;
+                                     return $host;
+                                 }
+                                 return $uri_str;
                              };
     # needed to work around the limitations of the the FILTER syntax
     $vars->{html_encode} = sub { return HTML::Entities::encode_entities(@_,'<>&"') };
@@ -53,7 +60,7 @@ sub new {
        VARIABLES => $vars,
        COMPILE_EXT => '.ttc',
        %$options,
-    } ) or fatal_error( sprintf( _g( "Initialization of Template Engine failed: %s" ), $Template::ERROR ) );
+    } ) or die sprintf( "Initialization of Template Engine failed: %s", $Template::ERROR );
     $self->{format} = $format;
     $self->{vars} = $vars;
 
@@ -74,9 +81,15 @@ sub page {
 
     #use Data::Dumper;
     #die Dumper($self, $action, $page_content);
-    $page_content->{used_langs} ||= [ 'en' ];
-    $page_content->{langs} = languages( $page_content->{lang}
-                                       || $self->{vars}{lang} || 'en',
+    if ($page_content->{cat}) {
+       $page_content->{g} =
+           sub { return Packages::I18N::Locale::g($page_content->{cat}, @_) };
+    }
+    $page_content->{used_langs} ||= \@LANGUAGES;
+    $page_content->{langs} = languages( $page_content->{po_lang}
+                                       || $self->{vars}{po_lang} || 'en',
+                                       $page_content->{ddtp_lang}
+                                       || $self->{vars}{ddtp_lang} || 'en',
                                        @{$page_content->{used_langs}} );
 
     my $txt;
@@ -104,16 +117,19 @@ sub error_page {
 }
 
 sub languages {
-    my ( $lang, @used_langs ) = @_;
-    
+    my ( $po_lang, $ddtp_lang, @used_langs ) = @_;
+    my $cat = Packages::I18N::Locale->get_handle($po_lang, 'en');
+
     my @langs;
+    my $skip_lang = ($po_lang eq $ddtp_lang) ? $po_lang : '';
 
     if (@used_langs) {
-       
+
        my @printed_langs = ();
        foreach (@used_langs) {
-           next if $_ eq $lang; # Never print the current language
-           unless (get_selfname($_)) { warn "missing language $_"; next } #DEBUG
+           next if $_ eq $skip_lang; # Don't print the current language
+           unless (get_selfname($_)) { warn "missing language selfname $_"; next } #DEBUG
+           unless (get_language_name($_)) { warn "missing language name $_"; next } #DEBUG
            push @printed_langs, $_;
        }
        return [] unless scalar @printed_langs;
@@ -122,13 +138,14 @@ sub languages {
        foreach my $cur_lang (sort langcmp @printed_langs) {
            my %lang;
            $lang{lang} = $cur_lang;
-           $lang{tooltip} = dgettext( "langs", get_language_name($cur_lang) );
-            $lang{selfname} = get_selfname($cur_lang);
-           $lang{transliteration} = get_transliteration($cur_lang) if defined get_transliteration($cur_lang);
+           $lang{tooltip} = $cat->g(get_language_name($cur_lang));
+           $lang{selfname} = get_selfname($cur_lang);
+           $lang{transliteration} = get_transliteration($cur_lang)
+               if defined get_transliteration($cur_lang);
            push @langs, \%lang;
        }
     }
-    
+
     return \@langs;
 }