};
$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(@_,'<>&"') };
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;
}
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;