summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler/VNBrowse.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNDB/Handler/VNBrowse.pm')
-rw-r--r--lib/VNDB/Handler/VNBrowse.pm67
1 files changed, 35 insertions, 32 deletions
diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm
index 5a22bccc..2a6d6cd7 100644
--- a/lib/VNDB/Handler/VNBrowse.pm
+++ b/lib/VNDB/Handler/VNBrowse.pm
@@ -21,8 +21,8 @@ sub list {
{ name => 'p', required => 0, default => 1, template => 'int' },
{ name => 'q', required => 0, default => '' },
{ name => 'sq', required => 0, default => '' },
- { name => 'ln', required => 0, multi => 1, enum => [ keys %{$self->{languages}} ], default => '' },
- { name => 'pl', required => 0, multi => 1, enum => [ keys %{$self->{platforms}} ], default => '' },
+ { name => 'ln', required => 0, multi => 1, enum => $self->{languages}, default => '' },
+ { name => 'pl', required => 0, multi => 1, enum => $self->{platforms}, default => '' },
{ name => 'ti', required => 0, default => '', maxlength => 200 },
{ name => 'te', required => 0, default => '', maxlength => 200 },
{ name => 'sp', required => 0, default => $self->reqCookie('tagspoil') =~ /^([0-2])$/ ? $1 : 1, enum => [0..2] },
@@ -34,9 +34,9 @@ sub list {
return $self->resRedirect('/'.$1.$2.(!$3 ? '' : $1 eq 'd' ? '#'.$3 : '.'.$3), 'temp')
if $f->{q} =~ /^([gvrptud])([0-9]+)(?:\.([0-9]+))?$/;
- # for URL compatibilty with older versions
+ # for URL compatibilty with older versions (ugly hack to get English strings)
my @lang;
- $f->{q} =~ s/\s*$self->{languages}{$_}\s*//&&push @lang, $_ for (keys %{$self->{languages}});
+ $f->{q} =~ s/\s*$VNDB::L10N::en::Lexicon{"_lang_$_"}\s*//&&push @lang, $_ for (@{$self->{languages}});
$f->{ln} = $f->{ln}[0] ? [ @{$f->{ln}}, @lang ] : \@lang;
}
@@ -70,7 +70,7 @@ sub list {
$self->resRedirect('/v'.$list->[0]{id}, 'temp')
if $f->{q} && @$list == 1;
- $self->htmlHeader(title => 'Browse visual novels', search => $f->{q}, js => 'forms');
+ $self->htmlHeader(title => mt('_vnbrowse_title'), search => $f->{q}, js => 'forms');
_filters($self, $f, $char, \@ignored);
my $url = "/v/$char?q=$f->{q};ti=$f->{ti};te=$f->{te}";
@@ -84,12 +84,12 @@ sub list {
pageurl => "$url;o=$f->{o};s=$f->{s}",
sorturl => $url,
header => [
- @ti ? [ 'Score', 'tagscore', undef, 'tc_s' ] : (),
- [ 'Title', 'title', undef, @ti ? 'tc_t' : 'tc1' ],
- [ '', 0, undef, 'tc2' ],
- [ '', 0, undef, 'tc3' ],
- [ 'Released', 'rel', undef, 'tc4' ],
- [ 'Popularity', 'pop', undef, 'tc5' ],
+ @ti ? [ mt('_vnbrowse_col_score'), 'tagscore', undef, 'tc_s' ] : (),
+ [ mt('_vnbrowse_col_title'), 'title', undef, @ti ? 'tc_t' : 'tc1' ],
+ [ '', 0, undef, 'tc2' ],
+ [ '', 0, undef, 'tc3' ],
+ [ mt('_vnbrowse_col_released'), 'rel', undef, 'tc4' ],
+ [ mt('_vnbrowse_col_popularity'), 'pop', undef, 'tc5' ],
],
row => sub {
my($s, $n, $l) = @_;
@@ -103,15 +103,15 @@ sub list {
a href => '/v'.$l->{id}, title => $l->{original}||$l->{title}, shorten $l->{title}, 100;
end;
td class => 'tc2';
- $_ ne 'oth' && cssicon $_, $self->{platforms}{$_}
+ $_ ne 'oth' && cssicon $_, mt "_plat_$_"
for (sort split /\//, $l->{c_platforms});
end;
td class => 'tc3';
- cssicon "lang $_", $self->{languages}{$_}
+ cssicon "lang $_", mt "_lang_$_"
for (reverse sort split /\//, $l->{c_languages});
end;
td class => 'tc4';
- lit monthstr $l->{c_released};
+ lit $self->{l10n}->datestr($l->{c_released});
end;
td class => 'tc5', sprintf '%.2f', $l->{c_popularity}*100;
end;
@@ -126,69 +126,72 @@ sub _filters {
form action => '/v/all', 'accept-charset' => 'UTF-8', method => 'get';
div class => 'mainbox';
- h1 'Browse visual novels';
+ h1 mt '_vnbrowse_title';
$self->htmlSearchBox('v', $f->{q});
p class => 'browseopts';
for ('all', 'a'..'z', 0) {
- a href => "/v/$_", $_ eq $char ? (class => 'optselected') : (), $_ ? uc $_ : '#';
+ a href => "/v/$_", $_ eq $char ? (class => 'optselected') : (), $_ eq 'all' ? mt('_char_all') : $_ ? uc $_ : '#';
}
end;
if(@$ign) {
div class => 'warning';
- h2 'The following tags were ignored:';
+ h2 mt '_vnbrowse_tagign_title';
ul;
- li $_->[0].' ('.($_->[1]?"can't filter on meta tags":"no such tag found").')' for @$ign;
+ li $_->[0].' ('.mt('_vnbrowse_tagign_'.($_->[1]?'meta':'notfound')).')' for @$ign;
end;
end;
}
a id => 'advselect', href => '#';
- lit '<i>&#9656;</i> advanced search';
+ lit '<i>&#9656;</i> '.mt('_vnbrowse_advsearch');
end;
div id => 'advoptions', class => 'hidden vnoptions';
h2;
- lit 'Tag filters <b>(boolean and, selecting more gives less results)</b>';
+ txt mt '_vnbrowse_tags';
+ b ' ('.mt('_vnbrowse_booland').')';
end;
table class => 'formtable', style => 'margin-left: 0';
- $self->htmlFormPart($f, [ input => short => 'ti', name => 'Tags to include', width => 350 ]);
- $self->htmlFormPart($f, [ radio => short => 'sp', name => '', options => [[0,'Hide spoilers'],[1,'Show minor spoilers'],[2,'Show major spoilers']]]);
- $self->htmlFormPart($f, [ input => short => 'te', name => 'Tags to exclude', width => 350 ]);
+ $self->htmlFormPart($f, [ input => short => 'ti', name => mt('_vnbrowse_taginc'), width => 350 ]);
+ $self->htmlFormPart($f, [ radio => short => 'sp', name => '', options => [map [$_, mt '_vnbrowse_spoil'.$_], 0..2]]);
+ $self->htmlFormPart($f, [ input => short => 'te', name => mt('_vnbrowse_tagexc'), width => 350 ]);
end;
h2;
- lit 'Languages <b>(boolean or, selecting more gives more results)</b>';
+ txt mt '_vnbrowse_lang';
+ b ' ('.mt('_vnbrowse_boolor').')';
end;
for my $i (sort @{$self->dbLanguages}) {
span;
input type => 'checkbox', name => 'ln', value => $i, id => "lang_$i",
(scalar grep $_ eq $i, @{$f->{ln}}) ? (checked => 'checked') : ();
label for => "lang_$i";
- cssicon "lang $i", $self->{languages}{$i};
- txt $self->{languages}{$i};
+ cssicon "lang $i", mt "_lang_$i";
+ txt mt "_lang_$i";
end;
end;
}
h2;
- lit 'Platforms <b>(boolean or, selecting more gives more results)</b>';
+ txt mt '_vnbrowse_plat';
+ b ' ('.mt('_vnbrowse_boolor').')';
end;
- for my $i (sort keys %{$self->{platforms}}) {
+ for my $i (sort @{$self->{platforms}}) {
next if $i eq 'oth';
span;
input type => 'checkbox', id => "plat_$i", name => 'pl', value => $i,
(scalar grep $_ eq $i, @{$f->{pl}}) ? (checked => 'checked') : ();
label for => "plat_$i";
- cssicon $i, $self->{platforms}{$i};
- txt $self->{platforms}{$i};
+ cssicon $i, mt "_plat_$i";
+ txt mt "_plat_$i";
end;
end;
}
div style => 'text-align: center; clear: left;';
- input type => 'submit', value => 'Apply', class => 'submit';
- input type => 'reset', value => 'Clear', class => 'submit', onclick => 'location.href="/v/all"';
+ input type => 'submit', value => mt('_vnbrowse_apply'), class => 'submit';
+ input type => 'reset', value => mt('_vnbrowse_clear'), class => 'submit', onclick => 'location.href="/v/all"';
end;
end;
end;