diff options
Diffstat (limited to 'lib/VNDB/Handler/VNBrowse.pm')
-rw-r--r-- | lib/VNDB/Handler/VNBrowse.pm | 67 |
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>▸</i> advanced search'; + lit '<i>▸</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; |