X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=lib%2FPackages%2FTemplate.pm;h=1a6aa0cfb558478c647207cf009506d516e76c90;hb=a6b39cb5eec2cf7d8a0d756f0090a9d8644443c9;hp=28d8d1ed4c84588b8dd0a2654c10350390c69ade;hpb=cc6c820a1e503808b7ac1e2bff132de23f87606b;p=deb%2Fpackages.git diff --git a/lib/Packages/Template.pm b/lib/Packages/Template.pm index 28d8d1e..1a6aa0c 100644 --- a/lib/Packages/Template.pm +++ b/lib/Packages/Template.pm @@ -35,13 +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 { 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 = URI->new($_[0]); - my $host = $uri->host; - $host .= ':'.$uri->port if $uri->port != $uri->default_port; - return $host; + $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(@_,'<>&"') }; @@ -81,8 +86,10 @@ sub page { sub { return Packages::I18N::Locale::g($page_content->{cat}, @_) }; } $page_content->{used_langs} ||= \@LANGUAGES; - $page_content->{langs} = languages( $page_content->{lang} - || $self->{vars}{lang} || 'en', + $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; @@ -110,18 +117,19 @@ sub error_page { } sub languages { - my ( $lang, @used_langs ) = @_; - my $cat = Packages::I18N::Locale->get_handle($lang) - || Packages::I18N::Locale->get_handle('en'); + 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;