summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Mair <amair.sob@googlemail.com>2006-10-27 12:00:31 +0200
committerAndreas Mair <amair.sob@googlemail.com>2006-10-27 12:00:31 +0200
commit24b39843b935f8a37b2d9dc909a530b771a61c1f (patch)
tree73869bd46144e37f32bdc6bff4f93453425f4951
parent86c56591df441fad78ac69d2f77196df05305758 (diff)
downloadvdradmin-am-24b39843b935f8a37b2d9dc909a530b771a61c1f.tar.gz
vdradmin-am-24b39843b935f8a37b2d9dc909a530b771a61c1f.tar.bz2
2006-10-27: 3.5.0betav3.5.0beta
- Added: script to convert existing AutoTimers to epgsearch (autotimer2searchtimer.pl). - Added: Hack for MSIE to always show vertical scroller to prevent horizontal scroller (Submitted by Udo Richter). - Added: Support for epgsearch plugin; AutoTimer now considered deprecated and unsupported. - Minor bugfixes
-rw-r--r--ChangeLog88
-rw-r--r--HISTORY6
-rwxr-xr-xautotimer2searchtimer.pl277
-rw-r--r--lib/Parse/RecDescent.pm3045
-rw-r--r--lib/Template/Plugin/HTML.pm197
-rw-r--r--lib/Template/Plugin/JavaScript.pm73
-rw-r--r--lib/Text/Balanced.pm2301
-rw-r--r--locale/cs/LC_MESSAGES/vdradmin.mobin31620 -> 31620 bytes
-rw-r--r--locale/de/LC_MESSAGES/vdradmin.mobin64691 -> 68602 bytes
-rw-r--r--locale/es/LC_MESSAGES/vdradmin.mobin62902 -> 62902 bytes
-rw-r--r--locale/fi/LC_MESSAGES/vdradmin.mobin18689 -> 26194 bytes
-rw-r--r--locale/fr/LC_MESSAGES/vdradmin.mobin62777 -> 62777 bytes
-rw-r--r--locale/nl/LC_MESSAGES/vdradmin.mobin62457 -> 62457 bytes
-rw-r--r--locale/ru/LC_MESSAGES/vdradmin.mobin60550 -> 60550 bytes
-rwxr-xr-xmake.sh2
-rw-r--r--po/cs.po958
-rw-r--r--po/de.po936
-rw-r--r--po/es.po956
-rw-r--r--po/fi.po1022
-rw-r--r--po/fr.po955
-rw-r--r--po/nl.po956
-rw-r--r--po/ru.po963
-rw-r--r--po/vdradmin.pot908
-rw-r--r--template/default/.#about.html.1.6116
-rw-r--r--template/default/.#navigation.html.1.479
-rw-r--r--template/default/about.html32
-rw-r--r--template/default/at_timer_list.html6
-rw-r--r--template/default/at_timer_new.html2
-rw-r--r--template/default/config.html6
-rw-r--r--template/default/default/sauerei.gifbin4444 -> 0 bytes
-rw-r--r--template/default/epgsearch_list.html260
-rw-r--r--template/default/epgsearch_new.html571
-rw-r--r--template/default/error.html4
-rw-r--r--template/default/help_at_timer_list.html2
-rw-r--r--template/default/help_at_timer_new.html4
-rw-r--r--template/default/help_config.html4
-rw-r--r--template/default/help_rec_list.html2
-rw-r--r--template/default/help_timer_list.html2
-rw-r--r--template/default/help_timer_new.html2
-rw-r--r--template/default/index.html6
-rw-r--r--template/default/library.js10
-rw-r--r--template/default/navigation.html7
-rw-r--r--template/default/prog_list.html2
-rw-r--r--template/default/prog_list2.html6
-rw-r--r--template/default/prog_summary.html2
-rw-r--r--template/default/prog_summary2.html2
-rw-r--r--template/default/prog_timeline.html8
-rw-r--r--template/default/rec_edit.html2
-rw-r--r--template/default/rec_list.html17
-rw-r--r--template/default/style.css89
-rw-r--r--template/default/timer_list.html12
-rw-r--r--template/default/timer_new.html2
-rw-r--r--template/default/tv.html12
-rw-r--r--template/default/vdr_cmds.html5
-rwxr-xr-xvdradmind.pl719
55 files changed, 7795 insertions, 7841 deletions
diff --git a/ChangeLog b/ChangeLog
index 191a2af..fe2681f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,91 @@
+2006-10-27 amair
+
+ * HISTORY, autotimer2searchtimer.pl, make.sh, vdradmind.pl,
+ lib/Template/Plugin/HTML.pm, lib/Template/Plugin/JavaScript.pm,
+ po/cs.po, po/de.po, po/es.po, po/fi.po, po/fr.po, po/nl.po,
+ po/ru.po, po/vdradmin.pot, template/default/about.html,
+ template/default/at_timer_list.html,
+ template/default/epgsearch_list.html,
+ template/default/epgsearch_new.html, template/default/library.js,
+ template/default/navigation.html, template/default/rec_list.html,
+ template/default/style.css, template/default/timer_list.html:
+
+ Added epgsearch plugin support.
+ Release v3.5.0beta.
+
+2006-10-27 amair
+
+ * vdradmind.pl:
+
+ Fixed crash if a timer's length is 0 + buffer start + buffer stop.
+
+2006-10-26 amair
+
+ * template/default/style.css, template/default/prog_list2.html:
+
+ Some layout fixes.
+
+2006-10-26 amair
+
+ * vdradmind.pl:
+
+ Remove trailing "\n" from "hostname" output.
+
+2006-10-20 amair
+
+ * template/default/error.html,
+ template/default/default/sauerei.gif:
+
+ Removed "sauerei.gif" on error page.
+
+2006-10-20 amair
+
+ * template/default/about.html, template/default/at_timer_list.html,
+ template/default/at_timer_new.html, template/default/config.html,
+ template/default/help_at_timer_list.html,
+ template/default/help_at_timer_new.html,
+ template/default/help_config.html,
+ template/default/help_rec_list.html,
+ template/default/help_timer_list.html,
+ template/default/help_timer_new.html,
+ template/default/index.html, template/default/prog_list.html,
+ template/default/prog_list2.html,
+ template/default/prog_summary.html,
+ template/default/prog_summary2.html,
+ template/default/prog_timeline.html,
+ template/default/rec_edit.html, template/default/rec_list.html,
+ template/default/style.css, template/default/timer_list.html,
+ template/default/timer_new.html, template/default/tv.html,
+ template/default/vdr_cmds.html:
+
+ * MSIE6 fix for too wide lists having a scrollbar at the left.
+ * Fixed some (X)HTML bugs.
+
+2006-10-02 amair
+
+ * template/default/about.html:
+
+ Added Karel Borkovec to translation team (Reported by Jörg Bornkessel)
+ Sort languages by date they were added.
+
+2006-10-02 amair
+
+ * vdradmind.pl:
+
+ Log error for Net::SMTP only if module really missing (Provided by Tobias Grimm).
+
+2006-09-30 scop
+
+ * template/default/navigation.html, template/default/rec_list.html:
+
+ Small HTML cleanups/fixes.
+
+2006-09-30 scop
+
+ * po/fi.po:
+
+ Add some missing Finnish translations.
+
2006-09-29 tag v3_4_7
2006-09-29 amair
diff --git a/HISTORY b/HISTORY
index 6676aac..3b699a6 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4,6 +4,12 @@ E-Mail: mail AT andreas DOT vdr-developer DOT org
VDR-Portal: amair
-----------------------------------------------------------
+2006-10-27: 3.5.0beta
+- Added: script to convert existing AutoTimers to epgsearch (autotimer2searchtimer.pl).
+- Added: Hack for MSIE to always show vertical scroller to prevent horizontal scroller (Submitted by Udo Richter).
+- Added: Support for epgsearch plugin; AutoTimer now considered deprecated and unsupported.
+- Minor bugfixes
+
2006-09-29: 3.4.7
- Autosave now takes care of the number of lines to show in commands menu (Requested by Ronny Kornexl).
diff --git a/autotimer2searchtimer.pl b/autotimer2searchtimer.pl
new file mode 100755
index 0000000..6cb24b2
--- /dev/null
+++ b/autotimer2searchtimer.pl
@@ -0,0 +1,277 @@
+#!/usr/bin/perl
+#
+# Convert VDRAdmin-AM autotimer (vdradmin.at) into
+# epgsearch searchtimer (epgsearch.conf)
+#
+# Version: 0.2beta 2006-08-06
+#
+# Author: Mike Constabel (vejoun @ vdrportal)
+# Andreas Mair (amair @ vdrportal)
+#
+# You need:
+#
+# - VDRAdmin-AM >= 3.4.6
+# - Epgsearch >= 0.9.16
+#
+
+use Socket;
+use Getopt::Std;
+
+#---------------------------------------------------------------------------
+
+$Usage = qq{
+Usage: $0 [options] -i filename -o filename -m 0|1
+ $0 [options] -i filename -o filename -s -m 0|1
+ $0 [options] -i filename -s -m 0|1
+
+Action: -i filename input file, vdradmind.at
+ -o filename output file, epgsearch.conf.new (file will be overwritten!)
+ -s send to epgsearch via svdrp (needs running vdr with epgsearch plugin)
+ -m 0|1 which new searchmode for autotimers with active status: yes, once
+ 0 means the whole string must match
+ 1 means every word must match [default]
+ In epgsearch 0 is default, vdradmin only use 1
+
+Options: -r autotimers with regular expressions will be disabled while converting,
+ with this option you can enable the corresponding searchtimers.
+ You should not do this! Check the converted searchtimers and enable
+ them manually! Wrong searchtimers will flood your timers.
+ -d host Host for SVDRP import
+ -p port Port for SVDRP import
+ -h Show this help text
+
+};
+
+die $Usage if (!getopts('i:o:srm:d:p:h') || !$opt_i || $opt_h || !($opt_o || $opt_s) || !($opt_m == 0 || $opt_m == 1));
+
+my $AT_FILENAME = $opt_i;
+my $EPGSEARCH_FILENAME = $opt_o;
+my $SENDSVDRP = $opt_s ? 1 : 0;
+my $EnableRegex = $opt_r ? 1 : 0;
+my $Searchmode = defined $opt_m ? $opt_m : 1;
+my $Dest = $opt_d ? $opt_d : "localhost";
+my $Port = $opt_p ? $opt_p : 2001;
+
+my $Timeout = 30; # max. seconds to wait for svdrp response
+
+my $conf_str="%i:%s:%i:%s:%s:%i:%s:%i:%i:%i:%i:%i:0:::%i:%i:%s:%i:%s:%s:%s:%s:%s:0:0:0::%i:0:1:1:0:0:0:0:0:1:0:0::1";
+
+# [ID=0], pattern, time?, starttime, stopptime, channel? (0,1), channel, match case (0,1), search mode (0,4), title, subtitle, description, [duration=0], [min=""], [max=""], searchtimer? (0,1),
+# use week? (0,1), weekday "0", series? (0,1), dir, prio, lft, bstart, bstop, [VPS=0], [action=0], [use ext. epg=0], [ext. epg=""], done? (0,1), [repeats=0], [ctitle=1], [csubtitle=1], [cdescription=0],
+# [cext. epg=0], [reapeats within days=0], [delete after x days=0], [keep=0], [min before switch=1], [nach x rec pausieren=0], [blacklist=0], [blacklist-id=""], [fuzzy=0]
+
+sub AT_Read {
+ my (@at);
+ if (-s $AT_FILENAME) {
+ open(AT_FILE, $AT_FILENAME) || printf("Can't open %s", $AT_FILENAME);
+ while (<AT_FILE>) {
+ chomp;
+ next if ($_ eq "");
+ my ($active, $pattern, $section, $start, $stop, $episode, $prio, $lft, $channel, $directory, $done, $weekday, $buffers, $bstart, $bstop) = split(/\:/, $_);
+ $pattern =~ s/\|/\:/g;
+ $pattern =~ s/\\:/\|/g;
+ $directory =~ s/\|/\:/g;
+ push(
+ @at,
+ { active => $active,
+ pattern => $pattern,
+ section => $section,
+ start => $start,
+ stop => $stop,
+ buffers => $buffers,
+ bstart => $bstart,
+ bstop => $bstop,
+ episode => $episode,
+ prio => $prio,
+ lft => $lft,
+ channel => $channel,
+ directory => $directory,
+ done => $done,
+ weekdays => $weekday
+ }
+ );
+ }
+ close(AT_FILE);
+ }
+ return (@at);
+}
+
+sub CONF_Collect {
+ my @at = @_;
+ my @st;
+ my $weekday = $stitle = $ssubtitle = $sdescription = $id = $case = 0;
+ my $mode = $Searchmode;
+ my $pattern;
+ my $directory;
+
+ for my $at (@at) {
+
+ if ($at->{pattern} =~ /^\/(.*)\/(i?)$/) {
+ $mode = 4;
+ $case = 1 if ($2 eq "i");
+ $pattern = $1;
+ } else {
+ $pattern = $at->{pattern};
+ }
+ $directory = $at->{directory};
+ $pattern =~ s/\|/\!\^pipe\^\!/g;
+ $pattern =~ s/\:/\|/g;
+ $directory =~ s/\|/\!\^pipe\^\!/g;
+ $directory =~ s/\:/\|/g;
+
+ $weekday = undef;
+ my $wd_bits = 0;
+ if ($at->{weekdays} =~ /^(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/) {
+ if ($7) { #Sunday
+ $weekday = 0;
+ $wd_bits |= 1;
+ }
+ if ($1) { #Monday
+ $weekday = 1;
+ $wd_bits |= 2;
+ }
+ if ($2) { #Tuesday
+ $weekday = 2;
+ $wd_bits |= 4;
+ }
+ if ($3) { #Wednesday
+ $weekday = 3;
+ $wd_bits |= 8;
+ }
+ if ($4) { #Thursday
+ $weekday = 4;
+ $wd_bits |= 16;
+ }
+ if ($5) { #Friday
+ $weekday = 5;
+ $wd_bits |= 32;
+ }
+ if ($6) { #Saturday
+ $weekday = 6;
+ $wd_bits |= 64;
+ }
+ }
+ if ($wd_bits !~ /^(1|2|4|8|16|32|64)$/) {
+ $weekday = -$wd_bits;
+ }
+ $stitle = $at->{section} & 1 ? 1 : 0;
+ $ssubtitle = $at->{section} & 2 ? 1 : 0;
+ $sdescription = $at->{section} & 4 ? 1 : 0;
+
+ $id += 1 if ($EPGSEARCH_FILENAME);
+
+ $data = sprintf $conf_str,
+ $id,
+ $pattern,
+ $at->{start} || $at->{stop} ? 1 : 0,
+ $at->{start} ? sprintf("%04i", $at->{start}) : "",
+ $at->{stop} ? sprintf("%04i", $at->{stop}) : "",
+ $at->{channel} ? 1 : 0,
+ $at->{channel} ? $at->{channel} : "",
+ $case,
+ $mode,
+ $stitle,
+ $ssubtitle,
+ $sdescription,
+ ($at->{active} && ($mode != 4 || $EnableRegex)) ? 1 : 0,
+ $weekday eq -127 || $wd_bits eq 0 ? 0 : 1,
+ $weekday,
+ $at->{episode} ? 1 : 0,
+ $directory,
+ $at->{prio} ? $at->{prio} : "",
+ $at->{lft} ? $at->{lft} : "",
+ $at->{buffers} ? $at->{bstart} : "",
+ $at->{buffers} ? $at->{bstop} : "",
+ $at->{done} ? 1 : 0; #avoid_repeats
+ push @st,$data;
+ }
+ return (@st)
+}
+
+sub Error {
+ print STDERR "@_\n";
+ close(SOCK);
+ exit 0;
+}
+
+sub SplitLine($) {
+ my ($line)=@_;
+ if ($line =~ /^([0-9]{3})([- ])(.*)$/) {
+ return ($1,$2,$3);
+ }
+ Error("Unidentified Line: $line");
+}
+
+sub WriteSearchtimerSVDRP {
+ my @str = @_;
+
+ $SIG{ALRM} = sub { Error("timeout"); };
+ alarm($Timeout);
+
+ my $iaddr = inet_aton($Dest) || Error("no host: $Dest");
+ my $paddr = sockaddr_in($Port, $iaddr);
+
+ my $proto = getprotobyname('tcp');
+ socket(SOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!");
+ connect(SOCK, $paddr) || Error("connect: $!");
+ select(SOCK); $| = 1;
+ select(STDOUT);
+
+ while (<SOCK>) {
+ chomp;
+ print STDOUT "(1):$_\n";
+ my ($code,$sep,$data)=SplitLine($_);
+ last if ($code=220 && $sep eq ' ');
+ }
+
+ foreach my $line (@str) {
+ chomp $line;
+ printf SOCK "PLUG epgsearch NEWS %s\r\n", $line;
+ }
+
+ while (<SOCK>) {
+ chomp;
+ print STDOUT "(2):$_\n";
+ my ($code,$sep,$data)=SplitLine($_);
+ last if ($code==900 && $sep eq ' ');
+ }
+
+ print SOCK "quit\r\n";
+
+ while (<SOCK>) {
+ chomp;
+ print STDOUT "(3):$_\n";
+ my ($code,$sep,$data)=SplitLine($_);
+ last if ($code==221 && $sep eq ' ');
+ }
+
+ close(SOCK) || Error("close: $!");
+}
+
+sub WriteSearchtimerFile {
+ my @str = @_;
+
+ open(STFILE, ">".$EPGSEARCH_FILENAME) || die("Cannot open file ${EPGSEARCH_FILENAME}!");
+ print STFILE "#version 2 - DONT TOUCH THIS!\n";
+ foreach my $line (@str) {
+ chomp $line;
+ printf STFILE "%s\n", $line;
+ }
+ close STFILE
+}
+
+#---------------------------------------------------------------------------
+# main
+
+my @st;
+
+@st = CONF_Collect(AT_Read());
+
+if ( $SENDSVDRP ) {
+ WriteSearchtimerSVDRP(@st);
+}
+
+if ( $EPGSEARCH_FILENAME ) {
+ WriteSearchtimerFile(@st);
+}
+
diff --git a/lib/Parse/RecDescent.pm b/lib/Parse/RecDescent.pm
deleted file mode 100644
index 35b9e9d..0000000
--- a/lib/Parse/RecDescent.pm
+++ /dev/null
@@ -1,3045 +0,0 @@
-# GENERATE RECURSIVE DESCENT PARSER OBJECTS FROM A GRAMMARC
-# SEE RecDescent.pod FOR FULL DETAILS
-
-use 5.005;
-use strict;
-
-package Parse::RecDescent;
-
-use Text::Balanced qw ( extract_codeblock extract_bracketed extract_quotelike extract_delimited );
-
-use vars qw ( $skip );
-
- *defskip = \ '\s*'; # DEFAULT SEPARATOR IS OPTIONAL WHITESPACE
- $skip = '\s*'; # UNIVERSAL SEPARATOR IS OPTIONAL WHITESPACE
-my $MAXREP = 100_000_000; # REPETITIONS MATCH AT MOST 100,000,000 TIMES
-
-
-sub import # IMPLEMENT PRECOMPILER BEHAVIOUR UNDER:
- # perl -MParse::RecDescent - <grammarfile> <classname>
-{
- local *_die = sub { print @_, "\n"; exit };
-
- my ($package, $file, $line) = caller;
- if (substr($file,0,1) eq '-' && $line == 0)
- {
- _die("Usage: perl -MLocalTest - <grammarfile> <classname>")
- unless @ARGV == 2;
-
- my ($sourcefile, $class) = @ARGV;
-
- local *IN;
- open IN, $sourcefile
- or _die("Can't open grammar file '$sourcefile'");
-
- my $grammar = join '', <IN>;
-
- Parse::RecDescent->Precompile($grammar, $class, $sourcefile);
- exit;
- }
-}
-
-sub Save
-{
- my ($self, $class) = @_;
- $self->{saving} = 1;
- $self->Precompile(undef,$class);
- $self->{saving} = 0;
-}
-
-sub Precompile
-{
- my ($self, $grammar, $class, $sourcefile) = @_;
-
- $class =~ /^(\w+::)*\w+$/ or croak("Bad class name: $class");
-
- my $modulefile = $class;
- $modulefile =~ s/.*:://;
- $modulefile .= ".pm";
-
- open OUT, ">$modulefile"
- or croak("Can't write to new module file '$modulefile'");
-
- print STDERR "precompiling grammar from file '$sourcefile'\n",
- "to class $class in module file '$modulefile'\n"
- if $grammar && $sourcefile;
-
- # local $::RD_HINT = 1;
- $self = Parse::RecDescent->new($grammar,1,$class)
- || croak("Can't compile bad grammar")
- if $grammar;
-
- foreach ( keys %{$self->{rules}} )
- { $self->{rules}{$_}{changed} = 1 }
-
- print OUT "package $class;\nuse Parse::RecDescent;\n\n";
-
- print OUT "{ my \$ERRORS;\n\n";
-
- print OUT $self->_code();
-
- print OUT "}\npackage $class; sub new { ";
- print OUT "my ";
-
- require Data::Dumper;
- print OUT Data::Dumper->Dump([$self], [qw(self)]);
-
- print OUT "}";
-
- close OUT
- or croak("Can't write to new module file '$modulefile'");
-}
-
-
-package Parse::RecDescent::LineCounter;
-
-
-sub TIESCALAR # ($classname, \$text, $thisparser, $prevflag)
-{
- bless {
- text => $_[1],
- parser => $_[2],
- prev => $_[3]?1:0,
- }, $_[0];
-}
-
-my %counter_cache;
-
-sub FETCH
-{
- my $parser = $_[0]->{parser};
- my $from = $parser->{fulltextlen}-length(${$_[0]->{text}})-$_[0]->{prev}
-;
-
- unless (exists $counter_cache{$from}) {
- $parser->{lastlinenum} = $parser->{offsetlinenum}
- - Parse::RecDescent::_linecount(substr($parser->{fulltext},$from))
- + 1;
- $counter_cache{$from} = $parser->{lastlinenum};
- }
- return $counter_cache{$from};
-}
-
-sub STORE
-{
- my $parser = $_[0]->{parser};
- $parser->{offsetlinenum} -= $parser->{lastlinenum} - $_[1];
- return undef;
-}
-
-sub resync # ($linecounter)
-{
- my $self = tied($_[0]);
- die "Tried to alter something other than a LineCounter\n"
- unless $self =~ /Parse::RecDescent::LineCounter/;
-
- my $parser = $self->{parser};
- my $apparently = $parser->{offsetlinenum}
- - Parse::RecDescent::_linecount(${$self->{text}})
- + 1;
-
- $parser->{offsetlinenum} += $parser->{lastlinenum} - $apparently;
- return 1;
-}
-
-package Parse::RecDescent::ColCounter;
-
-sub TIESCALAR # ($classname, \$text, $thisparser, $prevflag)
-{
- bless {
- text => $_[1],
- parser => $_[2],
- prev => $_[3]?1:0,
- }, $_[0];
-}
-
-sub FETCH
-{
- my $parser = $_[0]->{parser};
- my $missing = $parser->{fulltextlen}-length(${$_[0]->{text}})-$_[0]->{prev}+1;
- substr($parser->{fulltext},0,$missing) =~ m/^(.*)\Z/m;
- return length($1);
-}
-
-sub STORE
-{
- die "Can't set column number via \$thiscolumn\n";
-}
-
-
-package Parse::RecDescent::OffsetCounter;
-
-sub TIESCALAR # ($classname, \$text, $thisparser, $prev)
-{
- bless {
- text => $_[1],
- parser => $_[2],
- prev => $_[3]?-1:0,
- }, $_[0];
-}
-
-sub FETCH
-{
- my $parser = $_[0]->{parser};
- return $parser->{fulltextlen}-length(${$_[0]->{text}})+$_[0]->{prev};
-}
-
-sub STORE
-{
- die "Can't set current offset via \$thisoffset or \$prevoffset\n";
-}
-
-
-
-package Parse::RecDescent::Rule;
-
-sub new ($$$$$)
-{
- my $class = ref($_[0]) || $_[0];
- my $name = $_[1];
- my $owner = $_[2];
- my $line = $_[3];
- my $replace = $_[4];
-
- if (defined $owner->{"rules"}{$name})
- {
- my $self = $owner->{"rules"}{$name};
- if ($replace && !$self->{"changed"})
- {
- $self->reset;
- }
- return $self;
- }
- else
- {
- return $owner->{"rules"}{$name} =
- bless
- {
- "name" => $name,
- "prods" => [],
- "calls" => [],
- "changed" => 0,
- "line" => $line,
- "impcount" => 0,
- "opcount" => 0,
- "vars" => "",
- }, $class;
- }
-}
-
-sub reset($)
-{
- @{$_[0]->{"prods"}} = ();
- @{$_[0]->{"calls"}} = ();
- $_[0]->{"changed"} = 0;
- $_[0]->{"impcount"} = 0;
- $_[0]->{"opcount"} = 0;
- $_[0]->{"vars"} = "";
-}
-
-sub DESTROY {}
-
-sub hasleftmost($$)
-{
- my ($self, $ref) = @_;
-
- my $prod;
- foreach $prod ( @{$self->{"prods"}} )
- {
- return 1 if $prod->hasleftmost($ref);
- }
-
- return 0;
-}
-
-sub leftmostsubrules($)
-{
- my $self = shift;
- my @subrules = ();
-
- my $prod;
- foreach $prod ( @{$self->{"prods"}} )
- {
- push @subrules, $prod->leftmostsubrule();
- }
-
- return @subrules;
-}
-
-sub expected($)
-{
- my $self = shift;
- my @expected = ();
-
- my $prod;
- foreach $prod ( @{$self->{"prods"}} )
- {
- my $next = $prod->expected();
- unless (! $next or _contains($next,@expected) )
- {
- push @expected, $next;
- }
- }
-
- return join ', or ', @expected;
-}
-
-sub _contains($@)
-{
- my $target = shift;
- my $item;
- foreach $item ( @_ ) { return 1 if $target eq $item; }
- return 0;
-}
-
-sub addcall($$)
-{
- my ( $self, $subrule ) = @_;
- unless ( _contains($subrule, @{$self->{"calls"}}) )
- {
- push @{$self->{"calls"}}, $subrule;
- }
-}
-
-sub addprod($$)
-{
- my ( $self, $prod ) = @_;
- push @{$self->{"prods"}}, $prod;
- $self->{"changed"} = 1;
- $self->{"impcount"} = 0;
- $self->{"opcount"} = 0;
- $prod->{"number"} = $#{$self->{"prods"}};
- return $prod;
-}
-
-sub addvar
-{
- my ( $self, $var, $parser ) = @_;
- if ($var =~ /\A\s*local\s+([%@\$]\w+)/)
- {
- $parser->{localvars} .= " $1";
- $self->{"vars"} .= "$var;\n" }
- else
- { $self->{"vars"} .= "my $var;\n" }
- $self->{"changed"} = 1;
- return 1;
-}
-
-sub addautoscore
-{
- my ( $self, $code ) = @_;
- $self->{"autoscore"} = $code;
- $self->{"changed"} = 1;
- return 1;
-}
-
-sub nextoperator($)
-{
- my $self = shift;
- my $prodcount = scalar @{$self->{"prods"}};
- my $opcount = ++$self->{"opcount"};
- return "_operator_${opcount}_of_production_${prodcount}_of_rule_$self->{name}";
-}
-
-sub nextimplicit($)
-{
- my $self = shift;
- my $prodcount = scalar @{$self->{"prods"}};
- my $impcount = ++$self->{"impcount"};
- return "_alternation_${impcount}_of_production_${prodcount}_of_rule_$self->{name}";
-}
-
-
-sub code
-{
- my ($self, $namespace, $parser) = @_;
-
-eval 'undef &' . $namespace . '::' . $self->{"name"} unless $parser->{saving};
-
- my $code =
-'
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub ' . $namespace . '::' . $self->{"name"} . '
-{
- my $thisparser = $_[0];
- use vars q{$tracelevel};
- local $tracelevel = ($tracelevel||0)+1;
- $ERRORS = 0;
- my $thisrule = $thisparser->{"rules"}{"' . $self->{"name"} . '"};
-
- Parse::RecDescent::_trace(q{Trying rule: [' . $self->{"name"} . ']},
- Parse::RecDescent::_tracefirst($_[1]),
- q{' . $self->{"name"} . '},
- $tracelevel)
- if defined $::RD_TRACE;
-
- ' . ($parser->{deferrable}
- ? 'my $def_at = @{$thisparser->{deferred}};'
- : '') .
- '
- my $err_at = @{$thisparser->{errors}};
-
- my $score;
- my $score_return;
- my $_tok;
- my $return = undef;
- my $_matched=0;
- my $commit=0;
- my @item = ();
- my %item = ();
- my $repeating = defined($_[2]) && $_[2];
- my $_noactions = defined($_[3]) && $_[3];
- my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
- my %arg = ($#arg & 01) ? @arg : (@arg, undef);
- my $text;
- my $lastsep="";
- my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
- $expectation->at($_[1]);
- '. ($parser->{_check}{thisoffset}?'
- my $thisoffset;
- tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
- ':'') . ($parser->{_check}{prevoffset}?'
- my $prevoffset;
- tie $prevoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser, 1;
- ':'') . ($parser->{_check}{thiscolumn}?'
- my $thiscolumn;
- tie $thiscolumn, q{Parse::RecDescent::ColCounter}, \$text, $thisparser;
- ':'') . ($parser->{_check}{prevcolumn}?'
- my $prevcolumn;
- tie $prevcolumn, q{Parse::RecDescent::ColCounter}, \$text, $thisparser, 1;
- ':'') . ($parser->{_check}{prevline}?'
- my $prevline;
- tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
- ':'') . '
- my $thisline;
- tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
- '. $self->{vars} .'
-';
-
- my $prod;
- foreach $prod ( @{$self->{"prods"}} )
- {
- $prod->addscore($self->{autoscore},0,0) if $self->{autoscore};
- next unless $prod->checkleftmost();
- $code .= $prod->code($namespace,$self,$parser);
-
- $code .= $parser->{deferrable}
- ? ' splice
- @{$thisparser->{deferred}}, $def_at unless $_matched;
- '
- : '';
- }
-
- $code .=
-'
- unless ( $_matched || defined($return) || defined($score) )
- {
- ' .($parser->{deferrable}
- ? ' splice @{$thisparser->{deferred}}, $def_at;
- '
- : '') . '
-
- $_[1] = $text; # NOT SURE THIS IS NEEDED
- Parse::RecDescent::_trace(q{<<Didn\'t match rule>>},
- Parse::RecDescent::_tracefirst($_[1]),
- q{' . $self->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- return undef;
- }
- if (!defined($return) && defined($score))
- {
- Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
- q{' . $self->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- $return = $score_return;
- }
- splice @{$thisparser->{errors}}, $err_at;
- $return = $item[$#item] unless defined $return;
- if (defined $::RD_TRACE)
- {
- Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
- $return . q{])}, "",
- q{' . $self->{"name"} .'},
- $tracelevel);
- Parse::RecDescent::_trace(q{(consumed: [} .
- Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
- Parse::RecDescent::_tracefirst($text),
- , q{' . $self->{"name"} .'},
- $tracelevel)
- }
- $_[1] = $text;
- return $return;
-}
-';
-
- return $code;
-}
-
-my @left;
-sub isleftrec($$)
-{
- my ($self, $rules) = @_;
- my $root = $self->{"name"};
- @left = $self->leftmostsubrules();
- my $next;
- foreach $next ( @left )
- {
- next unless defined $rules->{$next}; # SKIP NON-EXISTENT RULES
- return 1 if $next eq $root;
- my $child;
- foreach $child ( $rules->{$next}->leftmostsubrules() )
- {
- push(@left, $child)
- if ! _contains($child, @left) ;
- }
- }
- return 0;
-}
-
-package Parse::RecDescent::Production;
-
-sub describe ($;$)
-{
- return join ' ', map { $_->describe($_[1]) or () } @{$_[0]->{items}};
-}
-
-sub new ($$;$$)
-{
- my ($self, $line, $uncommit, $error) = @_;
- my $class = ref($self) || $self;
-
- bless
- {
- "items" => [],
- "uncommit" => $uncommit,
- "error" => $error,
- "line" => $line,
- strcount => 0,
- patcount => 0,
- dircount => 0,
- actcount => 0,
- }, $class;
-}
-
-sub expected ($)
-{
- my $itemcount = scalar @{$_[0]->{"items"}};
- return ($itemcount) ? $_[0]->{"items"}[0]->describe(1) : '';
-}
-
-sub hasleftmost ($$)
-{
- my ($self, $ref) = @_;
- return ${$self->{"items"}}[0] eq $ref if scalar @{$self->{"items"}};
- return 0;
-}
-
-sub leftmostsubrule($)
-{
- my $self = shift;
-
- if ( $#{$self->{"items"}} >= 0 )
- {
- my $subrule = $self->{"items"}[0]->issubrule();
- return $subrule if defined $subrule;
- }
-
- return ();
-}
-
-sub checkleftmost($)
-{
- my @items = @{$_[0]->{"items"}};
- if (@items==1 && ref($items[0]) =~ /\AParse::RecDescent::Error/
- && $items[0]->{commitonly} )
- {
- Parse::RecDescent::_warn(2,"Lone <error?> in production treated
- as <error?> <reject>");
- Parse::RecDescent::_hint("A production consisting of a single
- conditional <error?> directive would
- normally succeed (with the value zero) if the
- rule is not 'commited' when it is
- tried. Since you almost certainly wanted
- '<error?> <reject>' Parse::RecDescent
- supplied it for you.");
- push @{$_[0]->{items}},
- Parse::RecDescent::UncondReject->new(0,0,'<reject>');
- }
- elsif (@items==1 && ($items[0]->describe||"") =~ /<rulevar|<autoscore/)
- {
- # Do nothing
- }
- elsif (@items &&
- ( ref($items[0]) =~ /\AParse::RecDescent::UncondReject/
- || ($items[0]->describe||"") =~ /<autoscore/
- ))
- {
- Parse::RecDescent::_warn(1,"Optimizing away production: [". $_[0]->describe ."]");
- my $what = $items[0]->describe =~ /<rulevar/
- ? "a <rulevar> (which acts like an unconditional <reject> during parsing)"
- : $items[0]->describe =~ /<autoscore/
- ? "an <autoscore> (which acts like an unconditional <reject> during parsing)"
- : "an unconditional <reject>";
- my $caveat = $items[0]->describe =~ /<rulevar/
- ? " after the specified variable was set up"
- : "";
- my $advice = @items > 1
- ? "However, there were also other (useless) items after the leading "
- . $items[0]->describe
- . ", so you may have been expecting some other behaviour."
- : "You can safely ignore this message.";
- Parse::RecDescent::_hint("The production starts with $what. That means that the
- production can never successfully match, so it was
- optimized out of the final parser$caveat. $advice");
- return 0;
- }
- return 1;
-}
-
-sub changesskip($)
-{
- my $item;
- foreach $item (@{$_[0]->{"items"}})
- {
- if (ref($item) =~ /Parse::RecDescent::(Action|Directive)/)
- {
- return 1 if $item->{code} =~ /\$skip/;
- }
- }
- return 0;
-}
-
-sub adddirective
-{
- my ( $self, $whichop, $line, $name ) = @_;
- push @{$self->{op}},
- { type=>$whichop, line=>$line, name=>$name,
- offset=> scalar(@{$self->{items}}) };
-}
-
-sub addscore
-{
- my ( $self, $code, $lookahead, $line ) = @_;
- $self->additem(Parse::RecDescent::Directive->new(
- "local \$^W;
- my \$thisscore = do { $code } + 0;
- if (!defined(\$score) || \$thisscore>\$score)
- { \$score=\$thisscore; \$score_return=\$item[-1]; }
- undef;", $lookahead, $line,"<score: $code>") )
- unless $self->{items}[-1]->describe =~ /<score/;
- return 1;
-}
-
-sub check_pending
-{
- my ( $self, $line ) = @_;
- if ($self->{op})
- {
- while (my $next = pop @{$self->{op}})
- {
- Parse::RecDescent::_error("Incomplete <$next->{type}op:...>.", $line);
- Parse::RecDescent::_hint(
- "The current production ended without completing the
- <$next->{type}op:...> directive that started near line
- $next->{line}. Did you forget the closing '>'?");
- }
- }
- return 1;
-}
-
-sub enddirective
-{
- my ( $self, $line, $minrep, $maxrep ) = @_;
- unless ($self->{op})
- {
- Parse::RecDescent::_error("Unmatched > found.", $line);
- Parse::RecDescent::_hint(
- "A '>' angle bracket was encountered, which typically
- indicates the end of a directive. However no suitable
- preceding directive was encountered. Typically this
- indicates either a extra '>' in the grammar, or a
- problem inside the previous directive.");
- return;
- }
- my $op = pop @{$self->{op}};
- my $span = @{$self->{items}} - $op->{offset};
- if ($op->{type} =~ /left|right/)
- {
- if ($span != 3)
- {
- Parse::RecDescent::_error(
- "Incorrect <$op->{type}op:...> specification:
- expected 3 args, but found $span instead", $line);
- Parse::RecDescent::_hint(
- "The <$op->{type}op:...> directive requires a
- sequence of exactly three elements. For example:
- <$op->{type}op:leftarg /op/ rightarg>");
- }
- else
- {
- push @{$self->{items}},
- Parse::RecDescent::Operator->new(
- $op->{type}, $minrep, $maxrep, splice(@{$self->{"items"}}, -3));
- $self->{items}[-1]->sethashname($self);
- $self->{items}[-1]{name} = $op->{name};
- }
- }
-}
-
-sub prevwasreturn
-{
- my ( $self, $line ) = @_;
- unless (@{$self->{items}})
- {
- Parse::RecDescent::_error(
- "Incorrect <return:...> specification:
- expected item missing", $line);
- Parse::RecDescent::_hint(
- "The <return:...> directive requires a
- sequence of at least one item. For example:
- <return: list>");
- return;
- }
- push @{$self->{items}},
- Parse::RecDescent::Result->new();
-}
-
-sub additem
-{
- my ( $self, $item ) = @_;
- $item->sethashname($self);
- push @{$self->{"items"}}, $item;
- return $item;
-}
-
-
-sub preitempos
-{
- return q
- {
- push @itempos, {'offset' => {'from'=>$thisoffset, 'to'=>undef},
- 'line' => {'from'=>$thisline, 'to'=>undef},
- 'column' => {'from'=>$thiscolumn, 'to'=>undef} };
- }
-}
-
-sub incitempos
-{
- return q
- {
- $itempos[$#itempos]{'offset'}{'from'} += length($1);
- $itempos[$#itempos]{'line'}{'from'} = $thisline;
- $itempos[$#itempos]{'column'}{'from'} = $thiscolumn;
- }
-}
-
-sub postitempos
-{
- return q
- {
- $itempos[$#itempos]{'offset'}{'to'} = $prevoffset;
- $itempos[$#itempos]{'line'}{'to'} = $prevline;
- $itempos[$#itempos]{'column'}{'to'} = $prevcolumn;
- }
-}
-
-sub code($$$$)
-{
- my ($self,$namespace,$rule,$parser) = @_;
- my $code =
-'
- while (!$_matched'
- . (defined $self->{"uncommit"} ? '' : ' && !$commit')
- . ')
- {
- ' .
- ($self->changesskip()
- ? 'local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;'
- : '') .'
- Parse::RecDescent::_trace(q{Trying production: ['
- . $self->describe . ']},
- Parse::RecDescent::_tracefirst($_[1]),
- q{' . $rule ->{name}. '},
- $tracelevel)
- if defined $::RD_TRACE;
- my $thisprod = $thisrule->{"prods"}[' . $self->{"number"} . '];
- ' . (defined $self->{"error"} ? '' : '$text = $_[1];' ) . '
- my $_savetext;
- @item = (q{' . $rule->{"name"} . '});
- %item = (__RULE__ => q{' . $rule->{"name"} . '});
- my $repcount = 0;
-
-';
- $code .=
-' my @itempos = ({});
-' if $parser->{_check}{itempos};
-
- my $item;
- my $i;
-
- for ($i = 0; $i < @{$self->{"items"}}; $i++)
- {
- $item = ${$self->{items}}[$i];
-
- $code .= preitempos() if $parser->{_check}{itempos};
-
- $code .= $item->code($namespace,$rule,$parser->{_check});
-
- $code .= postitempos() if $parser->{_check}{itempos};
-
- }
-
- if ($parser->{_AUTOACTION} && defined($item) && !$item->isa("Parse::RecDescent::Action"))
- {
- $code .= $parser->{_AUTOACTION}->code($namespace,$rule);
- Parse::RecDescent::_warn(1,"Autogenerating action in rule
- \"$rule->{name}\":
- $parser->{_AUTOACTION}{code}")
- and
- Parse::RecDescent::_hint("The \$::RD_AUTOACTION was defined,
- so any production not ending in an
- explicit action has the specified
- \"auto-action\" automatically
- appended.");
- }
- elsif ($parser->{_AUTOTREE} && defined($item) && !$item->isa("Parse::RecDescent::Action"))
- {
- if ($i==1 && $item->isterminal)
- {
- $code .= $parser->{_AUTOTREE}{TERMINAL}->code($namespace,$rule);
- }
- else
- {
- $code .= $parser->{_AUTOTREE}{NODE}->code($namespace,$rule);
- }
- Parse::RecDescent::_warn(1,"Autogenerating tree-building action in rule
- \"$rule->{name}\"")
- and
- Parse::RecDescent::_hint("The directive <autotree> was specified,
- so any production not ending
- in an explicit action has
- some parse-tree building code
- automatically appended.");
- }
-
- $code .=
-'
-
- Parse::RecDescent::_trace(q{>>Matched production: ['
- . $self->describe . ']<<},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $_matched = 1;
- last;
- }
-
-';
- return $code;
-}
-
-1;
-
-package Parse::RecDescent::Action;
-
-sub describe { undef }
-
-sub sethashname { $_[0]->{hashname} = '__ACTION' . ++$_[1]->{actcount} .'__'; }
-
-sub new
-{
- my $class = ref($_[0]) || $_[0];
- bless
- {
- "code" => $_[1],
- "lookahead" => $_[2],
- "line" => $_[3],
- }, $class;
-}
-
-sub issubrule { undef }
-sub isterminal { 0 }
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
-'
- Parse::RecDescent::_trace(q{Trying action},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) .'
-
- $_tok = ($_noactions) ? 0 : do ' . $self->{"code"} . ';
- ' . ($self->{"lookahead"}<0?'if':'unless') . ' (defined $_tok)
- {
- Parse::RecDescent::_trace(q{<<Didn\'t match action>> (return value: [undef])})
- if defined $::RD_TRACE;
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
- . $_tok . q{])},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- push @item, $_tok;
- ' . ($self->{line}>=0 ? '$item{'. $self->{hashname} .'}=$_tok;' : '' ) .'
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-'
-}
-
-
-1;
-
-package Parse::RecDescent::Directive;
-
-sub sethashname { $_[0]->{hashname} = '__DIRECTIVE' . ++$_[1]->{dircount} . '__'; }
-
-sub issubrule { undef }
-sub isterminal { 0 }
-sub describe { $_[1] ? '' : $_[0]->{name} }
-
-sub new ($$$$$)
-{
- my $class = ref($_[0]) || $_[0];
- bless
- {
- "code" => $_[1],
- "lookahead" => $_[2],
- "line" => $_[3],
- "name" => $_[4],
- }, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
-'
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) .'
-
- Parse::RecDescent::_trace(q{Trying directive: ['
- . $self->describe . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE; ' .'
- $_tok = do { ' . $self->{"code"} . ' };
- if (defined($_tok))
- {
- Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
- . $_tok . q{])},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- }
- else
- {
- Parse::RecDescent::_trace(q{<<Didn\'t match directive>>},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- }
- ' . ($self->{"lookahead"} ? '$text = $_savetext and ' : '' ) .'
- last '
- . ($self->{"lookahead"}<0?'if':'unless') . ' defined $_tok;
- push @item, $item{'.$self->{hashname}.'}=$_tok;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-'
-}
-
-1;
-
-package Parse::RecDescent::UncondReject;
-
-sub issubrule { undef }
-sub isterminal { 0 }
-sub describe { $_[1] ? '' : $_[0]->{name} }
-sub sethashname { $_[0]->{hashname} = '__DIRECTIVE' . ++$_[1]->{dircount} . '__'; }
-
-sub new ($$$;$)
-{
- my $class = ref($_[0]) || $_[0];
- bless
- {
- "lookahead" => $_[1],
- "line" => $_[2],
- "name" => $_[3],
- }, $class;
-}
-
-# MARK, YOU MAY WANT TO OPTIMIZE THIS.
-
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
-'
- Parse::RecDescent::_trace(q{>>Rejecting production<< (found '
- . $self->describe . ')},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- undef $return;
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) .'
-
- $_tok = undef;
- ' . ($self->{"lookahead"} ? '$text = $_savetext and ' : '' ) .'
- last '
- . ($self->{"lookahead"}<0?'if':'unless') . ' defined $_tok;
-'
-}
-
-1;
-
-package Parse::RecDescent::Error;
-
-sub issubrule { undef }
-sub isterminal { 0 }
-sub describe { $_[1] ? '' : $_[0]->{commitonly} ? '<error?:...>' : '<error...>' }
-sub sethashname { $_[0]->{hashname} = '__DIRECTIVE' . ++$_[1]->{dircount} . '__'; }
-
-sub new ($$$$$)
-{
- my $class = ref($_[0]) || $_[0];
- bless
- {
- "msg" => $_[1],
- "lookahead" => $_[2],
- "commitonly" => $_[3],
- "line" => $_[4],
- }, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
- my $action = '';
-
- if ($self->{"msg"}) # ERROR MESSAGE SUPPLIED
- {
- #WAS: $action .= "Parse::RecDescent::_error(qq{$self->{msg}}" . ',$thisline);';
- $action .= 'push @{$thisparser->{errors}}, [qq{'.$self->{msg}.'},$thisline];';
-
- }
- else # GENERATE ERROR MESSAGE DURING PARSE
- {
- $action .= '
- my $rule = $item[0];
- $rule =~ s/_/ /g;
- #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
- push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
- ';
- }
-
- my $dir =
- new Parse::RecDescent::Directive('if (' .
- ($self->{"commitonly"} ? '$commit' : '1') .
- ") { do {$action} unless ".' $_noactions; undef } else {0}',
- $self->{"lookahead"},0,$self->describe);
- $dir->{hashname} = $self->{hashname};
- return $dir->code($namespace, $rule, 0);
-}
-
-1;
-
-package Parse::RecDescent::Token;
-
-sub sethashname { $_[0]->{hashname} = '__PATTERN' . ++$_[1]->{patcount} . '__'; }
-
-sub issubrule { undef }
-sub isterminal { 1 }
-sub describe ($) { shift->{'description'}}
-
-
-# ARGS ARE: $self, $pattern, $left_delim, $modifiers, $lookahead, $linenum
-sub new ($$$$$$)
-{
- my $class = ref($_[0]) || $_[0];
- my $pattern = $_[1];
- my $pat = $_[1];
- my $ldel = $_[2];
- my $rdel = $ldel;
- $rdel =~ tr/{[(</}])>/;
-
- my $mod = $_[3];
-
- my $desc;
-
- if ($ldel eq '/') { $desc = "$ldel$pattern$rdel$mod" }
- else { $desc = "m$ldel$pattern$rdel$mod" }
- $desc =~ s/\\/\\\\/g;
- $desc =~ s/\$$/\\\$/g;
- $desc =~ s/}/\\}/g;
- $desc =~ s/{/\\{/g;
-
- if (!eval "no strict;
- local \$SIG{__WARN__} = sub {0};
- '' =~ m$ldel$pattern$rdel" and $@)
- {
- Parse::RecDescent::_warn(3, "Token pattern \"m$ldel$pattern$rdel\"
- may not be a valid regular expression",
- $_[5]);
- $@ =~ s/ at \(eval.*/./;
- Parse::RecDescent::_hint($@);
- }
-
- # QUIETLY PREVENT (WELL-INTENTIONED) CALAMITY
- $mod =~ s/[gc]//g;
- $pattern =~ s/(\A|[^\\])\\G/$1/g;
-
- bless
- {
- "pattern" => $pattern,
- "ldelim" => $ldel,
- "rdelim" => $rdel,
- "mod" => $mod,
- "lookahead" => $_[4],
- "line" => $_[5],
- "description" => $desc,
- }, $class;
-}
-
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule, $check) = @_;
- my $ldel = $self->{"ldelim"};
- my $rdel = $self->{"rdelim"};
- my $sdel = $ldel;
- my $mod = $self->{"mod"};
-
- $sdel =~ s/[[{(<]/{}/;
-
-my $code = '
- Parse::RecDescent::_trace(q{Trying terminal: [' . $self->describe
- . ']}, Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $lastsep = "";
- $expectation->is(q{' . ($rule->hasleftmost($self) ? ''
- : $self->describe ) . '})->at($text);
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) . '
-
- ' . ($self->{"lookahead"}<0?'if':'unless')
- . ' ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and '
- . ($check->{itempos}? 'do {'.Parse::RecDescent::Production::incitempos().' 1} and ' : '')
- . ' $text =~ s' . $ldel . '\A(?:' . $self->{"pattern"} . ')'
- . $rdel . $sdel . $mod . ')
- {
- '.($self->{"lookahead"} ? '$text = $_savetext;' : '').'
- $expectation->failed();
- Parse::RecDescent::_trace(q{<<Didn\'t match terminal>>},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
-
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
- . $& . q{])},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- push @item, $item{'.$self->{hashname}.'}=$&;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-';
-
- return $code;
-}
-
-1;
-
-package Parse::RecDescent::Literal;
-
-sub sethashname { $_[0]->{hashname} = '__STRING' . ++$_[1]->{strcount} . '__'; }
-
-sub issubrule { undef }
-sub isterminal { 1 }
-sub describe ($) { shift->{'description'} }
-
-sub new ($$$$)
-{
- my $class = ref($_[0]) || $_[0];
-
- my $pattern = $_[1];
-
- my $desc = $pattern;
- $desc=~s/\\/\\\\/g;
- $desc=~s/}/\\}/g;
- $desc=~s/{/\\{/g;
-
- bless
- {
- "pattern" => $pattern,
- "lookahead" => $_[2],
- "line" => $_[3],
- "description" => "'$desc'",
- }, $class;
-}
-
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule, $check) = @_;
-
-my $code = '
- Parse::RecDescent::_trace(q{Trying terminal: [' . $self->describe
- . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $lastsep = "";
- $expectation->is(q{' . ($rule->hasleftmost($self) ? ''
- : $self->describe ) . '})->at($text);
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) . '
-
- ' . ($self->{"lookahead"}<0?'if':'unless')
- . ' ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and '
- . ($check->{itempos}? 'do {'.Parse::RecDescent::Production::incitempos().' 1} and ' : '')
- . ' $text =~ s/\A' . quotemeta($self->{"pattern"}) . '//)
- {
- '.($self->{"lookahead"} ? '$text = $_savetext;' : '').'
- $expectation->failed();
- Parse::RecDescent::_trace(qq{<<Didn\'t match terminal>>},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
- . $& . q{])},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- push @item, $item{'.$self->{hashname}.'}=$&;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-';
-
- return $code;
-}
-
-1;
-
-package Parse::RecDescent::InterpLit;
-
-sub sethashname { $_[0]->{hashname} = '__STRING' . ++$_[1]->{strcount} . '__'; }
-
-sub issubrule { undef }
-sub isterminal { 1 }
-sub describe ($) { shift->{'description'} }
-
-sub new ($$$$)
-{
- my $class = ref($_[0]) || $_[0];
-
- my $pattern = $_[1];
- $pattern =~ s#/#\\/#g;
-
- my $desc = $pattern;
- $desc=~s/\\/\\\\/g;
- $desc=~s/}/\\}/g;
- $desc=~s/{/\\{/g;
-
- bless
- {
- "pattern" => $pattern,
- "lookahead" => $_[2],
- "line" => $_[3],
- "description" => "'$desc'",
- }, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule, $check) = @_;
-
-my $code = '
- Parse::RecDescent::_trace(q{Trying terminal: [' . $self->describe
- . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{name} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $lastsep = "";
- $expectation->is(q{' . ($rule->hasleftmost($self) ? ''
- : $self->describe ) . '})->at($text);
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) . '
-
- ' . ($self->{"lookahead"}<0?'if':'unless')
- . ' ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and '
- . ($check->{itempos}? 'do {'.Parse::RecDescent::Production::incitempos().' 1} and ' : '')
- . ' do { $_tok = "' . $self->{"pattern"} . '"; 1 } and
- substr($text,0,length($_tok)) eq $_tok and
- do { substr($text,0,length($_tok)) = ""; 1; }
- )
- {
- '.($self->{"lookahead"} ? '$text = $_savetext;' : '').'
- $expectation->failed();
- Parse::RecDescent::_trace(q{<<Didn\'t match terminal>>},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
- . $_tok . q{])},
- Parse::RecDescent::_tracefirst($text))
- if defined $::RD_TRACE;
- push @item, $item{'.$self->{hashname}.'}=$_tok;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-';
-
- return $code;
-}
-
-1;
-
-package Parse::RecDescent::Subrule;
-
-sub issubrule ($) { return $_[0]->{"subrule"} }
-sub isterminal { 0 }
-sub sethashname {}
-
-sub describe ($)
-{
- my $desc = $_[0]->{"implicit"} || $_[0]->{"subrule"};
- $desc = "<matchrule:$desc>" if $_[0]->{"matchrule"};
- return $desc;
-}
-
-sub callsyntax($$)
-{
- if ($_[0]->{"matchrule"})
- {
- return "&{'$_[1]'.qq{$_[0]->{subrule}}}";
- }
- else
- {
- return $_[1].$_[0]->{"subrule"};
- }
-}
-
-sub new ($$$$;$$$)
-{
- my $class = ref($_[0]) || $_[0];
- bless
- {
- "subrule" => $_[1],
- "lookahead" => $_[2],
- "line" => $_[3],
- "implicit" => $_[4] || undef,
- "matchrule" => $_[5],
- "argcode" => $_[6] || undef,
- }, $class;
-}
-
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
-'
- Parse::RecDescent::_trace(q{Trying subrule: [' . $self->{"subrule"} . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(' . ($rule->hasleftmost($self) ? 'q{}'
- # WAS : 'qq{'.$self->describe.'}' ) . ')->at($text);
- : 'q{'.$self->describe.'}' ) . ')->at($text);
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' )
- . ($self->{"lookahead"}<0?'if':'unless')
- . ' (defined ($_tok = '
- . $self->callsyntax($namespace.'::')
- . '($thisparser,$text,$repeating,'
- . ($self->{"lookahead"}?'1':'$_noactions')
- . ($self->{argcode} ? ",sub { return $self->{argcode} }"
- : ',sub { \\@arg }')
- . ')))
- {
- '.($self->{"lookahead"} ? '$text = $_savetext;' : '').'
- Parse::RecDescent::_trace(q{<<Didn\'t match subrule: ['
- . $self->{subrule} . ']>>},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: ['
- . $self->{subrule} . ']<< (return value: [}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{' . $self->{subrule} . '}} = $_tok;
- push @item, $_tok;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
- }
-'
-}
-
-package Parse::RecDescent::Repetition;
-
-sub issubrule ($) { return $_[0]->{"subrule"} }
-sub isterminal { 0 }
-sub sethashname { }
-
-sub describe ($)
-{
- my $desc = $_[0]->{"expected"} || $_[0]->{"subrule"};
- $desc = "<matchrule:$desc>" if $_[0]->{"matchrule"};
- return $desc;
-}
-
-sub callsyntax($$)
-{
- if ($_[0]->{matchrule})
- { return "sub { goto &{''.qq{$_[1]$_[0]->{subrule}}} }"; }
- else
- { return "\\&$_[1]$_[0]->{subrule}"; }
-}
-
-sub new ($$$$$$$$$$)
-{
- my ($self, $subrule, $repspec, $min, $max, $lookahead, $line, $parser, $matchrule, $argcode) = @_;
- my $class = ref($self) || $self;
- ($max, $min) = ( $min, $max) if ($max<$min);
-
- my $desc;
- if ($subrule=~/\A_alternation_\d+_of_production_\d+_of_rule/)
- { $desc = $parser->{"rules"}{$subrule}->expected }
-
- if ($lookahead)
- {
- if ($min>0)
- {
- return new Parse::RecDescent::Subrule($subrule,$lookahead,$line,$desc,$matchrule,$argcode);
- }
- else
- {
- Parse::RecDescent::_error("Not symbol (\"!\") before
- \"$subrule\" doesn't make
- sense.",$line);
- Parse::RecDescent::_hint("Lookahead for negated optional
- repetitions (such as
- \"!$subrule($repspec)\" can never
- succeed, since optional items always
- match (zero times at worst).
- Did you mean a single \"!$subrule\",
- instead?");
- }
- }
- bless
- {
- "subrule" => $subrule,
- "repspec" => $repspec,
- "min" => $min,
- "max" => $max,
- "lookahead" => $lookahead,
- "line" => $line,
- "expected" => $desc,
- "argcode" => $argcode || undef,
- "matchrule" => $matchrule,
- }, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
- my ($subrule, $repspec, $min, $max, $lookahead) =
- @{$self}{ qw{subrule repspec min max lookahead} };
-
-'
- Parse::RecDescent::_trace(q{Trying repeated subrule: [' . $self->describe . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->is(' . ($rule->hasleftmost($self) ? 'q{}'
- # WAS : 'qq{'.$self->describe.'}' ) . ')->at($text);
- : 'q{'.$self->describe.'}' ) . ')->at($text);
- ' . ($self->{"lookahead"} ? '$_savetext = $text;' : '' ) .'
- unless (defined ($_tok = $thisparser->_parserepeat($text, '
- . $self->callsyntax($namespace.'::')
- . ', ' . $min . ', ' . $max . ', '
- . ($self->{"lookahead"}?'1':'$_noactions')
- . ',$expectation,'
- . ($self->{argcode} ? "sub { return $self->{argcode} }"
- : 'undef')
- . ')))
- {
- Parse::RecDescent::_trace(q{<<Didn\'t match repeated subrule: ['
- . $self->describe . ']>>},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched repeated subrule: ['
- . $self->{subrule} . ']<< (}
- . @$_tok . q{ times)},
-
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{' . "$self->{subrule}($self->{repspec})" . '}} = $_tok;
- push @item, $_tok;
- ' . ($self->{"lookahead"} ? '$text = $_savetext;' : '' ) .'
-
-'
-}
-
-package Parse::RecDescent::Result;
-
-sub issubrule { 0 }
-sub isterminal { 0 }
-sub describe { '' }
-
-sub new
-{
- my ($class, $pos) = @_;
-
- bless {}, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
- '
- $return = $item[-1];
- ';
-}
-
-package Parse::RecDescent::Operator;
-
-my @opertype = ( " non-optional", "n optional" );
-
-sub issubrule { 0 }
-sub isterminal { 0 }
-
-sub describe { $_[0]->{"expected"} }
-sub sethashname { $_[0]->{hashname} = '__DIRECTIVE' . ++$_[1]->{dircount} . '__'; }
-
-
-sub new
-{
- my ($class, $type, $minrep, $maxrep, $leftarg, $op, $rightarg) = @_;
-
- bless
- {
- "type" => "${type}op",
- "leftarg" => $leftarg,
- "op" => $op,
- "min" => $minrep,
- "max" => $maxrep,
- "rightarg" => $rightarg,
- "expected" => "<${type}op: ".$leftarg->describe." ".$op->describe." ".$rightarg->describe.">",
- }, $class;
-}
-
-sub code($$$$)
-{
- my ($self, $namespace, $rule) = @_;
-
- my ($leftarg, $op, $rightarg) =
- @{$self}{ qw{leftarg op rightarg} };
-
- my $code = '
- Parse::RecDescent::_trace(q{Trying operator: [' . $self->describe . ']},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} . '},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->is(' . ($rule->hasleftmost($self) ? 'q{}'
- # WAS : 'qq{'.$self->describe.'}' ) . ')->at($text);
- : 'q{'.$self->describe.'}' ) . ')->at($text);
-
- $_tok = undef;
- OPLOOP: while (1)
- {
- $repcount = 0;
- my @item;
- ';
-
- if ($self->{type} eq "leftop" )
- {
- $code .= '
- # MATCH LEFTARG
- ' . $leftarg->code(@_[1..2]) . '
-
- $repcount++;
-
- my $savetext = $text;
- my $backtrack;
-
- # MATCH (OP RIGHTARG)(s)
- while ($repcount < ' . $self->{max} . ')
- {
- $backtrack = 0;
- ' . $op->code(@_[1..2]) . '
- ' . ($op->isterminal() ? 'pop @item;' : '$backtrack=1;' ) . '
- ' . (ref($op) eq 'Parse::RecDescent::Token'
- ? 'if (defined $1) {push @item, $item{'.($self->{name}||$self->{hashname}).'}=$1; $backtrack=1;}'
- : "" ) . '
- ' . $rightarg->code(@_[1..2]) . '
- $savetext = $text;
- $repcount++;
- }
- $text = $savetext;
- pop @item if $backtrack;
-
- ';
- }
- else
- {
- $code .= '
- my $savetext = $text;
- my $backtrack;
- # MATCH (LEFTARG OP)(s)
- while ($repcount < ' . $self->{max} . ')
- {
- $backtrack = 0;
- ' . $leftarg->code(@_[1..2]) . '
- $repcount++;
- $backtrack = 1;
- ' . $op->code(@_[1..2]) . '
- $savetext = $text;
- ' . ($op->isterminal() ? 'pop @item;' : "" ) . '
- ' . (ref($op) eq 'Parse::RecDescent::Token' ? 'do { push @item, $item{'.($self->{name}||$self->{hashname}).'}=$1; } if defined $1;' : "" ) . '
- }
- $text = $savetext;
- pop @item if $backtrack;
-
- # MATCH RIGHTARG
- ' . $rightarg->code(@_[1..2]) . '
- $repcount++;
- ';
- }
-
- $code .= 'unless (@item) { undef $_tok; last }' unless $self->{min}==0;
-
- $code .= '
- $_tok = [ @item ];
- last;
- }
-
- unless ($repcount>='.$self->{min}.')
- {
- Parse::RecDescent::_trace(q{<<Didn\'t match operator: ['
- . $self->describe
- . ']>>},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched operator: ['
- . $self->describe
- . ']<< (return value: [}
- . qq{@{$_tok||[]}} . q{]},
- Parse::RecDescent::_tracefirst($text),
- q{' . $rule->{"name"} .'},
- $tracelevel)
- if defined $::RD_TRACE;
-
- push @item, $item{'.($self->{name}||$self->{hashname}).'}=$_tok||[];
-
-';
- return $code;
-}
-
-
-package Parse::RecDescent::Expectation;
-
-sub new ($)
-{
- bless {
- "failed" => 0,
- "expected" => "",
- "unexpected" => "",
- "lastexpected" => "",
- "lastunexpected" => "",
- "defexpected" => $_[1],
- };
-}
-
-sub is ($$)
-{
- $_[0]->{lastexpected} = $_[1]; return $_[0];
-}
-
-sub at ($$)
-{
- $_[0]->{lastunexpected} = $_[1]; return $_[0];
-}
-
-sub failed ($)
-{
- return unless $_[0]->{lastexpected};
- $_[0]->{expected} = $_[0]->{lastexpected} unless $_[0]->{failed};
- $_[0]->{unexpected} = $_[0]->{lastunexpected} unless $_[0]->{failed};
- $_[0]->{failed} = 1;
-}
-
-sub message ($)
-{
- my ($self) = @_;
- $self->{expected} = $self->{defexpected} unless $self->{expected};
- $self->{expected} =~ s/_/ /g;
- if (!$self->{unexpected} || $self->{unexpected} =~ /\A\s*\Z/s)
- {
- return "Was expecting $self->{expected}";
- }
- else
- {
- $self->{unexpected} =~ /\s*(.*)/;
- return "Was expecting $self->{expected} but found \"$1\" instead";
- }
-}
-
-1;
-
-package Parse::RecDescent;
-
-use Carp;
-use vars qw ( $AUTOLOAD $VERSION );
-
-my $ERRORS = 0;
-
-$VERSION = '1.94';
-
-# BUILDING A PARSER
-
-my $nextnamespace = "namespace000001";
-
-sub _nextnamespace()
-{
- return "Parse::RecDescent::" . $nextnamespace++;
-}
-
-sub new ($$$)
-{
- my $class = ref($_[0]) || $_[0];
- local $Parse::RecDescent::compiling = $_[2];
- my $name_space_name = defined $_[3]
- ? "Parse::RecDescent::".$_[3]
- : _nextnamespace();
- my $self =
- {
- "rules" => {},
- "namespace" => $name_space_name,
- "startcode" => '',
- "localvars" => '',
- "_AUTOACTION" => undef,
- "_AUTOTREE" => undef,
- };
- if ($::RD_AUTOACTION)
- {
- my $sourcecode = $::RD_AUTOACTION;
- $sourcecode = "{ $sourcecode }"
- unless $sourcecode =~ /\A\s*\{.*\}\s*\Z/;
- $self->{_check}{itempos} =
- $sourcecode =~ /\@itempos\b|\$itempos\s*\[/;
- $self->{_AUTOACTION}
- = new Parse::RecDescent::Action($sourcecode,0,-1)
- }
-
- bless $self, $class;
- shift;
- return $self->Replace(@_)
-}
-
-sub Compile($$$$) {
-
- die "Compilation of Parse::RecDescent grammars not yet implemented\n";
-}
-
-sub DESTROY {} # SO AUTOLOADER IGNORES IT
-
-# BUILDING A GRAMMAR....
-
-sub Replace ($$)
-{
- splice(@_, 2, 0, 1);
- return _generate(@_);
-}
-
-sub Extend ($$)
-{
- splice(@_, 2, 0, 0);
- return _generate(@_);
-}
-
-sub _no_rule ($$;$)
-{
- _error("Ruleless $_[0] at start of grammar.",$_[1]);
- my $desc = $_[2] ? "\"$_[2]\"" : "";
- _hint("You need to define a rule for the $_[0] $desc
- to be part of.");
-}
-
-my $NEGLOOKAHEAD = '\G(\s*\.\.\.\!)';
-my $POSLOOKAHEAD = '\G(\s*\.\.\.)';
-my $RULE = '\G\s*(\w+)[ \t]*:';
-my $PROD = '\G\s*([|])';
-my $TOKEN = q{\G\s*/((\\\\/|[^/])*)/([cgimsox]*)};
-my $MTOKEN = q{\G\s*(m\s*[^\w\s])};
-my $LITERAL = q{\G\s*'((\\\\['\\\\]|[^'])*)'};
-my $INTERPLIT = q{\G\s*"((\\\\["\\\\]|[^"])*)"};
-my $SUBRULE = '\G\s*(\w+)';
-my $MATCHRULE = '\G(\s*<matchrule:)';
-my $SIMPLEPAT = '((\\s+/[^/\\\\]*(?:\\\\.[^/\\\\]*)*/)?)';
-my $OPTIONAL = '\G\((\?)'.$SIMPLEPAT.'\)';
-my $ANY = '\G\((s\?)'.$SIMPLEPAT.'\)';
-my $MANY = '\G\((s|\.\.)'.$SIMPLEPAT.'\)';
-my $EXACTLY = '\G\(([1-9]\d*)'.$SIMPLEPAT.'\)';
-my $BETWEEN = '\G\((\d+)\.\.([1-9]\d*)'.$SIMPLEPAT.'\)';
-my $ATLEAST = '\G\((\d+)\.\.'.$SIMPLEPAT.'\)';
-my $ATMOST = '\G\(\.\.([1-9]\d*)'.$SIMPLEPAT.'\)';
-my $BADREP = '\G\((-?\d+)?\.\.(-?\d+)?'.$SIMPLEPAT.'\)';
-my $ACTION = '\G\s*\{';
-my $IMPLICITSUBRULE = '\G\s*\(';
-my $COMMENT = '\G\s*(#.*)';
-my $COMMITMK = '\G\s*<commit>';
-my $UNCOMMITMK = '\G\s*<uncommit>';
-my $QUOTELIKEMK = '\G\s*<perl_quotelike>';
-my $CODEBLOCKMK = '\G\s*<perl_codeblock(?:\s+([][()<>{}]+))?>';
-my $VARIABLEMK = '\G\s*<perl_variable>';
-my $NOCHECKMK = '\G\s*<nocheck>';
-my $AUTOTREEMK = '\G\s*<autotree>';
-my $AUTOSTUBMK = '\G\s*<autostub>';
-my $AUTORULEMK = '\G\s*<autorule:(.*?)>';
-my $REJECTMK = '\G\s*<reject>';
-my $CONDREJECTMK = '\G\s*<reject:';
-my $SCOREMK = '\G\s*<score:';
-my $AUTOSCOREMK = '\G\s*<autoscore:';
-my $SKIPMK = '\G\s*<skip:';
-my $OPMK = '\G\s*<(left|right)op(?:=(\'.*?\'))?:';
-my $ENDDIRECTIVEMK = '\G\s*>';
-my $RESYNCMK = '\G\s*<resync>';
-my $RESYNCPATMK = '\G\s*<resync:';
-my $RULEVARPATMK = '\G\s*<rulevar:';
-my $DEFERPATMK = '\G\s*<defer:';
-my $TOKENPATMK = '\G\s*<token:';
-my $AUTOERRORMK = '\G\s*<error(\??)>';
-my $MSGERRORMK = '\G\s*<error(\??):';
-my $UNCOMMITPROD = $PROD.'\s*<uncommit';
-my $ERRORPROD = $PROD.'\s*<error';
-my $LONECOLON = '\G\s*:';
-my $OTHER = '\G\s*([^\s]+)';
-
-my $lines = 0;
-
-sub _generate($$$;$$)
-{
- my ($self, $grammar, $replace, $isimplicit, $isleftop) = (@_, 0);
-
- my $aftererror = 0;
- my $lookahead = 0;
- my $lookaheadspec = "";
- $lines = _linecount($grammar) unless $lines;
- $self->{_check}{itempos} = ($grammar =~ /\@itempos\b|\$itempos\s*\[/)
- unless $self->{_check}{itempos};
- for (qw(thisoffset thiscolumn prevline prevoffset prevcolumn))
- {
- $self->{_check}{$_} =
- ($grammar =~ /\$$_/) || $self->{_check}{itempos}
- unless $self->{_check}{$_};
- }
- my $line;
-
- my $rule = undef;
- my $prod = undef;
- my $item = undef;
- my $lastgreedy = '';
- pos $grammar = 0;
- study $grammar;
-
- while (pos $grammar < length $grammar)
- {
- $line = $lines - _linecount($grammar) + 1;
- my $commitonly;
- my $code = "";
- my @components = ();
- if ($grammar =~ m/$COMMENT/gco)
- {
- _parse("a comment",0,$line);
- next;
- }
- elsif ($grammar =~ m/$NEGLOOKAHEAD/gco)
- {
- _parse("a negative lookahead",$aftererror,$line);
- $lookahead = $lookahead ? -$lookahead : -1;
- $lookaheadspec .= $1;
- next; # SKIP LOOKAHEAD RESET AT END OF while LOOP
- }
- elsif ($grammar =~ m/$POSLOOKAHEAD/gco)
- {
- _parse("a positive lookahead",$aftererror,$line);
- $lookahead = $lookahead ? $lookahead : 1;
- $lookaheadspec .= $1;
- next; # SKIP LOOKAHEAD RESET AT END OF while LOOP
- }
- elsif ($grammar =~ m/(?=$ACTION)/gco
- and do { ($code) = extract_codeblock($grammar); $code })
- {
- _parse("an action", $aftererror, $line, $code);
- $item = new Parse::RecDescent::Action($code,$lookahead,$line);
- $prod and $prod->additem($item)
- or $self->_addstartcode($code);
- }
- elsif ($grammar =~ m/(?=$IMPLICITSUBRULE)/gco
- and do { ($code) = extract_codeblock($grammar,'{([',undef,'(',1);
- $code })
- {
- $code =~ s/\A\s*\(|\)\Z//g;
- _parse("an implicit subrule", $aftererror, $line,
- "( $code )");
- my $implicit = $rule->nextimplicit;
- $self->_generate("$implicit : $code",$replace,1);
- my $pos = pos $grammar;
- substr($grammar,$pos,0,$implicit);
- pos $grammar = $pos;;
- }
- elsif ($grammar =~ m/$ENDDIRECTIVEMK/gco)
- {
-
- # EXTRACT TRAILING REPETITION SPECIFIER (IF ANY)
-
- my ($minrep,$maxrep) = (1,$MAXREP);
- if ($grammar =~ m/\G[(]/gc)
- {
- pos($grammar)--;
-
- if ($grammar =~ m/$OPTIONAL/gco)
- { ($minrep, $maxrep) = (0,1) }
- elsif ($grammar =~ m/$ANY/gco)
- { $minrep = 0 }
- elsif ($grammar =~ m/$EXACTLY/gco)
- { ($minrep, $maxrep) = ($1,$1) }
- elsif ($grammar =~ m/$BETWEEN/gco)
- { ($minrep, $maxrep) = ($1,$2) }
- elsif ($grammar =~ m/$ATLEAST/gco)
- { $minrep = $1 }
- elsif ($grammar =~ m/$ATMOST/gco)
- { $maxrep = $1 }
- elsif ($grammar =~ m/$MANY/gco)
- { }
- elsif ($grammar =~ m/$BADREP/gco)
- {
- _parse("an invalid repetition specifier", 0,$line);
- _error("Incorrect specification of a repeated directive",
- $line);
- _hint("Repeated directives cannot have
- a maximum repetition of zero, nor can they have
- negative components in their ranges.");
- }
- }
-
- $prod && $prod->enddirective($line,$minrep,$maxrep);
- }
- elsif ($grammar =~ m/\G\s*<[^m]/gc)
- {
- pos($grammar)-=2;
-
- if ($grammar =~ m/$OPMK/gco)
- {
- # $DB::single=1;
- _parse("a $1-associative operator directive", $aftererror, $line, "<$1op:...>");
- $prod->adddirective($1, $line,$2||'');
- }
- elsif ($grammar =~ m/$UNCOMMITMK/gco)
- {
- _parse("an uncommit marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive('$commit=0;1',
- $lookahead,$line,"<uncommit>");
- $prod and $prod->additem($item)
- or _no_rule("<uncommit>",$line);
- }
- elsif ($grammar =~ m/$QUOTELIKEMK/gco)
- {
- _parse("an perl quotelike marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive(
- 'my ($match,@res);
- ($match,$text,undef,@res) =
- Text::Balanced::extract_quotelike($text,$skip);
- $match ? \@res : undef;
- ', $lookahead,$line,"<perl_quotelike>");
- $prod and $prod->additem($item)
- or _no_rule("<perl_quotelike>",$line);
- }
- elsif ($grammar =~ m/$CODEBLOCKMK/gco)
- {
- my $outer = $1||"{}";
- _parse("an perl codeblock marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive(
- 'Text::Balanced::extract_codeblock($text,undef,$skip,\''.$outer.'\');
- ', $lookahead,$line,"<perl_codeblock>");
- $prod and $prod->additem($item)
- or _no_rule("<perl_codeblock>",$line);
- }
- elsif ($grammar =~ m/$VARIABLEMK/gco)
- {
- _parse("an perl variable marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive(
- 'Text::Balanced::extract_variable($text,$skip);
- ', $lookahead,$line,"<perl_variable>");
- $prod and $prod->additem($item)
- or _no_rule("<perl_variable>",$line);
- }
- elsif ($grammar =~ m/$NOCHECKMK/gco)
- {
- _parse("a disable checking marker", $aftererror,$line);
- if ($rule)
- {
- _error("<nocheck> directive not at start of grammar", $line);
- _hint("The <nocheck> directive can only
- be specified at the start of a
- grammar (before the first rule
- is defined.");
- }
- else
- {
- local $::RD_CHECK = 1;
- }
- }
- elsif ($grammar =~ m/$AUTOSTUBMK/gco)
- {
- _parse("an autostub marker", $aftererror,$line);
- $::RD_AUTOSTUB = "";
- }
- elsif ($grammar =~ m/$AUTORULEMK/gco)
- {
- _parse("an autorule marker", $aftererror,$line);
- $::RD_AUTOSTUB = $1;
- }
- elsif ($grammar =~ m/$AUTOTREEMK/gco)
- {
- _parse("an autotree marker", $aftererror,$line);
- if ($rule)
- {
- _error("<autotree> directive not at start of grammar", $line);
- _hint("The <autotree> directive can only
- be specified at the start of a
- grammar (before the first rule
- is defined.");
- }
- else
- {
- undef $self->{_AUTOACTION};
- $self->{_AUTOTREE}{NODE}
- = new Parse::RecDescent::Action(q{{bless \%item, $item[0]}},0,-1);
- $self->{_AUTOTREE}{TERMINAL}
- = new Parse::RecDescent::Action(q{{bless {__VALUE__=>$item[1]}, $item[0]}},0,-1);
- }
- }
-
- elsif ($grammar =~ m/$REJECTMK/gco)
- {
- _parse("an reject marker", $aftererror,$line);
- $item = new Parse::RecDescent::UncondReject($lookahead,$line,"<reject>");
- $prod and $prod->additem($item)
- or _no_rule("<reject>",$line);
- }
- elsif ($grammar =~ m/(?=$CONDREJECTMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code })
- {
- _parse("a (conditional) reject marker", $aftererror,$line);
- $code =~ /\A\s*<reject:(.*)>\Z/s;
- $item = new Parse::RecDescent::Directive(
- "($1) ? undef : 1", $lookahead,$line,"<reject:$code>");
- $prod and $prod->additem($item)
- or _no_rule("<reject:$code>",$line);
- }
- elsif ($grammar =~ m/(?=$SCOREMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code })
- {
- _parse("a score marker", $aftererror,$line);
- $code =~ /\A\s*<score:(.*)>\Z/s;
- $prod and $prod->addscore($1, $lookahead, $line)
- or _no_rule($code,$line);
- }
- elsif ($grammar =~ m/(?=$AUTOSCOREMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code;
- } )
- {
- _parse("an autoscore specifier", $aftererror,$line,$code);
- $code =~ /\A\s*<autoscore:(.*)>\Z/s;
-
- $rule and $rule->addautoscore($1,$self)
- or _no_rule($code,$line);
-
- $item = new Parse::RecDescent::UncondReject($lookahead,$line,$code);
- $prod and $prod->additem($item)
- or _no_rule($code,$line);
- }
- elsif ($grammar =~ m/$RESYNCMK/gco)
- {
- _parse("a resync to newline marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive(
- 'if ($text =~ s/\A[^\n]*\n//) { $return = 0; $& } else { undef }',
- $lookahead,$line,"<resync>");
- $prod and $prod->additem($item)
- or _no_rule("<resync>",$line);
- }
- elsif ($grammar =~ m/(?=$RESYNCPATMK)/gco
- and do { ($code) = extract_bracketed($grammar,'<');
- $code })
- {
- _parse("a resync with pattern marker", $aftererror,$line);
- $code =~ /\A\s*<resync:(.*)>\Z/s;
- $item = new Parse::RecDescent::Directive(
- 'if ($text =~ s/\A'.$1.'//) { $return = 0; $& } else { undef }',
- $lookahead,$line,$code);
- $prod and $prod->additem($item)
- or _no_rule($code,$line);
- }
- elsif ($grammar =~ m/(?=$SKIPMK)/gco
- and do { ($code) = extract_codeblock($grammar,'<');
- $code })
- {
- _parse("a skip marker", $aftererror,$line);
- $code =~ /\A\s*<skip:(.*)>\Z/s;
- $item = new Parse::RecDescent::Directive(
- 'my $oldskip = $skip; $skip='.$1.'; $oldskip',
- $lookahead,$line,$code);
- $prod and $prod->additem($item)
- or _no_rule($code,$line);
- }
- elsif ($grammar =~ m/(?=$RULEVARPATMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code;
- } )
- {
- _parse("a rule variable specifier", $aftererror,$line,$code);
- $code =~ /\A\s*<rulevar:(.*)>\Z/s;
-
- $rule and $rule->addvar($1,$self)
- or _no_rule($code,$line);
-
- $item = new Parse::RecDescent::UncondReject($lookahead,$line,$code);
- $prod and $prod->additem($item)
- or _no_rule($code,$line);
- }
- elsif ($grammar =~ m/(?=$DEFERPATMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code;
- } )
- {
- _parse("a deferred action specifier", $aftererror,$line,$code);
- $code =~ s/\A\s*<defer:(.*)>\Z/$1/s;
- if ($code =~ /\A\s*[^{]|[^}]\s*\Z/)
- {
- $code = "{ $code }"
- }
-
- $item = new Parse::RecDescent::Directive(
- "push \@{\$thisparser->{deferred}}, sub $code;",
- $lookahead,$line,"<defer:$code>");
- $prod and $prod->additem($item)
- or _no_rule("<defer:$code>",$line);
-
- $self->{deferrable} = 1;
- }
- elsif ($grammar =~ m/(?=$TOKENPATMK)/gco
- and do { ($code) = extract_codeblock($grammar,'{',undef,'<');
- $code;
- } )
- {
- _parse("a token constructor", $aftererror,$line,$code);
- $code =~ s/\A\s*<token:(.*)>\Z/$1/s;
-
- my $types = eval 'no strict; local $SIG{__WARN__} = sub {0}; my @arr=('.$code.'); @arr' || ();
- if (!$types)
- {
- _error("Incorrect token specification: \"$@\"", $line);
- _hint("The <token:...> directive requires a list
- of one or more strings representing possible
- types of the specified token. For example:
- <token:NOUN,VERB>");
- }
- else
- {
- $item = new Parse::RecDescent::Directive(
- 'no strict;
- $return = { text => $item[-1] };
- @{$return->{type}}{'.$code.'} = (1..'.$types.');',
- $lookahead,$line,"<token:$code>");
- $prod and $prod->additem($item)
- or _no_rule("<token:$code>",$line);
- }
- }
- elsif ($grammar =~ m/$COMMITMK/gco)
- {
- _parse("an commit marker", $aftererror,$line);
- $item = new Parse::RecDescent::Directive('$commit = 1',
- $lookahead,$line,"<commit>");
- $prod and $prod->additem($item)
- or _no_rule("<commit>",$line);
- }
- elsif ($grammar =~ m/$AUTOERRORMK/gco)
- {
- $commitonly = $1;
- _parse("an error marker", $aftererror,$line);
- $item = new Parse::RecDescent::Error('',$lookahead,$1,$line);
- $prod and $prod->additem($item)
- or _no_rule("<error>",$line);
- $aftererror = !$commitonly;
- }
- elsif ($grammar =~ m/(?=$MSGERRORMK)/gco
- and do { $commitonly = $1;
- ($code) = extract_bracketed($grammar,'<');
- $code })
- {
- _parse("an error marker", $aftererror,$line,$code);
- $code =~ /\A\s*<error\??:(.*)>\Z/s;
- $item = new Parse::RecDescent::Error($1,$lookahead,$commitonly,$line);
- $prod and $prod->additem($item)
- or _no_rule("$code",$line);
- $aftererror = !$commitonly;
- }
- elsif (do { $commitonly = $1;
- ($code) = extract_bracketed($grammar,'<');
- $code })
- {
- if ($code =~ /^<[A-Z_]+>$/)
- {
- _error("Token items are not yet
- supported: \"$code\"",
- $line);
- _hint("Items like $code that consist of angle
- brackets enclosing a sequence of
- uppercase characters will eventually
- be used to specify pre-lexed tokens
- in a grammar. That functionality is not
- yet implemented. Or did you misspell
- \"$code\"?");
- }
- else
- {
- _error("Untranslatable item encountered: \"$code\"",
- $line);
- _hint("Did you misspell \"$code\"
- or forget to comment it out?");
- }
- }
- }
- elsif ($grammar =~ m/$RULE/gco)
- {
- _parseunneg("a rule declaration", 0,
- $lookahead,$line) or next;
- my $rulename = $1;
- if ($rulename =~ /Replace|Extend|Precompile|Save/ )
- {
- _warn(2,"Rule \"$rulename\" hidden by method
- Parse::RecDescent::$rulename",$line)
- and
- _hint("The rule named \"$rulename\" cannot be directly
- called through the Parse::RecDescent object
- for this grammar (although it may still
- be used as a subrule of other rules).
- It can't be directly called because
- Parse::RecDescent::$rulename is already defined (it
- is the standard method of all
- parsers).");
- }
- $rule = new Parse::RecDescent::Rule($rulename,$self,$line,$replace);
- $prod->check_pending($line) if $prod;
- $prod = $rule->addprod( new Parse::RecDescent::Production );
- $aftererror = 0;
- }
- elsif ($grammar =~ m/$UNCOMMITPROD/gco)
- {
- pos($grammar)-=9;
- _parseunneg("a new (uncommitted) production",
- 0, $lookahead, $line) or next;
-
- $prod->check_pending($line) if $prod;
- $prod = new Parse::RecDescent::Production($line,1);
- $rule and $rule->addprod($prod)
- or _no_rule("<uncommit>",$line);
- $aftererror = 0;
- }
- elsif ($grammar =~ m/$ERRORPROD/gco)
- {
- pos($grammar)-=6;
- _parseunneg("a new (error) production", $aftererror,
- $lookahead,$line) or next;
- $prod->check_pending($line) if $prod;
- $prod = new Parse::RecDescent::Production($line,0,1);
- $rule and $rule->addprod($prod)
- or _no_rule("<error>",$line);
- $aftererror = 0;
- }
- elsif ($grammar =~ m/$PROD/gco)
- {
- _parseunneg("a new production", 0,
- $lookahead,$line) or next;
- $rule
- and (!$prod || $prod->check_pending($line))
- and $prod = $rule->addprod(new Parse::RecDescent::Production($line))
- or _no_rule("production",$line);
- $aftererror = 0;
- }
- elsif ($grammar =~ m/$LITERAL/gco)
- {
- ($code = $1) =~ s/\\\\/\\/g;
- _parse("a literal terminal", $aftererror,$line,$1);
- $item = new Parse::RecDescent::Literal($code,$lookahead,$line);
- $prod and $prod->additem($item)
- or _no_rule("literal terminal",$line,"'$1'");
- }
- elsif ($grammar =~ m/$INTERPLIT/gco)
- {
- _parse("an interpolated literal terminal", $aftererror,$line);
- $item = new Parse::RecDescent::InterpLit($1,$lookahead,$line);
- $prod and $prod->additem($item)
- or _no_rule("interpolated literal terminal",$line,"'$1'");
- }
- elsif ($grammar =~ m/$TOKEN/gco)
- {
- _parse("a /../ pattern terminal", $aftererror,$line);
- $item = new Parse::RecDescent::Token($1,'/',$3?$3:'',$lookahead,$line);
- $prod and $prod->additem($item)
- or _no_rule("pattern terminal",$line,"/$1/");
- }
- elsif ($grammar =~ m/(?=$MTOKEN)/gco
- and do { ($code, undef, @components)
- = extract_quotelike($grammar);
- $code }
- )
-
- {
- _parse("an m/../ pattern terminal", $aftererror,$line,$code);
- $item = new Parse::RecDescent::Token(@components[3,2,8],
- $lookahead,$line);
- $prod and $prod->additem($item)
- or _no_rule("pattern terminal",$line,$code);
- }
- elsif ($grammar =~ m/(?=$MATCHRULE)/gco
- and do { ($code) = extract_bracketed($grammar,'<');
- $code
- }
- or $grammar =~ m/$SUBRULE/gco
- and $code = $1)
- {
- my $name = $code;
- my $matchrule = 0;
- if (substr($name,0,1) eq '<')
- {
- $name =~ s/$MATCHRULE\s*//;
- $name =~ s/\s*>\Z//;
- $matchrule = 1;
- }
-
- # EXTRACT TRAILING ARG LIST (IF ANY)
-
- my ($argcode) = extract_codeblock($grammar, "[]",'') || '';
-
- # EXTRACT TRAILING REPETITION SPECIFIER (IF ANY)
-
- if ($grammar =~ m/\G[(]/gc)
- {
- pos($grammar)--;
-
- if ($grammar =~ m/$OPTIONAL/gco)
- {
- _parse("an zero-or-one subrule match", $aftererror,$line,"$code$argcode($1)");
- $item = new Parse::RecDescent::Repetition($name,$1,0,1,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1)");
-
- !$matchrule and $rule and $rule->addcall($name);
- }
- elsif ($grammar =~ m/$ANY/gco)
- {
- _parse("a zero-or-more subrule match", $aftererror,$line,"$code$argcode($1)");
- if ($2)
- {
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name(s?)': $name $2 $name>(s?) ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,$1,0,$MAXREP,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1)");
-
- !$matchrule and $rule and $rule->addcall($name);
-
- _check_insatiable($name,$1,$grammar,$line) if $::RD_CHECK;
- }
- }
- elsif ($grammar =~ m/$MANY/gco)
- {
- _parse("a one-or-more subrule match", $aftererror,$line,"$code$argcode($1)");
- if ($2)
- {
- # $DB::single=1;
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name(s)': $name $2 $name> ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,$1,1,$MAXREP,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
-
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1)");
-
- !$matchrule and $rule and $rule->addcall($name);
-
- _check_insatiable($name,$1,$grammar,$line) if $::RD_CHECK;
- }
- }
- elsif ($grammar =~ m/$EXACTLY/gco)
- {
- _parse("an exactly-$1-times subrule match", $aftererror,$line,"$code$argcode($1)");
- if ($2)
- {
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name($1)': $name $2 $name>($1) ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,$1,$1,$1,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1)");
-
- !$matchrule and $rule and $rule->addcall($name);
- }
- }
- elsif ($grammar =~ m/$BETWEEN/gco)
- {
- _parse("a $1-to-$2 subrule match", $aftererror,$line,"$code$argcode($1..$2)");
- if ($3)
- {
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name($1..$2)': $name $3 $name>($1..$2) ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,"$1..$2",$1,$2,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1..$2)");
-
- !$matchrule and $rule and $rule->addcall($name);
- }
- }
- elsif ($grammar =~ m/$ATLEAST/gco)
- {
- _parse("a $1-or-more subrule match", $aftererror,$line,"$code$argcode($1..)");
- if ($2)
- {
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name($1..)': $name $2 $name>($1..) ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,"$1..",$1,$MAXREP,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode($1..)");
-
- !$matchrule and $rule and $rule->addcall($name);
- _check_insatiable($name,"$1..",$grammar,$line) if $::RD_CHECK;
- }
- }
- elsif ($grammar =~ m/$ATMOST/gco)
- {
- _parse("a one-to-$1 subrule match", $aftererror,$line,"$code$argcode(..$1)");
- if ($2)
- {
- my $pos = pos $grammar;
- substr($grammar,$pos,0,
- "<leftop='$name(..$1)': $name $2 $name>(..$1) ");
-
- pos $grammar = $pos;
- }
- else
- {
- $item = new Parse::RecDescent::Repetition($name,"..$1",1,$1,
- $lookahead,$line,
- $self,
- $matchrule,
- $argcode);
- $prod and $prod->additem($item)
- or _no_rule("repetition",$line,"$code$argcode(..$1)");
-
- !$matchrule and $rule and $rule->addcall($name);
- }
- }
- elsif ($grammar =~ m/$BADREP/gco)
- {
- _parse("an subrule match with invalid repetition specifier", 0,$line);
- _error("Incorrect specification of a repeated subrule",
- $line);
- _hint("Repeated subrules like \"$code$argcode$&\" cannot have
- a maximum repetition of zero, nor can they have
- negative components in their ranges.");
- }
- }
- else
- {
- _parse("a subrule match", $aftererror,$line,$code);
- my $desc;
- if ($name=~/\A_alternation_\d+_of_production_\d+_of_rule/)
- { $desc = $self->{"rules"}{$name}->expected }
- $item = new Parse::RecDescent::Subrule($name,
- $lookahead,
- $line,
- $desc,
- $matchrule,
- $argcode);
-
- $prod and $prod->additem($item)
- or _no_rule("(sub)rule",$line,$name);
-
- !$matchrule and $rule and $rule->addcall($name);
- }
- }
- elsif ($grammar =~ m/$LONECOLON/gco )
- {
- _error("Unexpected colon encountered", $line);
- _hint("Did you mean \"|\" (to start a new production)?
- Or perhaps you forgot that the colon
- in a rule definition must be
- on the same line as the rule name?");
- }
- elsif ($grammar =~ m/$ACTION/gco ) # BAD ACTION, ALREADY FAILED
- {
- _error("Malformed action encountered",
- $line);
- _hint("Did you forget the closing curly bracket
- or is there a syntax error in the action?");
- }
- elsif ($grammar =~ m/$OTHER/gco )
- {
- _error("Untranslatable item encountered: \"$1\"",
- $line);
- _hint("Did you misspell \"$1\"
- or forget to comment it out?");
- }
-
- if ($lookaheadspec =~ tr /././ > 3)
- {
- $lookaheadspec =~ s/\A\s+//;
- $lookahead = $lookahead<0
- ? 'a negative lookahead ("...!")'
- : 'a positive lookahead ("...")' ;
- _warn(1,"Found two or more lookahead specifiers in a
- row.",$line)
- and
- _hint("Multiple positive and/or negative lookaheads
- are simply multiplied together to produce a
- single positive or negative lookahead
- specification. In this case the sequence
- \"$lookaheadspec\" was reduced to $lookahead.
- Was this your intention?");
- }
- $lookahead = 0;
- $lookaheadspec = "";
-
- $grammar =~ m/\G\s+/gc;
- }
-
- unless ($ERRORS or $isimplicit or !$::RD_CHECK)
- {
- $self->_check_grammar();
- }
-
- unless ($ERRORS or $isimplicit or $Parse::RecDescent::compiling)
- {
- my $code = $self->_code();
- if (defined $::RD_TRACE)
- {
- print STDERR "printing code (", length($code),") to RD_TRACE\n";
- local *TRACE_FILE;
- open TRACE_FILE, ">RD_TRACE"
- and print TRACE_FILE "my \$ERRORS;\n$code"
- and close TRACE_FILE;
- }
-
- unless ( eval "$code 1" )
- {
- _error("Internal error in generated parser code!");
- $@ =~ s/at grammar/in grammar at/;
- _hint($@);
- }
- }
-
- if ($ERRORS and !_verbosity("HINT"))
- {
- local $::RD_HINT = 1;
- _hint('Set $::RD_HINT (or -RD_HINT if you\'re using "perl -s")
- for hints on fixing these problems.');
- }
- if ($ERRORS) { $ERRORS=0; return }
- return $self;
-}
-
-
-sub _addstartcode($$)
-{
- my ($self, $code) = @_;
- $code =~ s/\A\s*\{(.*)\}\Z/$1/s;
-
- $self->{"startcode"} .= "$code;\n";
-}
-
-# CHECK FOR GRAMMAR PROBLEMS....
-
-sub _check_insatiable($$$$)
-{
- my ($subrule,$repspec,$grammar,$line) = @_;
- pos($grammar)=pos($_[2]);
- return if $grammar =~ m/$OPTIONAL/gco || $grammar =~ m/$ANY/gco;
- my $min = 1;
- if ( $grammar =~ m/$MANY/gco
- || $grammar =~ m/$EXACTLY/gco
- || $grammar =~ m/$ATMOST/gco
- || $grammar =~ m/$BETWEEN/gco && do { $min=$2; 1 }
- || $grammar =~ m/$ATLEAST/gco && do { $min=$2; 1 }
- || $grammar =~ m/$SUBRULE(?!\s*:)/gco
- )
- {
- return unless $1 eq $subrule && $min > 0;
- _warn(3,"Subrule sequence \"$subrule($repspec) $&\" will
- (almost certainly) fail.",$line)
- and
- _hint("Unless subrule \"$subrule\" performs some cunning
- lookahead, the repetition \"$subrule($repspec)\" will
- insatiably consume as many matches of \"$subrule\" as it
- can, leaving none to match the \"$&\" that follows.");
- }
-}
-
-sub _check_grammar ($)
-{
- my $self = shift;
- my $rules = $self->{"rules"};
- my $rule;
- foreach $rule ( values %$rules )
- {
- next if ! $rule->{"changed"};
-
- # CHECK FOR UNDEFINED RULES
-
- my $call;
- foreach $call ( @{$rule->{"calls"}} )
- {
- if (!defined ${$rules}{$call}
- &&!defined &{"Parse::RecDescent::$call"})
- {
- if (!defined $::RD_AUTOSTUB)
- {
- _warn(3,"Undefined (sub)rule \"$call\"
- used in a production.")
- and
- _hint("Will you be providing this rule
- later, or did you perhaps
- misspell \"$call\"? Otherwise
- it will be treated as an
- immediate <reject>.");
- eval "sub $self->{namespace}::$call {undef}";
- }
- else # EXPERIMENTAL
- {
- my $rule = $::RD_AUTOSTUB || qq{'$call'};
- _warn(1,"Autogenerating rule: $call")
- and
- _hint("A call was made to a subrule
- named \"$call\", but no such
- rule was specified. However,
- since \$::RD_AUTOSTUB
- was defined, a rule stub
- ($call : $rule) was
- automatically created.");
-
- $self->_generate("$call : $rule",0,1);
- }
- }
- }
-
- # CHECK FOR LEFT RECURSION
-
- if ($rule->isleftrec($rules))
- {
- _error("Rule \"$rule->{name}\" is left-recursive.");
- _hint("Redesign the grammar so it's not left-recursive.
- That will probably mean you need to re-implement
- repetitions using the '(s)' notation.
- For example: \"$rule->{name}(s)\".");
- next;
- }
- }
-}
-
-# GENERATE ACTUAL PARSER CODE
-
-sub _code($)
-{
- my $self = shift;
- my $code = qq{
-package $self->{namespace};
-use strict;
-use vars qw(\$skip \$AUTOLOAD $self->{localvars} );
-\$skip = '$skip';
-$self->{startcode}
-
-{
-local \$SIG{__WARN__} = sub {0};
-# PRETEND TO BE IN Parse::RecDescent NAMESPACE
-*$self->{namespace}::AUTOLOAD = sub
-{
- no strict 'refs';
- \$AUTOLOAD =~ s/^$self->{namespace}/Parse::RecDescent/;
- goto &{\$AUTOLOAD};
-}
-}
-
-};
- $code .= "push \@$self->{namespace}\::ISA, 'Parse::RecDescent';";
- $self->{"startcode"} = '';
-
- my $rule;
- foreach $rule ( values %{$self->{"rules"}} )
- {
- if ($rule->{"changed"})
- {
- $code .= $rule->code($self->{"namespace"},$self);
- $rule->{"changed"} = 0;
- }
- }
-
- return $code;
-}
-
-
-# EXECUTING A PARSE....
-
-sub AUTOLOAD # ($parser, $text; $linenum, @args)
-{
- croak "Could not find method: $AUTOLOAD\n" unless ref $_[0];
- my $class = ref($_[0]) || $_[0];
- my $text = ref($_[1]) ? ${$_[1]} : $_[1];
- $_[0]->{lastlinenum} = $_[2]||_linecount($_[1]);
- $_[0]->{lastlinenum} = _linecount($_[1]);
- $_[0]->{lastlinenum} += $_[2] if @_ > 2;
- $_[0]->{offsetlinenum} = $_[0]->{lastlinenum};
- $_[0]->{fulltext} = $text;
- $_[0]->{fulltextlen} = length $text;
- $_[0]->{deferred} = [];
- $_[0]->{errors} = [];
- my @args = @_[3..$#_];
- my $args = sub { [ @args ] };
-
- $AUTOLOAD =~ s/$class/$_[0]->{namespace}/;
- no strict "refs";
-
- croak "Unknown starting rule ($AUTOLOAD) called\n"
- unless defined &$AUTOLOAD;
- my $retval = &{$AUTOLOAD}($_[0],$text,undef,undef,$args);
-
- if (defined $retval)
- {
- foreach ( @{$_[0]->{deferred}} ) { &$_; }
- }
- else
- {
- foreach ( @{$_[0]->{errors}} ) { _error(@$_); }
- }
-
- if (ref $_[1]) { ${$_[1]} = $text }
-
- $ERRORS = 0;
- return $retval;
-}
-
-sub _parserepeat($$$$$$$$$$) # RETURNS A REF TO AN ARRAY OF MATCHES
-{
- my ($parser, $text, $prod, $min, $max, $_noactions, $expectation, $argcode) = @_;
- my @tokens = ();
-
- my $reps;
- for ($reps=0; $reps<$max;)
- {
- $_[6]->at($text); # $_[6] IS $expectation FROM CALLER
- my $_savetext = $text;
- my $prevtextlen = length $text;
- my $_tok;
- if (! defined ($_tok = &$prod($parser,$text,1,$_noactions,$argcode)))
- {
- $text = $_savetext;
- last;
- }
- push @tokens, $_tok if defined $_tok;
- last if ++$reps >= $min and $prevtextlen == length $text;
- }
-
- do { $_[6]->failed(); return undef} if $reps<$min;
-
- $_[1] = $text;
- return [@tokens];
-}
-
-
-# ERROR REPORTING....
-
-my $errortext;
-my $errorprefix;
-
-open (ERROR, ">&STDERR");
-format ERROR =
-@>>>>>>>>>>>>>>>>>>>>: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-$errorprefix, $errortext
-~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $errortext
-.
-
-select ERROR;
-$| = 1;
-
-# TRACING
-
-my $tracemsg;
-my $tracecontext;
-my $tracerulename;
-use vars '$tracelevel';
-
-open (TRACE, ">&STDERR");
-format TRACE =
-@>|@|||||||||@^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
-$tracelevel, $tracerulename, '|', $tracemsg
- | ~~ |^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
- $tracemsg
-.
-
-select TRACE;
-$| = 1;
-
-open (TRACECONTEXT, ">&STDERR");
-format TRACECONTEXT =
-@>|@|||||||||@ |^<<<<<<<<<<<<<<<<<<<<<<<<<<<
-$tracelevel, $tracerulename, '|', $tracecontext
- | ~~ | |^<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $tracecontext
-.
-
-
-select TRACECONTEXT;
-$| = 1;
-
-select STDOUT;
-
-sub _verbosity($)
-{
- defined $::RD_TRACE
- or defined $::RD_HINT and $_[0] =~ /ERRORS|WARN|HINT/
- or defined $::RD_WARN and $_[0] =~ /ERRORS|WARN/
- or defined $::RD_ERRORS and $_[0] =~ /ERRORS/
-}
-
-sub _error($;$)
-{
- $ERRORS++;
- return 0 if ! _verbosity("ERRORS");
- $errortext = $_[0];
- $errorprefix = "ERROR" . ($_[1] ? " (line $_[1])" : "");
- $errortext =~ s/\s+/ /g;
- print ERROR "\n" if _verbosity("WARN");
- write ERROR;
- return 1;
-}
-
-sub _warn($$;$)
-{
- return 0 unless _verbosity("WARN") && ($::RD_HINT || $_[0] >= ($::RD_WARN||1));
- $errortext = $_[1];
- $errorprefix = "Warning" . ($_[2] ? " (line $_[2])" : "");
- print ERROR "\n";
- $errortext =~ s/\s+/ /g;
- write ERROR;
- return 1;
-}
-
-sub _hint($)
-{
- return 0 unless defined $::RD_HINT;
- $errortext = "$_[0])";
- $errorprefix = "(Hint";
- $errortext =~ s/\s+/ /g;
- write ERROR;
- return 1;
-}
-
-sub _tracemax($)
-{
- if (defined $::RD_TRACE
- && $::RD_TRACE =~ /\d+/
- && $::RD_TRACE>1
- && $::RD_TRACE+10<length($_[0]))
- {
- my $count = length($_[0]) - $::RD_TRACE;
- return substr($_[0],0,$::RD_TRACE/2)
- . "...<$count>..."
- . substr($_[0],-$::RD_TRACE/2);
- }
- else
- {
- return $_[0];
- }
-}
-
-sub _tracefirst($)
-{
- if (defined $::RD_TRACE
- && $::RD_TRACE =~ /\d+/
- && $::RD_TRACE>1
- && $::RD_TRACE+10<length($_[0]))
- {
- my $count = length($_[0]) - $::RD_TRACE;
- return substr($_[0],0,$::RD_TRACE) . "...<+$count>";
- }
- else
- {
- return $_[0];
- }
-}
-
-my $lastcontext = '';
-my $lastrulename = '';
-my $lastlevel = '';
-
-sub _trace($;$$$)
-{
- $tracemsg = $_[0];
- $tracecontext = $_[1]||$lastcontext;
- $tracerulename = $_[2]||$lastrulename;
- $tracelevel = $_[3]||$lastlevel;
- if ($tracerulename) { $lastrulename = $tracerulename }
- if ($tracelevel) { $lastlevel = $tracelevel }
-
- $tracecontext =~ s/\n/\\n/g;
- $tracecontext =~ s/\s+/ /g;
- $tracerulename = qq{$tracerulename};
- write TRACE;
- if ($tracecontext ne $lastcontext)
- {
- if ($tracecontext)
- {
- $lastcontext = _tracefirst($tracecontext);
- $tracecontext = qq{"$tracecontext"};
- }
- else
- {
- $tracecontext = qq{<NO TEXT LEFT>};
- }
- write TRACECONTEXT;
- }
-}
-
-sub _parseunneg($$$$)
-{
- _parse($_[0],$_[1],$_[3]);
- if ($_[2]<0)
- {
- _error("Can't negate \"$&\".",$_[3]);
- _hint("You can't negate $_[0]. Remove the \"...!\" before
- \"$&\".");
- return 0;
- }
- return 1;
-}
-
-sub _parse($$$;$)
-{
- my $what = $_[3] || $&;
- $what =~ s/^\s+//;
- if ($_[1])
- {
- _warn(3,"Found $_[0] ($what) after an unconditional <error>",$_[2])
- and
- _hint("An unconditional <error> always causes the
- production containing it to immediately fail.
- \u$_[0] that follows an <error>
- will never be reached. Did you mean to use
- <error?> instead?");
- }
-
- return if ! _verbosity("TRACE");
- $errortext = "Treating \"$what\" as $_[0]";
- $errorprefix = "Parse::RecDescent";
- $errortext =~ s/\s+/ /g;
- write ERROR;
-}
-
-sub _linecount($) {
- scalar substr($_[0], pos $_[0]||0) =~ tr/\n//
-}
-
-
-package main;
-
-use vars qw ( $RD_ERRORS $RD_WARN $RD_HINT $RD_TRACE $RD_CHECK );
-$::RD_CHECK = 1;
-$::RD_ERRORS = 1;
-$::RD_WARN = 3;
-
-1;
-
diff --git a/lib/Template/Plugin/HTML.pm b/lib/Template/Plugin/HTML.pm
new file mode 100644
index 0000000..4c4d7f0
--- /dev/null
+++ b/lib/Template/Plugin/HTML.pm
@@ -0,0 +1,197 @@
+#============================================================= -*-Perl-*-
+#
+# Template::Plugin::HTML
+#
+# DESCRIPTION
+#
+# Template Toolkit plugin providing useful functionality for generating
+# HTML.
+#
+# AUTHOR
+# Andy Wardley <abw@kfs.org>
+#
+# COPYRIGHT
+# Copyright (C) 1996-2001 Andy Wardley. All Rights Reserved.
+# Copyright (C) 1998-2001 Canon Research Centre Europe Ltd.
+#
+# This module is free software; you can redistribute it and/or
+# modify it under the same terms as Perl itself.
+#
+#----------------------------------------------------------------------------
+#
+# $Id: HTML.pm,v 1.1 2006/10/27 10:00:31 amair Exp $
+#
+#============================================================================
+
+package Template::Plugin::HTML;
+
+require 5.004;
+
+use strict;
+use vars qw( $VERSION );
+use base qw( Template::Plugin );
+use Template::Plugin;
+
+$VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
+
+sub new {
+ my ($class, $context, @args) = @_;
+ my $hash = ref $args[-1] eq 'HASH' ? pop @args : { };
+ bless {
+ _SORTED => $hash->{ sorted } || 0,
+ }, $class;
+}
+
+sub element {
+ my ($self, $name, $attr) = @_;
+ ($name, $attr) = %$name if ref $name eq 'HASH';
+ return '' unless defined $name and length $name;
+ $attr = $self->attributes($attr);
+ $attr = " $attr" if $attr;
+ return "<$name$attr>";
+}
+
+sub attributes {
+ my ($self, $hash) = @_;
+ return '' unless UNIVERSAL::isa($hash, 'HASH');
+
+ my @keys = keys %$hash;
+ @keys = sort @keys if $self->{ _SORTED };
+
+ join(' ', map {
+ "$_=\"" . $self->escape( $hash->{ $_ } ) . '"';
+ } @keys);
+}
+
+sub escape {
+ my ($self, $text) = @_;
+ for ($text) {
+ s/&/&amp;/g;
+ s/</&lt;/g;
+ s/>/&gt;/g;
+ s/"/&quot;/g;
+ }
+ $text;
+}
+
+sub url {
+ my ($self, $text) = @_;
+ return undef unless defined $text;
+ $text =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
+ return $text;
+}
+
+
+1;
+
+__END__
+
+
+#------------------------------------------------------------------------
+# IMPORTANT NOTE
+# This documentation is generated automatically from source
+# templates. Any changes you make here may be lost.
+#
+# The 'docsrc' documentation source bundle is available for download
+# from http://www.template-toolkit.org/docs.html and contains all
+# the source templates, XML files, scripts, etc., from which the
+# documentation for the Template Toolkit is built.
+#------------------------------------------------------------------------
+
+=head1 NAME
+
+Template::Plugin::HTML - Plugin to create HTML elements
+
+=head1 SYNOPSIS
+
+ [% USE HTML %]
+
+ [% HTML.escape("if (a < b && c > d) ..." %]
+
+ [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
+
+ [% HTML.attributes(border => 1, cellpadding => 2) %]
+
+=head1 DESCRIPTION
+
+The HTML plugin is very new and very basic, implementing a few useful
+methods for generating HTML. It is likely to be extended in the future
+or integrated with a larger project to generate HTML elements in a generic
+way (as discussed recently on the mod_perl mailing list).
+
+=head1 METHODS
+
+=head2 escape(text)
+
+Returns the source text with any HTML reserved characters such as
+E<lt>, E<gt>, etc., correctly esacped to their entity equivalents.
+
+=head2 attributes(hash)
+
+Returns the elements of the hash array passed by reference correctly
+formatted (e.g. values quoted and correctly escaped) as attributes for
+an HTML element.
+
+=head2 element(type, attributes)
+
+Generates an HTML element of the specified type and with the attributes
+provided as an optional hash array reference as the second argument or
+as named arguments.
+
+ [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
+ [% HTML.element('table', border=1, cellpadding=2) %]
+ [% HTML.element(table => attribs) %]
+
+=head1 DEBUGGING
+
+The HTML plugin accepts a 'sorted' option as a constructor argument
+which, when set to any true value, causes the attributes generated by
+the attributes() method (either directly or via element()) to be
+returned in sorted order. Order of attributes isn't important in
+HTML, but this is provided mainly for the purposes of debugging where
+it is useful to have attributes generated in a deterministic order
+rather than whatever order the hash happened to feel like returning
+the keys in.
+
+ [% USE HTML(sorted=1) %]
+ [% HTML.element( foo => { charlie => 1, bravo => 2, alpha => 3 } ) %]
+
+generates:
+
+ <foo alpha="3" bravo="2" charlie="1">
+
+=head1 AUTHOR
+
+Andy Wardley E<lt>abw@andywardley.comE<gt>
+
+L<http://www.andywardley.com/|http://www.andywardley.com/>
+
+
+
+
+=head1 VERSION
+
+2.57, distributed as part of the
+Template Toolkit version 2.14, released on 04 October 2004.
+
+=head1 COPYRIGHT
+
+ Copyright (C) 1996-2004 Andy Wardley. All Rights Reserved.
+ Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<Template::Plugin|Template::Plugin>
+
+=cut
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# vim: expandtab shiftwidth=4:
diff --git a/lib/Template/Plugin/JavaScript.pm b/lib/Template/Plugin/JavaScript.pm
new file mode 100644
index 0000000..4a82b60
--- /dev/null
+++ b/lib/Template/Plugin/JavaScript.pm
@@ -0,0 +1,73 @@
+package Template::Plugin::JavaScript;
+
+use strict;
+use vars qw($VERSION);
+$VERSION = '0.01';
+
+require Template::Plugin;
+use base qw(Template::Plugin);
+
+use vars qw($FILTER_NAME);
+$FILTER_NAME = 'js';
+
+sub new {
+ my($self, $context, @args) = @_;
+ my $name = $args[0] || $FILTER_NAME;
+ $context->define_filter($name, \&encode_js, 0);
+ return $self;
+}
+
+sub encode_js {
+ local $_ = shift;
+ return '' unless defined $_;
+
+ s!(['"])!\\$1!g;
+ s!\n!\\n!g;
+ s!\f!\\f!g;
+ s!\r!\\r!g;
+ s!\t!\\t!g;
+ $_;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Template::Plugin::JavaScript - Encodes text to be safe in JavaScript
+
+=head1 SYNOPSIS
+
+ [% USE JavaScript %]
+ <script type="text/javascript">
+ document.write("[% sometext | js %]");
+ </script>
+
+=head1 DESCRIPTION
+
+Template::Plugin::JavaScript is a TT filter that filters text so it
+can be safely used in JavaScript quotes.
+
+ [% USE JavaScript %]
+ document.write("[% FILTER js %]
+ Here's some text going on.
+ [% END %]");
+
+will become:
+
+ document.write("\nHere\'s some text going on.\n");
+
+=head1 AUTHOR
+
+The original idea comes from Movable Type's C<encode_js> global filter.
+
+Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<Apache::JavaScript::DocumentWrite>
+
+=cut
diff --git a/lib/Text/Balanced.pm b/lib/Text/Balanced.pm
deleted file mode 100644
index aa09c3e..0000000
--- a/lib/Text/Balanced.pm
+++ /dev/null
@@ -1,2301 +0,0 @@
-# EXTRACT VARIOUSLY DELIMITED TEXT SEQUENCES FROM STRINGS.
-# FOR FULL DOCUMENTATION SEE Balanced.pod
-
-use 5.005;
-use strict;
-
-package Text::Balanced;
-
-use Exporter;
-use SelfLoader;
-use vars qw { $VERSION @ISA %EXPORT_TAGS };
-
-$VERSION = '1.90';
-@ISA = qw ( Exporter );
-
-%EXPORT_TAGS = ( ALL => [ qw(
- &extract_delimited
- &extract_bracketed
- &extract_quotelike
- &extract_codeblock
- &extract_variable
- &extract_tagged
- &extract_multiple
-
- &gen_delimited_pat
- &gen_extract_tagged
-
- &delimited_pat
- ) ] );
-
-Exporter::export_ok_tags('ALL');
-
-# PROTOTYPES
-
-sub _match_bracketed($$$$$$);
-sub _match_variable($$);
-sub _match_codeblock($$$$$$$);
-sub _match_quotelike($$$$);
-
-# HANDLE RETURN VALUES IN VARIOUS CONTEXTS
-
-sub _failmsg {
- my ($message, $pos) = @_;
- $@ = bless { error=>$message, pos=>$pos }, "Text::Balanced::ErrorMsg";
-}
-
-sub _fail
-{
- my ($wantarray, $textref, $message, $pos) = @_;
- _failmsg $message, $pos if $message;
- return ("",$$textref,"") if $wantarray;
- return undef;
-}
-
-sub _succeed
-{
- $@ = undef;
- my ($wantarray,$textref) = splice @_, 0, 2;
- my ($extrapos, $extralen) = @_>18 ? splice(@_, -2, 2) : (0,0);
- my ($startlen) = $_[5];
- my $remainderpos = $_[2];
- if ($wantarray)
- {
- my @res;
- while (my ($from, $len) = splice @_, 0, 2)
- {
- push @res, substr($$textref,$from,$len);
- }
- if ($extralen) { # CORRECT FILLET
- my $extra = substr($res[0], $extrapos-$startlen, $extralen, "\n");
- $res[1] = "$extra$res[1]";
- eval { substr($$textref,$remainderpos,0) = $extra;
- substr($$textref,$extrapos,$extralen,"\n")} ;
- #REARRANGE HERE DOC AND FILLET IF POSSIBLE
- pos($$textref) = $remainderpos-$extralen+1; # RESET \G
- }
- else {
- pos($$textref) = $remainderpos; # RESET \G
- }
- return @res;
- }
- else
- {
- my $match = substr($$textref,$_[0],$_[1]);
- substr($match,$extrapos-$_[0]-$startlen,$extralen,"") if $extralen;
- my $extra = $extralen
- ? substr($$textref, $extrapos, $extralen)."\n" : "";
- eval {substr($$textref,$_[4],$_[1]+$_[5])=$extra} ; #CHOP OUT PREFIX & MATCH, IF POSSIBLE
- pos($$textref) = $_[4]; # RESET \G
- return $match;
- }
-}
-
-# BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING
-
-sub gen_delimited_pat($;$) # ($delimiters;$escapes)
-{
- my ($dels, $escs) = @_;
- return "" unless $dels =~ /\S/;
- $escs = '\\' unless $escs;
- $escs .= substr($escs,-1) x (length($dels)-length($escs));
- my @pat = ();
- my $i;
- for ($i=0; $i<length $dels; $i++)
- {
- my $del = quotemeta substr($dels,$i,1);
- my $esc = quotemeta substr($escs,$i,1);
- if ($del eq $esc)
- {
- push @pat, "$del(?:[^$del]*(?:(?:$del$del)[^$del]*)*)$del";
- }
- else
- {
- push @pat, "$del(?:[^$esc$del]*(?:$esc.[^$esc$del]*)*)$del";
- }
- }
- my $pat = join '|', @pat;
- return "(?:$pat)";
-}
-
-*delimited_pat = \&gen_delimited_pat;
-
-
-# THE EXTRACTION FUNCTIONS
-
-sub extract_delimited (;$$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $del = defined $_[1] ? $_[1] : qq{\'\"\`};
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $esc = defined $_[3] ? $_[3] : qq{\\};
- my $pat = gen_delimited_pat($del, $esc);
- my $startpos = pos $$textref || 0;
- return _fail($wantarray, $textref, "Not a delimited pattern", 0)
- unless $$textref =~ m/\G($pre)($pat)/gc;
- my $prelen = length($1);
- my $matchpos = $startpos+$prelen;
- my $endpos = pos $$textref;
- return _succeed $wantarray, $textref,
- $matchpos, $endpos-$matchpos, # MATCH
- $endpos, length($$textref)-$endpos, # REMAINDER
- $startpos, $prelen; # PREFIX
-}
-
-sub extract_bracketed (;$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $ldel = defined $_[1] ? $_[1] : '{([<';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $wantarray = wantarray;
- my $qdel = "";
- my $quotelike;
- $ldel =~ s/'//g and $qdel .= q{'};
- $ldel =~ s/"//g and $qdel .= q{"};
- $ldel =~ s/`//g and $qdel .= q{`};
- $ldel =~ s/q//g and $quotelike = 1;
- $ldel =~ tr/[](){}<>\0-\377/[[(({{<</ds;
- my $rdel = $ldel;
- unless ($rdel =~ tr/[({</])}>/)
- {
- return _fail $wantarray, $textref,
- "Did not find a suitable bracket in delimiter: \"$_[1]\"",
- 0;
- }
- my $posbug = pos;
- $ldel = join('|', map { quotemeta $_ } split('', $ldel));
- $rdel = join('|', map { quotemeta $_ } split('', $rdel));
- pos = $posbug;
-
- my $startpos = pos $$textref || 0;
- my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel);
-
- return _fail ($wantarray, $textref) unless @match;
-
- return _succeed ( $wantarray, $textref,
- $match[2], $match[5]+2, # MATCH
- @match[8,9], # REMAINDER
- @match[0,1], # PREFIX
- );
-}
-
-sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel
-{
- my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_;
- my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0);
- unless ($$textref =~ m/\G$pre/gc)
- {
- _failmsg "Did not find prefix: /$pre/", $startpos;
- return;
- }
-
- $ldelpos = pos $$textref;
-
- unless ($$textref =~ m/\G($ldel)/gc)
- {
- _failmsg "Did not find opening bracket after prefix: \"$pre\"",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- my @nesting = ( $1 );
- my $textlen = length $$textref;
- while (pos $$textref < $textlen)
- {
- next if $$textref =~ m/\G\\./gcs;
-
- if ($$textref =~ m/\G($ldel)/gc)
- {
- push @nesting, $1;
- }
- elsif ($$textref =~ m/\G($rdel)/gc)
- {
- my ($found, $brackettype) = ($1, $1);
- if ($#nesting < 0)
- {
- _failmsg "Unmatched closing bracket: \"$found\"",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $expected = pop(@nesting);
- $expected =~ tr/({[</)}]>/;
- if ($expected ne $brackettype)
- {
- _failmsg qq{Mismatched closing bracket: expected "$expected" but found "$found"},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- last if $#nesting < 0;
- }
- elsif ($qdel && $$textref =~ m/\G([$qdel])/gc)
- {
- $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next;
- _failmsg "Unmatched embedded quote ($1)",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- elsif ($quotelike && _match_quotelike($textref,"",1,0))
- {
- next;
- }
-
- else { $$textref =~ m/\G(?:[a-zA-Z0-9]+|.)/gcs }
- }
- if ($#nesting>=0)
- {
- _failmsg "Unmatched opening bracket(s): "
- . join("..",@nesting)."..",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- $endpos = pos $$textref;
-
- return (
- $startpos, $ldelpos-$startpos, # PREFIX
- $ldelpos, 1, # OPENING BRACKET
- $ldelpos+1, $endpos-$ldelpos-2, # CONTENTS
- $endpos-1, 1, # CLOSING BRACKET
- $endpos, length($$textref)-$endpos, # REMAINDER
- );
-}
-
-sub revbracket($)
-{
- my $brack = reverse $_[0];
- $brack =~ tr/[({</])}>/;
- return $brack;
-}
-
-my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*};
-
-sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $ldel = $_[1];
- my $rdel = $_[2];
- my $pre = defined $_[3] ? $_[3] : '\s*';
- my %options = defined $_[4] ? %{$_[4]} : ();
- my $omode = defined $options{fail} ? $options{fail} : '';
- my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
- : defined($options{reject}) ? $options{reject}
- : ''
- ;
- my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}})
- : defined($options{ignore}) ? $options{ignore}
- : ''
- ;
-
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
- $@ = undef;
-
- my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
-
- return _fail(wantarray, $textref) unless @match;
- return _succeed wantarray, $textref,
- $match[2], $match[3]+$match[5]+$match[7], # MATCH
- @match[8..9,0..1,2..7]; # REM, PRE, BITS
-}
-
-sub _match_tagged # ($$$$$$$)
-{
- my ($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore) = @_;
- my $rdelspec;
-
- my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 );
-
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg "Did not find prefix: /$pre/", pos $$textref;
- goto failed;
- }
-
- $opentagpos = pos($$textref);
-
- unless ($$textref =~ m/\G$ldel/gc)
- {
- _failmsg "Did not find opening tag: /$ldel/", pos $$textref;
- goto failed;
- }
-
- $textpos = pos($$textref);
-
- if (!defined $rdel)
- {
- $rdelspec = $&;
- unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". revbracket($1) /oes)
- {
- _failmsg "Unable to construct closing tag to match: $rdel",
- pos $$textref;
- goto failed;
- }
- }
- else
- {
- $rdelspec = eval "qq{$rdel}" || do {
- my $del;
- for (qw,~ ! ^ & * ) _ + - = } ] : " ; ' > . ? / | ',)
- { next if $rdel =~ /\Q$_/; $del = $_; last }
- unless ($del) {
- use Carp;
- croak "Can't interpolate right delimiter $rdel"
- }
- eval "qq$del$rdel$del";
- };
- }
-
- while (pos($$textref) < length($$textref))
- {
- next if $$textref =~ m/\G\\./gc;
-
- if ($$textref =~ m/\G(\n[ \t]*\n)/gc )
- {
- $parapos = pos($$textref) - length($1)
- unless defined $parapos;
- }
- elsif ($$textref =~ m/\G($rdelspec)/gc )
- {
- $closetagpos = pos($$textref)-length($1);
- goto matched;
- }
- elsif ($ignore && $$textref =~ m/\G(?:$ignore)/gc)
- {
- next;
- }
- elsif ($bad && $$textref =~ m/\G($bad)/gcs)
- {
- pos($$textref) -= length($1); # CUT OFF WHATEVER CAUSED THE SHORTNESS
- goto short if ($omode eq 'PARA' || $omode eq 'MAX');
- _failmsg "Found invalid nested tag: $1", pos $$textref;
- goto failed;
- }
- elsif ($$textref =~ m/\G($ldel)/gc)
- {
- my $tag = $1;
- pos($$textref) -= length($tag); # REWIND TO NESTED TAG
- unless (_match_tagged(@_)) # MATCH NESTED TAG
- {
- goto short if $omode eq 'PARA' || $omode eq 'MAX';
- _failmsg "Found unbalanced nested tag: $tag",
- pos $$textref;
- goto failed;
- }
- }
- else { $$textref =~ m/./gcs }
- }
-
-short:
- $closetagpos = pos($$textref);
- goto matched if $omode eq 'MAX';
- goto failed unless $omode eq 'PARA';
-
- if (defined $parapos) { pos($$textref) = $parapos }
- else { $parapos = pos($$textref) }
-
- return (
- $startpos, $opentagpos-$startpos, # PREFIX
- $opentagpos, $textpos-$opentagpos, # OPENING TAG
- $textpos, $parapos-$textpos, # TEXT
- $parapos, 0, # NO CLOSING TAG
- $parapos, length($$textref)-$parapos, # REMAINDER
- );
-
-matched:
- $endpos = pos($$textref);
- return (
- $startpos, $opentagpos-$startpos, # PREFIX
- $opentagpos, $textpos-$opentagpos, # OPENING TAG
- $textpos, $closetagpos-$textpos, # TEXT
- $closetagpos, $endpos-$closetagpos, # CLOSING TAG
- $endpos, length($$textref)-$endpos, # REMAINDER
- );
-
-failed:
- _failmsg "Did not find closing tag", pos $$textref unless $@;
- pos($$textref) = $startpos;
- return;
-}
-
-sub extract_variable (;$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- return ("","","") unless defined $$textref;
- my $pre = defined $_[1] ? $_[1] : '\s*';
-
- my @match = _match_variable($textref,$pre);
-
- return _fail wantarray, $textref unless @match;
-
- return _succeed wantarray, $textref,
- @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX
-}
-
-sub _match_variable($$)
-{
-# $#
-# $^
-# $$
- my ($textref, $pre) = @_;
- my $startpos = pos($$textref) = pos($$textref)||0;
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg "Did not find prefix: /$pre/", pos $$textref;
- return;
- }
- my $varpos = pos($$textref);
- unless ($$textref =~ m{\G\$\s*(?!::)(\d+|[][&`'+*./|,";%=~:?!\@<>()-]|\^[a-z]?)}gci)
- {
- unless ($$textref =~ m/\G((\$#?|[*\@\%]|\\&)+)/gc)
- {
- _failmsg "Did not find leading dereferencer", pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $deref = $1;
-
- unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci
- or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0)
- or $deref eq '$#' or $deref eq '$$' )
- {
- _failmsg "Bad identifier after dereferencer", pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- }
-
- while (1)
- {
- next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc;
- next if _match_codeblock($textref,
- qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/,
- qr/[({[]/, qr/[)}\]]/,
- qr/[({[]/, qr/[)}\]]/, 0);
- next if _match_codeblock($textref,
- qr/\s*/, qr/[{[]/, qr/[}\]]/,
- qr/[{[]/, qr/[}\]]/, 0);
- next if _match_variable($textref,'\s*->\s*');
- next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc;
- last;
- }
-
- my $endpos = pos($$textref);
- return ($startpos, $varpos-$startpos,
- $varpos, $endpos-$varpos,
- $endpos, length($$textref)-$endpos
- );
-}
-
-sub extract_codeblock (;$$$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $ldel_inner = defined $_[1] ? $_[1] : '{';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner;
- my $rd = $_[4];
- my $rdel_inner = $ldel_inner;
- my $rdel_outer = $ldel_outer;
- my $posbug = pos;
- for ($ldel_inner, $ldel_outer) { tr/[]()<>{}\0-\377/[[((<<{{/ds }
- for ($rdel_inner, $rdel_outer) { tr/[]()<>{}\0-\377/]]))>>}}/ds }
- for ($ldel_inner, $ldel_outer, $rdel_inner, $rdel_outer)
- {
- $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')'
- }
- pos = $posbug;
-
- my @match = _match_codeblock($textref, $pre,
- $ldel_outer, $rdel_outer,
- $ldel_inner, $rdel_inner,
- $rd);
- return _fail($wantarray, $textref) unless @match;
- return _succeed($wantarray, $textref,
- @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX
- );
-
-}
-
-sub _match_codeblock($$$$$$$)
-{
- my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_;
- my $startpos = pos($$textref) = pos($$textref) || 0;
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg qq{Did not match prefix /$pre/ at"} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- return;
- }
- my $codepos = pos($$textref);
- unless ($$textref =~ m/\G($ldel_outer)/gc) # OUTERMOST DELIMITER
- {
- _failmsg qq{Did not find expected opening bracket at "} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- my $closing = $1;
- $closing =~ tr/([<{/)]>}/;
- my $matched;
- my $patvalid = 1;
- while (pos($$textref) < length($$textref))
- {
- $matched = '';
- if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc)
- {
- $patvalid = 0;
- next;
- }
-
- if ($$textref =~ m/\G\s*#.*/gc)
- {
- next;
- }
-
- if ($$textref =~ m/\G\s*($rdel_outer)/gc)
- {
- unless ($matched = ($closing && $1 eq $closing) )
- {
- next if $1 eq '>'; # MIGHT BE A "LESS THAN"
- _failmsg q{Mismatched closing bracket at "} .
- substr($$textref,pos($$textref),20) .
- qq{...". Expected '$closing'},
- pos $$textref;
- }
- last;
- }
-
- if (_match_variable($textref,'\s*') ||
- _match_quotelike($textref,'\s*',$patvalid,$patvalid) )
- {
- $patvalid = 0;
- next;
- }
-
-
- # NEED TO COVER MANY MORE CASES HERE!!!
- if ($$textref =~ m#\G\s*( [-+*x/%^&|.]=?
- | [!=]~
- | =(?!>)
- | (\*\*|&&|\|\||<<|>>)=?
- | split|grep|map|return
- | [([]
- )#gcx)
- {
- $patvalid = 1;
- next;
- }
-
- if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) )
- {
- $patvalid = 1;
- next;
- }
-
- if ($$textref =~ m/\G\s*$ldel_outer/gc)
- {
- _failmsg q{Improperly nested codeblock at "} .
- substr($$textref,pos($$textref),20) .
- q{..."},
- pos $$textref;
- last;
- }
-
- $patvalid = 0;
- $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc;
- }
- continue { $@ = undef }
-
- unless ($matched)
- {
- _failmsg 'No match found for opening bracket', pos $$textref
- unless $@;
- return;
- }
-
- my $endpos = pos($$textref);
- return ( $startpos, $codepos-$startpos,
- $codepos, $endpos-$codepos,
- $endpos, length($$textref)-$endpos,
- );
-}
-
-
-my %mods = (
- 'none' => '[cgimsox]*',
- 'm' => '[cgimsox]*',
- 's' => '[cegimsox]*',
- 'tr' => '[cds]*',
- 'y' => '[cds]*',
- 'qq' => '',
- 'qx' => '',
- 'qw' => '',
- 'qr' => '[imsx]*',
- 'q' => '',
- );
-
-sub extract_quotelike (;$$)
-{
- my $textref = $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $pre = defined $_[1] ? $_[1] : '\s*';
-
- my @match = _match_quotelike($textref,$pre,1,0);
- return _fail($wantarray, $textref) unless @match;
- return _succeed($wantarray, $textref,
- $match[2], $match[18]-$match[2], # MATCH
- @match[18,19], # REMAINDER
- @match[0,1], # PREFIX
- @match[2..17], # THE BITS
- @match[20,21], # ANY FILLET?
- );
-};
-
-sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
-{
- my ($textref, $pre, $rawmatch, $qmark) = @_;
-
- my ($textlen,$startpos,
- $oppos,
- $preld1pos,$ld1pos,$str1pos,$rd1pos,
- $preld2pos,$ld2pos,$str2pos,$rd2pos,
- $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 );
-
- unless ($$textref =~ m/\G($pre)/gc)
- {
- _failmsg qq{Did not find prefix /$pre/ at "} .
- substr($$textref, pos($$textref), 20) .
- q{..."},
- pos $$textref;
- return;
- }
- $oppos = pos($$textref);
-
- my $initial = substr($$textref,$oppos,1);
-
- if ($initial && $initial =~ m|^[\"\'\`]|
- || $rawmatch && $initial =~ m|^/|
- || $qmark && $initial =~ m|^\?|)
- {
- unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx)
- {
- _failmsg qq{Did not find closing delimiter to match '$initial' at "} .
- substr($$textref, $oppos, 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $modpos= pos($$textref);
- $rd1pos = $modpos-1;
-
- if ($initial eq '/' || $initial eq '?')
- {
- $$textref =~ m/\G$mods{none}/gc
- }
-
- my $endpos = pos($$textref);
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, 0, # NO OPERATOR
- $oppos, 1, # LEFT DEL
- $oppos+1, $rd1pos-$oppos-1, # STR/PAT
- $rd1pos, 1, # RIGHT DEL
- $modpos, 0, # NO 2ND LDEL
- $modpos, 0, # NO 2ND STR
- $modpos, 0, # NO 2ND RDEL
- $modpos, $endpos-$modpos, # MODIFIERS
- $endpos, $textlen-$endpos, # REMAINDER
- );
- }
-
- unless ($$textref =~ m{\G((?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc)
- {
- _failmsg q{No quotelike operator found after prefix at "} .
- substr($$textref, pos($$textref), 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
-
- my $op = $1;
- $preld1pos = pos($$textref);
- if ($op eq '<<') {
- $ld1pos = pos($$textref);
- my $label;
- if ($$textref =~ m{\G([A-Za-z_]\w*)}gc) {
- $label = $1;
- }
- elsif ($$textref =~ m{ \G ' ([^'\\]* (?:\\.[^'\\]*)*) '
- | \G " ([^"\\]* (?:\\.[^"\\]*)*) "
- | \G ` ([^`\\]* (?:\\.[^`\\]*)*) `
- }gcsx) {
- $label = $+;
- }
- else {
- $label = "";
- }
- my $extrapos = pos($$textref);
- $$textref =~ m{.*\n}gc;
- $str1pos = pos($$textref);
- unless ($$textref =~ m{.*?\n(?=$label\n)}gc) {
- _failmsg qq{Missing here doc terminator ('$label') after "} .
- substr($$textref, $startpos, 20) .
- q{..."},
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $rd1pos = pos($$textref);
- $$textref =~ m{$label\n}gc;
- $ld2pos = pos($$textref);
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, length($op), # OPERATOR
- $ld1pos, $extrapos-$ld1pos, # LEFT DEL
- $str1pos, $rd1pos-$str1pos, # STR/PAT
- $rd1pos, $ld2pos-$rd1pos, # RIGHT DEL
- $ld2pos, 0, # NO 2ND LDEL
- $ld2pos, 0, # NO 2ND STR
- $ld2pos, 0, # NO 2ND RDEL
- $ld2pos, 0, # NO MODIFIERS
- $ld2pos, $textlen-$ld2pos, # REMAINDER
- $extrapos, $str1pos-$extrapos, # FILLETED BIT
- );
- }
-
- $$textref =~ m/\G\s*/gc;
- $ld1pos = pos($$textref);
- $str1pos = $ld1pos+1;
-
- unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD
- {
- _failmsg "No block delimiter found after quotelike $op",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN
- my ($ldel1, $rdel1) = ("\Q$1","\Q$1");
- if ($ldel1 =~ /[[(<{]/)
- {
- $rdel1 =~ tr/[({</])}>/;
- _match_bracketed($textref,"",$ldel1,"","",$rdel1)
- || do { pos $$textref = $startpos; return };
- }
- else
- {
- $$textref =~ /$ldel1[^\\$ldel1]*(\\.[^\\$ldel1]*)*$ldel1/gcs
- || do { pos $$textref = $startpos; return };
- }
- $ld2pos = $rd1pos = pos($$textref)-1;
-
- my $second_arg = $op =~ /s|tr|y/ ? 1 : 0;
- if ($second_arg)
- {
- my ($ldel2, $rdel2);
- if ($ldel1 =~ /[[(<{]/)
- {
- unless ($$textref =~ /\G\s*(\S)/gc) # SHOULD USE LOOKAHEAD
- {
- _failmsg "Missing second block for quotelike $op",
- pos $$textref;
- pos $$textref = $startpos;
- return;
- }
- $ldel2 = $rdel2 = "\Q$1";
- $rdel2 =~ tr/[({</])}>/;
- }
- else
- {
- $ldel2 = $rdel2 = $ldel1;
- }
- $str2pos = $ld2pos+1;
-
- if ($ldel2 =~ /[[(<{]/)
- {
- pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD
- _match_bracketed($textref,"",$ldel2,"","",$rdel2)
- || do { pos $$textref = $startpos; return };
- }
- else
- {
- $$textref =~ /[^\\$ldel2]*(\\.[^\\$ldel2]*)*$ldel2/gcs
- || do { pos $$textref = $startpos; return };
- }
- $rd2pos = pos($$textref)-1;
- }
- else
- {
- $ld2pos = $str2pos = $rd2pos = $rd1pos;
- }
-
- $modpos = pos $$textref;
-
- $$textref =~ m/\G($mods{$op})/gc;
- my $endpos = pos $$textref;
-
- return (
- $startpos, $oppos-$startpos, # PREFIX
- $oppos, length($op), # OPERATOR
- $ld1pos, 1, # LEFT DEL
- $str1pos, $rd1pos-$str1pos, # STR/PAT
- $rd1pos, 1, # RIGHT DEL
- $ld2pos, $second_arg, # 2ND LDEL (MAYBE)
- $str2pos, $rd2pos-$str2pos, # 2ND STR (MAYBE)
- $rd2pos, $second_arg, # 2ND RDEL (MAYBE)
- $modpos, $endpos-$modpos, # MODIFIERS
- $endpos, $textlen-$endpos, # REMAINDER
- );
-}
-
-my $def_func =
-[
- sub { extract_variable($_[0], '') },
- sub { extract_quotelike($_[0],'') },
- sub { extract_codeblock($_[0],'{}','') },
-];
-
-sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown)
-{
- my $textref = defined($_[0]) ? \$_[0] : \$_;
- my $posbug = pos;
- my ($lastpos, $firstpos);
- my @fields = ();
-
- #for ($$textref)
- {
- my @func = defined $_[1] ? @{$_[1]} : @{$def_func};
- my $max = defined $_[2] && $_[2]>0 ? $_[2] : 1_000_000_000;
- my $igunk = $_[3];
-
- pos $$textref ||= 0;
-
- unless (wantarray)
- {
- use Carp;
- carp "extract_multiple reset maximal count to 1 in scalar context"
- if $^W && defined($_[2]) && $max > 1;
- $max = 1
- }
-
- my $unkpos;
- my $func;
- my $class;
-
- my @class;
- foreach $func ( @func )
- {
- if (ref($func) eq 'HASH')
- {
- push @class, (keys %$func)[0];
- $func = (values %$func)[0];
- }
- else
- {
- push @class, undef;
- }
- }
-
- FIELD: while (pos($$textref) < length($$textref))
- {
- my ($field, $rem);
- my @bits;
- foreach my $i ( 0..$#func )
- {
- my $pref;
- $func = $func[$i];
- $class = $class[$i];
- $lastpos = pos $$textref;
- if (ref($func) eq 'CODE')
- { ($field,$rem,$pref) = @bits = $func->($$textref);
- # print "[$field|$rem]" if $field;
- }
- elsif (ref($func) eq 'Text::Balanced::Extractor')
- { @bits = $field = $func->extract($$textref) }
- elsif( $$textref =~ m/\G$func/gc )
- { @bits = $field = defined($1) ? $1 : $& }
- $pref ||= "";
- if (defined($field) && length($field))
- {
- if (!$igunk) {
- $unkpos = pos $$textref
- if length($pref) && !defined($unkpos);
- if (defined $unkpos)
- {
- push @fields, substr($$textref, $unkpos, $lastpos-$unkpos).$pref;
- $firstpos = $unkpos unless defined $firstpos;
- undef $unkpos;
- last FIELD if @fields == $max;
- }
- }
- push @fields, $class
- ? bless (\$field, $class)
- : $field;
- $firstpos = $lastpos unless defined $firstpos;
- $lastpos = pos $$textref;
- last FIELD if @fields == $max;
- next FIELD;
- }
- }
- if ($$textref =~ /\G(.)/gcs)
- {
- $unkpos = pos($$textref)-1
- unless $igunk || defined $unkpos;
- }
- }
-
- if (defined $unkpos)
- {
- push @fields, substr($$textref, $unkpos);
- $firstpos = $unkpos unless defined $firstpos;
- $lastpos = length $$textref;
- }
- last;
- }
-
- pos $$textref = $lastpos;
- return @fields if wantarray;
-
- $firstpos ||= 0;
- eval { substr($$textref,$firstpos,$lastpos-$firstpos)="";
- pos $$textref = $firstpos };
- return $fields[0];
-}
-
-
-sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options)
-{
- my $ldel = $_[0];
- my $rdel = $_[1];
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my %options = defined $_[3] ? %{$_[3]} : ();
- my $omode = defined $options{fail} ? $options{fail} : '';
- my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
- : defined($options{reject}) ? $options{reject}
- : ''
- ;
- my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}})
- : defined($options{ignore}) ? $options{ignore}
- : ''
- ;
-
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
-
- my $posbug = pos;
- for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ }
- pos = $posbug;
-
- my $closure = sub
- {
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
-
- return _fail(wantarray, $textref) unless @match;
- return _succeed wantarray, $textref,
- $match[2], $match[3]+$match[5]+$match[7], # MATCH
- @match[8..9,0..1,2..7]; # REM, PRE, BITS
- };
-
- bless $closure, 'Text::Balanced::Extractor';
-}
-
-package Text::Balanced::Extractor;
-
-sub extract($$) # ($self, $text)
-{
- &{$_[0]}($_[1]);
-}
-
-package Text::Balanced::ErrorMsg;
-
-use overload '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" };
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::Balanced - Extract delimited text sequences from strings.
-
-
-=head1 SYNOPSIS
-
- use Text::Balanced qw (
- extract_delimited
- extract_bracketed
- extract_quotelike
- extract_codeblock
- extract_variable
- extract_tagged
- extract_multiple
-
- gen_delimited_pat
- gen_extract_tagged
- );
-
- # Extract the initial substring of $text that is delimited by
- # two (unescaped) instances of the first character in $delim.
-
- ($extracted, $remainder) = extract_delimited($text,$delim);
-
-
- # Extract the initial substring of $text that is bracketed
- # with a delimiter(s) specified by $delim (where the string
- # in $delim contains one or more of '(){}[]<>').
-
- ($extracted, $remainder) = extract_bracketed($text,$delim);
-
-
- # Extract the initial substring of $text that is bounded by
- # an XML tag.
-
- ($extracted, $remainder) = extract_tagged($text);
-
-
- # Extract the initial substring of $text that is bounded by
- # a C<BEGIN>...C<END> pair. Don't allow nested C<BEGIN> tags
-
- ($extracted, $remainder) =
- extract_tagged($text,"BEGIN","END",undef,{bad=>["BEGIN"]});
-
-
- # Extract the initial substring of $text that represents a
- # Perl "quote or quote-like operation"
-
- ($extracted, $remainder) = extract_quotelike($text);
-
-
- # Extract the initial substring of $text that represents a block
- # of Perl code, bracketed by any of character(s) specified by $delim
- # (where the string $delim contains one or more of '(){}[]<>').
-
- ($extracted, $remainder) = extract_codeblock($text,$delim);
-
-
- # Extract the initial substrings of $text that would be extracted by
- # one or more sequential applications of the specified functions
- # or regular expressions
-
- @extracted = extract_multiple($text,
- [ \&extract_bracketed,
- \&extract_quotelike,
- \&some_other_extractor_sub,
- qr/[xyz]*/,
- 'literal',
- ]);
-
-# Create a string representing an optimized pattern (a la Friedl)
-# that matches a substring delimited by any of the specified characters
-# (in this case: any type of quote or a slash)
-
- $patstring = gen_delimited_pat(q{'"`/});
-
-
-# Generate a reference to an anonymous sub that is just like extract_tagged
-# but pre-compiled and optimized for a specific pair of tags, and consequently
-# much faster (i.e. 3 times faster). It uses qr// for better performance on
-# repeated calls, so it only works under Perl 5.005 or later.
-
- $extract_head = gen_extract_tagged('<HEAD>','</HEAD>');
-
- ($extracted, $remainder) = $extract_head->($text);
-
-
-=head1 DESCRIPTION
-
-The various C<extract_...> subroutines may be used to
-extract a delimited substring, possibly after skipping a
-specified prefix string. By default, that prefix is
-optional whitespace (C</\s*/>), but you can change it to whatever
-you wish (see below).
-
-The substring to be extracted must appear at the
-current C<pos> location of the string's variable
-(or at index zero, if no C<pos> position is defined).
-In other words, the C<extract_...> subroutines I<don't>
-extract the first occurance of a substring anywhere
-in a string (like an unanchored regex would). Rather,
-they extract an occurance of the substring appearing
-immediately at the current matching position in the
-string (like a C<\G>-anchored regex would).
-
-
-
-=head2 General behaviour in list contexts
-
-In a list context, all the subroutines return a list, the first three
-elements of which are always:
-
-=over 4
-
-=item [0]
-
-The extracted string, including the specified delimiters.
-If the extraction fails an empty string is returned.
-
-=item [1]
-
-The remainder of the input string (i.e. the characters after the
-extracted string). On failure, the entire string is returned.
-
-=item [2]
-
-The skipped prefix (i.e. the characters before the extracted string).
-On failure, the empty string is returned.
-
-=back
-
-Note that in a list context, the contents of the original input text (the first
-argument) are not modified in any way.
-
-However, if the input text was passed in a variable, that variable's
-C<pos> value is updated to point at the first character after the
-extracted text. That means that in a list context the various
-subroutines can be used much like regular expressions. For example:
-
- while ( $next = (extract_quotelike($text))[0] )
- {
- # process next quote-like (in $next)
- }
-
-
-=head2 General behaviour in scalar and void contexts
-
-In a scalar context, the extracted string is returned, having first been
-removed from the input text. Thus, the following code also processes
-each quote-like operation, but actually removes them from $text:
-
- while ( $next = extract_quotelike($text) )
- {
- # process next quote-like (in $next)
- }
-
-Note that if the input text is a read-only string (i.e. a literal),
-no attempt is made to remove the extracted text.
-
-In a void context the behaviour of the extraction subroutines is
-exactly the same as in a scalar context, except (of course) that the
-extracted substring is not returned.
-
-=head2 A note about prefixes
-
-Prefix patterns are matched without any trailing modifiers (C</gimsox> etc.)
-This can bite you if you're expecting a prefix specification like
-'.*?(?=<H1>)' to skip everything up to the first <H1> tag. Such a prefix
-pattern will only succeed if the <H1> tag is on the current line, since
-. normally doesn't match newlines.
-
-To overcome this limitation, you need to turn on /s matching within
-the prefix pattern, using the C<(?s)> directive: '(?s).*?(?=<H1>)'
-
-
-=head2 C<extract_delimited>
-
-The C<extract_delimited> function formalizes the common idiom
-of extracting a single-character-delimited substring from the start of
-a string. For example, to extract a single-quote delimited string, the
-following code is typically used:
-
- ($remainder = $text) =~ s/\A('(\\.|[^'])*')//s;
- $extracted = $1;
-
-but with C<extract_delimited> it can be simplified to:
-
- ($extracted,$remainder) = extract_delimited($text, "'");
-
-C<extract_delimited> takes up to four scalars (the input text, the
-delimiters, a prefix pattern to be skipped, and any escape characters)
-and extracts the initial substring of the text that
-is appropriately delimited. If the delimiter string has multiple
-characters, the first one encountered in the text is taken to delimit
-the substring.
-The third argument specifies a prefix pattern that is to be skipped
-(but must be present!) before the substring is extracted.
-The final argument specifies the escape character to be used for each
-delimiter.
-
-All arguments are optional. If the escape characters are not specified,
-every delimiter is escaped with a backslash (C<\>).
-If the prefix is not specified, the
-pattern C<'\s*'> - optional whitespace - is used. If the delimiter set
-is also not specified, the set C</["'`]/> is used. If the text to be processed
-is not specified either, C<$_> is used.
-
-In list context, C<extract_delimited> returns a array of three
-elements, the extracted substring (I<including the surrounding
-delimiters>), the remainder of the text, and the skipped prefix (if
-any). If a suitable delimited substring is not found, the first
-element of the array is the empty string, the second is the complete
-original text, and the prefix returned in the third element is an
-empty string.
-
-In a scalar context, just the extracted substring is returned. In
-a void context, the extracted substring (and any prefix) are simply
-removed from the beginning of the first argument.
-
-Examples:
-
- # Remove a single-quoted substring from the very beginning of $text:
-
- $substring = extract_delimited($text, "'", '');
-
- # Remove a single-quoted Pascalish substring (i.e. one in which
- # doubling the quote character escapes it) from the very
- # beginning of $text:
-
- $substring = extract_delimited($text, "'", '', "'");
-
- # Extract a single- or double- quoted substring from the
- # beginning of $text, optionally after some whitespace
- # (note the list context to protect $text from modification):
-
- ($substring) = extract_delimited $text, q{"'};
-
-
- # Delete the substring delimited by the first '/' in $text:
-
- $text = join '', (extract_delimited($text,'/','[^/]*')[2,1];
-
-Note that this last example is I<not> the same as deleting the first
-quote-like pattern. For instance, if C<$text> contained the string:
-
- "if ('./cmd' =~ m/$UNIXCMD/s) { $cmd = $1; }"
-
-then after the deletion it would contain:
-
- "if ('.$UNIXCMD/s) { $cmd = $1; }"
-
-not:
-
- "if ('./cmd' =~ ms) { $cmd = $1; }"
-
-
-See L<"extract_quotelike"> for a (partial) solution to this problem.
-
-
-=head2 C<extract_bracketed>
-
-Like C<"extract_delimited">, the C<extract_bracketed> function takes
-up to three optional scalar arguments: a string to extract from, a delimiter
-specifier, and a prefix pattern. As before, a missing prefix defaults to
-optional whitespace and a missing text defaults to C<$_>. However, a missing
-delimiter specifier defaults to C<'{}()[]E<lt>E<gt>'> (see below).
-
-C<extract_bracketed> extracts a balanced-bracket-delimited
-substring (using any one (or more) of the user-specified delimiter
-brackets: '(..)', '{..}', '[..]', or '<..>'). Optionally it will also
-respect quoted unbalanced brackets (see below).
-
-A "delimiter bracket" is a bracket in list of delimiters passed as
-C<extract_bracketed>'s second argument. Delimiter brackets are
-specified by giving either the left or right (or both!) versions
-of the required bracket(s). Note that the order in which
-two or more delimiter brackets are specified is not significant.
-
-A "balanced-bracket-delimited substring" is a substring bounded by
-matched brackets, such that any other (left or right) delimiter
-bracket I<within> the substring is also matched by an opposite
-(right or left) delimiter bracket I<at the same level of nesting>. Any
-type of bracket not in the delimiter list is treated as an ordinary
-character.
-
-In other words, each type of bracket specified as a delimiter must be
-balanced and correctly nested within the substring, and any other kind of
-("non-delimiter") bracket in the substring is ignored.
-
-For example, given the string:
-
- $text = "{ an '[irregularly :-(] {} parenthesized >:-)' string }";
-
-then a call to C<extract_bracketed> in a list context:
-
- @result = extract_bracketed( $text, '{}' );
-
-would return:
-
- ( "{ an '[irregularly :-(] {} parenthesized >:-)' string }" , "" , "" )
-
-since both sets of C<'{..}'> brackets are properly nested and evenly balanced.
-(In a scalar context just the first element of the array would be returned. In
-a void context, C<$text> would be replaced by an empty string.)
-
-Likewise the call in:
-
- @result = extract_bracketed( $text, '{[' );
-
-would return the same result, since all sets of both types of specified
-delimiter brackets are correctly nested and balanced.
-
-However, the call in:
-
- @result = extract_bracketed( $text, '{([<' );
-
-would fail, returning:
-
- ( undef , "{ an '[irregularly :-(] {} parenthesized >:-)' string }" );
-
-because the embedded pairs of C<'(..)'>s and C<'[..]'>s are "cross-nested" and
-the embedded C<'E<gt>'> is unbalanced. (In a scalar context, this call would
-return an empty string. In a void context, C<$text> would be unchanged.)
-
-Note that the embedded single-quotes in the string don't help in this
-case, since they have not been specified as acceptable delimiters and are
-therefore treated as non-delimiter characters (and ignored).
-
-However, if a particular species of quote character is included in the
-delimiter specification, then that type of quote will be correctly handled.
-for example, if C<$text> is:
-
- $text = '<A HREF=">>>>">link</A>';
-
-then
-
- @result = extract_bracketed( $text, '<">' );
-
-returns:
-
- ( '<A HREF=">>>>">', 'link</A>', "" )
-
-as expected. Without the specification of C<"> as an embedded quoter:
-
- @result = extract_bracketed( $text, '<>' );
-
-the result would be:
-
- ( '<A HREF=">', '>>>">link</A>', "" )
-
-In addition to the quote delimiters C<'>, C<">, and C<`>, full Perl quote-like
-quoting (i.e. q{string}, qq{string}, etc) can be specified by including the
-letter 'q' as a delimiter. Hence:
-
- @result = extract_bracketed( $text, '<q>' );
-
-would correctly match something like this:
-
- $text = '<leftop: conj /and/ conj>';
-
-See also: C<"extract_quotelike"> and C<"extract_codeblock">.
-
-
-=head2 C<extract_variable>
-
-C<extract_variable> extracts any valid Perl variable or
-variable-involved expression, including scalars, arrays, hashes, array
-accesses, hash look-ups, method calls through objects, subroutine calles
-through subroutine references, etc.
-
-The subroutine takes up to two optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A string specifying a pattern to be matched as a prefix (which is to be
-skipped). If omitted, optional whitespace is skipped.
-
-=back
-
-On success in a list context, an array of 3 elements is returned. The
-elements are:
-
-=over 4
-
-=item [0]
-
-the extracted variable, or variablish expression
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=back
-
-On failure, all of these values (except the remaining text) are C<undef>.
-
-In a scalar context, C<extract_variable> returns just the complete
-substring that matched a variablish expression. C<undef> is returned on
-failure. In addition, the original input text has the returned substring
-(and any prefix) removed from it.
-
-In a void context, the input text just has the matched substring (and
-any specified prefix) removed.
-
-
-=head2 C<extract_tagged>
-
-C<extract_tagged> extracts and segments text between (balanced)
-specified tags.
-
-The subroutine takes up to five optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A string specifying a pattern to be matched as the opening tag.
-If the pattern string is omitted (or C<undef>) then a pattern
-that matches any standard XML tag is used.
-
-=item 3.
-
-A string specifying a pattern to be matched at the closing tag.
-If the pattern string is omitted (or C<undef>) then the closing
-tag is constructed by inserting a C</> after any leading bracket
-characters in the actual opening tag that was matched (I<not> the pattern
-that matched the tag). For example, if the opening tag pattern
-is specified as C<'{{\w+}}'> and actually matched the opening tag
-C<"{{DATA}}">, then the constructed closing tag would be C<"{{/DATA}}">.
-
-=item 4.
-
-A string specifying a pattern to be matched as a prefix (which is to be
-skipped). If omitted, optional whitespace is skipped.
-
-=item 5.
-
-A hash reference containing various parsing options (see below)
-
-=back
-
-The various options that can be specified are:
-
-=over 4
-
-=item C<reject =E<gt> $listref>
-
-The list reference contains one or more strings specifying patterns
-that must I<not> appear within the tagged text.
-
-For example, to extract
-an HTML link (which should not contain nested links) use:
-
- extract_tagged($text, '<A>', '</A>', undef, {reject => ['<A>']} );
-
-=item C<ignore =E<gt> $listref>
-
-The list reference contains one or more strings specifying patterns
-that are I<not> be be treated as nested tags within the tagged text
-(even if they would match the start tag pattern).
-
-For example, to extract an arbitrary XML tag, but ignore "empty" elements:
-
- extract_tagged($text, undef, undef, undef, {ignore => ['<[^>]*/>']} );
-
-(also see L<"gen_delimited_pat"> below).
-
-
-=item C<fail =E<gt> $str>
-
-The C<fail> option indicates the action to be taken if a matching end
-tag is not encountered (i.e. before the end of the string or some
-C<reject> pattern matches). By default, a failure to match a closing
-tag causes C<extract_tagged> to immediately fail.
-
-However, if the string value associated with <reject> is "MAX", then
-C<extract_tagged> returns the complete text up to the point of failure.
-If the string is "PARA", C<extract_tagged> returns only the first paragraph
-after the tag (up to the first line that is either empty or contains
-only whitespace characters).
-If the string is "", the the default behaviour (i.e. failure) is reinstated.
-
-For example, suppose the start tag "/para" introduces a paragraph, which then
-continues until the next "/endpara" tag or until another "/para" tag is
-encountered:
-
- $text = "/para line 1\n\nline 3\n/para line 4";
-
- extract_tagged($text, '/para', '/endpara', undef,
- {reject => '/para', fail => MAX );
-
- # EXTRACTED: "/para line 1\n\nline 3\n"
-
-Suppose instead, that if no matching "/endpara" tag is found, the "/para"
-tag refers only to the immediately following paragraph:
-
- $text = "/para line 1\n\nline 3\n/para line 4";
-
- extract_tagged($text, '/para', '/endpara', undef,
- {reject => '/para', fail => MAX );
-
- # EXTRACTED: "/para line 1\n"
-
-Note that the specified C<fail> behaviour applies to nested tags as well.
-
-=back
-
-On success in a list context, an array of 6 elements is returned. The elements are:
-
-=over 4
-
-=item [0]
-
-the extracted tagged substring (including the outermost tags),
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=item [3]
-
-the opening tag
-
-=item [4]
-
-the text between the opening and closing tags
-
-=item [5]
-
-the closing tag (or "" if no closing tag was found)
-
-=back
-
-On failure, all of these values (except the remaining text) are C<undef>.
-
-In a scalar context, C<extract_tagged> returns just the complete
-substring that matched a tagged text (including the start and end
-tags). C<undef> is returned on failure. In addition, the original input
-text has the returned substring (and any prefix) removed from it.
-
-In a void context, the input text just has the matched substring (and
-any specified prefix) removed.
-
-
-=head2 C<gen_extract_tagged>
-
-(Note: This subroutine is only available under Perl5.005)
-
-C<gen_extract_tagged> generates a new anonymous subroutine which
-extracts text between (balanced) specified tags. In other words,
-it generates a function identical in function to C<extract_tagged>.
-
-The difference between C<extract_tagged> and the anonymous
-subroutines generated by
-C<gen_extract_tagged>, is that those generated subroutines:
-
-=over 4
-
-=item *
-
-do not have to reparse tag specification or parsing options every time
-they are called (whereas C<extract_tagged> has to effectively rebuild
-its tag parser on every call);
-
-=item *
-
-make use of the new qr// construct to pre-compile the regexes they use
-(whereas C<extract_tagged> uses standard string variable interpolation
-to create tag-matching patterns).
-
-=back
-
-The subroutine takes up to four optional arguments (the same set as
-C<extract_tagged> except for the string to be processed). It returns
-a reference to a subroutine which in turn takes a single argument (the text to
-be extracted from).
-
-In other words, the implementation of C<extract_tagged> is exactly
-equivalent to:
-
- sub extract_tagged
- {
- my $text = shift;
- $extractor = gen_extract_tagged(@_);
- return $extractor->($text);
- }
-
-(although C<extract_tagged> is not currently implemented that way, in order
-to preserve pre-5.005 compatibility).
-
-Using C<gen_extract_tagged> to create extraction functions for specific tags
-is a good idea if those functions are going to be called more than once, since
-their performance is typically twice as good as the more general-purpose
-C<extract_tagged>.
-
-
-=head2 C<extract_quotelike>
-
-C<extract_quotelike> attempts to recognize, extract, and segment any
-one of the various Perl quotes and quotelike operators (see
-L<perlop(3)>) Nested backslashed delimiters, embedded balanced bracket
-delimiters (for the quotelike operators), and trailing modifiers are
-all caught. For example, in:
-
- extract_quotelike 'q # an octothorpe: \# (not the end of the q!) #'
-
- extract_quotelike ' "You said, \"Use sed\"." '
-
- extract_quotelike ' s{([A-Z]{1,8}\.[A-Z]{3})} /\L$1\E/; '
-
- extract_quotelike ' tr/\\\/\\\\/\\\//ds; '
-
-the full Perl quotelike operations are all extracted correctly.
-
-Note too that, when using the /x modifier on a regex, any comment
-containing the current pattern delimiter will cause the regex to be
-immediately terminated. In other words:
-
- 'm /
- (?i) # CASE INSENSITIVE
- [a-z_] # LEADING ALPHABETIC/UNDERSCORE
- [a-z0-9]* # FOLLOWED BY ANY NUMBER OF ALPHANUMERICS
- /x'
-
-will be extracted as if it were:
-
- 'm /
- (?i) # CASE INSENSITIVE
- [a-z_] # LEADING ALPHABETIC/'
-
-This behaviour is identical to that of the actual compiler.
-
-C<extract_quotelike> takes two arguments: the text to be processed and
-a prefix to be matched at the very beginning of the text. If no prefix
-is specified, optional whitespace is the default. If no text is given,
-C<$_> is used.
-
-In a list context, an array of 11 elements is returned. The elements are:
-
-=over 4
-
-=item [0]
-
-the extracted quotelike substring (including trailing modifiers),
-
-=item [1]
-
-the remainder of the input text,
-
-=item [2]
-
-the prefix substring (if any),
-
-=item [3]
-
-the name of the quotelike operator (if any),
-
-=item [4]
-
-the left delimiter of the first block of the operation,
-
-=item [5]
-
-the text of the first block of the operation
-(that is, the contents of
-a quote, the regex of a match or substitution or the target list of a
-translation),
-
-=item [6]
-
-the right delimiter of the first block of the operation,
-
-=item [7]
-
-the left delimiter of the second block of the operation
-(that is, if it is a C<s>, C<tr>, or C<y>),
-
-=item [8]
-
-the text of the second block of the operation
-(that is, the replacement of a substitution or the translation list
-of a translation),
-
-=item [9]
-
-the right delimiter of the second block of the operation (if any),
-
-=item [10]
-
-the trailing modifiers on the operation (if any).
-
-=back
-
-For each of the fields marked "(if any)" the default value on success is
-an empty string.
-On failure, all of these values (except the remaining text) are C<undef>.
-
-
-In a scalar context, C<extract_quotelike> returns just the complete substring
-that matched a quotelike operation (or C<undef> on failure). In a scalar or
-void context, the input text has the same substring (and any specified
-prefix) removed.
-
-Examples:
-
- # Remove the first quotelike literal that appears in text
-
- $quotelike = extract_quotelike($text,'.*?');
-
- # Replace one or more leading whitespace-separated quotelike
- # literals in $_ with "<QLL>"
-
- do { $_ = join '<QLL>', (extract_quotelike)[2,1] } until $@;
-
-
- # Isolate the search pattern in a quotelike operation from $text
-
- ($op,$pat) = (extract_quotelike $text)[3,5];
- if ($op =~ /[ms]/)
- {
- print "search pattern: $pat\n";
- }
- else
- {
- print "$op is not a pattern matching operation\n";
- }
-
-
-=head2 C<extract_quotelike> and "here documents"
-
-C<extract_quotelike> can successfully extract "here documents" from an input
-string, but with an important caveat in list contexts.
-
-Unlike other types of quote-like literals, a here document is rarely
-a contiguous substring. For example, a typical piece of code using
-here document might look like this:
-
- <<'EOMSG' || die;
- This is the message.
- EOMSG
- exit;
-
-Given this as an input string in a scalar context, C<extract_quotelike>
-would correctly return the string "<<'EOMSG'\nThis is the message.\nEOMSG",
-leaving the string " || die;\nexit;" in the original variable. In other words,
-the two separate pieces of the here document are successfully extracted and
-concatenated.
-
-In a list context, C<extract_quotelike> would return the list
-
-=over 4
-
-=item [0]
-
-"<<'EOMSG'\nThis is the message.\nEOMSG\n" (i.e. the full extracted here document,
-including fore and aft delimiters),
-
-=item [1]
-
-" || die;\nexit;" (i.e. the remainder of the input text, concatenated),
-
-=item [2]
-
-"" (i.e. the prefix substring -- trivial in this case),
-
-=item [3]
-
-"<<" (i.e. the "name" of the quotelike operator)
-
-=item [4]
-
-"'EOMSG'" (i.e. the left delimiter of the here document, including any quotes),
-
-=item [5]
-
-"This is the message.\n" (i.e. the text of the here document),
-
-=item [6]
-
-"EOMSG" (i.e. the right delimiter of the here document),
-
-=item [7..10]
-
-"" (a here document has no second left delimiter, second text, second right
-delimiter, or trailing modifiers).
-
-=back
-
-However, the matching position of the input variable would be set to
-"exit;" (i.e. I<after> the closing delimiter of the here document),
-which would cause the earlier " || die;\nexit;" to be skipped in any
-sequence of code fragment extractions.
-
-To avoid this problem, when it encounters a here document whilst
-extracting from a modifiable string, C<extract_quotelike> silently
-rearranges the string to an equivalent piece of Perl:
-
- <<'EOMSG'
- This is the message.
- EOMSG
- || die;
- exit;
-
-in which the here document I<is> contiguous. It still leaves the
-matching position after the here document, but now the rest of the line
-on which the here document starts is not skipped.
-
-To prevent <extract_quotelike> from mucking about with the input in this way
-(this is the only case where a list-context C<extract_quotelike> does so),
-you can pass the input variable as an interpolated literal:
-
- $quotelike = extract_quotelike("$var");
-
-
-=head2 C<extract_codeblock>
-
-C<extract_codeblock> attempts to recognize and extract a balanced
-bracket delimited substring that may contain unbalanced brackets
-inside Perl quotes or quotelike operations. That is, C<extract_codeblock>
-is like a combination of C<"extract_bracketed"> and
-C<"extract_quotelike">.
-
-C<extract_codeblock> takes the same initial three parameters as C<extract_bracketed>:
-a text to process, a set of delimiter brackets to look for, and a prefix to
-match first. It also takes an optional fourth parameter, which allows the
-outermost delimiter brackets to be specified separately (see below).
-
-Omitting the first argument (input text) means process C<$_> instead.
-Omitting the second argument (delimiter brackets) indicates that only C<'{'> is to be used.
-Omitting the third argument (prefix argument) implies optional whitespace at the start.
-Omitting the fourth argument (outermost delimiter brackets) indicates that the
-value of the second argument is to be used for the outermost delimiters.
-
-Once the prefix an dthe outermost opening delimiter bracket have been
-recognized, code blocks are extracted by stepping through the input text and
-trying the following alternatives in sequence:
-
-=over 4
-
-=item 1.
-
-Try and match a closing delimiter bracket. If the bracket was the same
-species as the last opening bracket, return the substring to that
-point. If the bracket was mismatched, return an error.
-
-=item 2.
-
-Try to match a quote or quotelike operator. If found, call
-C<extract_quotelike> to eat it. If C<extract_quotelike> fails, return
-the error it returned. Otherwise go back to step 1.
-
-=item 3.
-
-Try to match an opening delimiter bracket. If found, call
-C<extract_codeblock> recursively to eat the embedded block. If the
-recursive call fails, return an error. Otherwise, go back to step 1.
-
-=item 4.
-
-Unconditionally match a bareword or any other single character, and
-then go back to step 1.
-
-=back
-
-
-Examples:
-
- # Find a while loop in the text
-
- if ($text =~ s/.*?while\s*\{/{/)
- {
- $loop = "while " . extract_codeblock($text);
- }
-
- # Remove the first round-bracketed list (which may include
- # round- or curly-bracketed code blocks or quotelike operators)
-
- extract_codeblock $text, "(){}", '[^(]*';
-
-
-The ability to specify a different outermost delimiter bracket is useful
-in some circumstances. For example, in the Parse::RecDescent module,
-parser actions which are to be performed only on a successful parse
-are specified using a C<E<lt>defer:...E<gt>> directive. For example:
-
- sentence: subject verb object
- <defer: {$::theVerb = $item{verb}} >
-
-Parse::RecDescent uses C<extract_codeblock($text, '{}E<lt>E<gt>')> to extract the code
-within the C<E<lt>defer:...E<gt>> directive, but there's a problem.
-
-A deferred action like this:
-
- <defer: {if ($count>10) {$count--}} >
-
-will be incorrectly parsed as:
-
- <defer: {if ($count>
-
-because the "less than" operator is interpreted as a closing delimiter.
-
-But, by extracting the directive using
-S<C<extract_codeblock($text, '{}', undef, 'E<lt>E<gt>')>>
-the '>' character is only treated as a delimited at the outermost
-level of the code block, so the directive is parsed correctly.
-
-=head2 C<extract_multiple>
-
-The C<extract_multiple> subroutine takes a string to be processed and a
-list of extractors (subroutines or regular expressions) to apply to that string.
-
-In an array context C<extract_multiple> returns an array of substrings
-of the original string, as extracted by the specified extractors.
-In a scalar context, C<extract_multiple> returns the first
-substring successfully extracted from the original string. In both
-scalar and void contexts the original string has the first successfully
-extracted substring removed from it. In all contexts
-C<extract_multiple> starts at the current C<pos> of the string, and
-sets that C<pos> appropriately after it matches.
-
-Hence, the aim of of a call to C<extract_multiple> in a list context
-is to split the processed string into as many non-overlapping fields as
-possible, by repeatedly applying each of the specified extractors
-to the remainder of the string. Thus C<extract_multiple> is
-a generalized form of Perl's C<split> subroutine.
-
-The subroutine takes up to four optional arguments:
-
-=over 4
-
-=item 1.
-
-A string to be processed (C<$_> if the string is omitted or C<undef>)
-
-=item 2.
-
-A reference to a list of subroutine references and/or qr// objects and/or
-literal strings and/or hash references, specifying the extractors
-to be used to split the string. If this argument is omitted (or
-C<undef>) the list:
-
- [
- sub { extract_variable($_[0], '') },
- sub { extract_quotelike($_[0],'') },
- sub { extract_codeblock($_[0],'{}','') },
- ]
-
-is used.
-
-
-=item 3.
-
-An number specifying the maximum number of fields to return. If this
-argument is omitted (or C<undef>), split continues as long as possible.
-
-If the third argument is I<N>, then extraction continues until I<N> fields
-have been successfully extracted, or until the string has been completely
-processed.
-
-Note that in scalar and void contexts the value of this argument is
-automatically reset to 1 (under C<-w>, a warning is issued if the argument
-has to be reset).
-
-=item 4.
-
-A value indicating whether unmatched substrings (see below) within the
-text should be skipped or returned as fields. If the value is true,
-such substrings are skipped. Otherwise, they are returned.
-
-=back
-
-The extraction process works by applying each extractor in
-sequence to the text string.
-
-If the extractor is a subroutine it is called in a list context and is
-expected to return a list of a single element, namely the extracted
-text. It may optionally also return two further arguments: a string
-representing the text left after extraction (like $' for a pattern
-match), and a string representing any prefix skipped before the
-extraction (like $` in a pattern match). Note that this is designed
-to facilitate the use of other Text::Balanced subroutines with
-C<extract_multiple>. Note too that the value returned by an extractor
-subroutine need not bear any relationship to the corresponding substring
-of the original text (see examples below).
-
-If the extractor is a precompiled regular expression or a string,
-it is matched against the text in a scalar context with a leading
-'\G' and the gc modifiers enabled. The extracted value is either
-$1 if that variable is defined after the match, or else the
-complete match (i.e. $&).
-
-If the extractor is a hash reference, it must contain exactly one element.
-The value of that element is one of the
-above extractor types (subroutine reference, regular expression, or string).
-The key of that element is the name of a class into which the successful
-return value of the extractor will be blessed.
-
-If an extractor returns a defined value, that value is immediately
-treated as the next extracted field and pushed onto the list of fields.
-If the extractor was specified in a hash reference, the field is also
-blessed into the appropriate class,
-
-If the extractor fails to match (in the case of a regex extractor), or returns an empty list or an undefined value (in the case of a subroutine extractor), it is
-assumed to have failed to extract.
-If none of the extractor subroutines succeeds, then one
-character is extracted from the start of the text and the extraction
-subroutines reapplied. Characters which are thus removed are accumulated and
-eventually become the next field (unless the fourth argument is true, in which
-case they are disgarded).
-
-For example, the following extracts substrings that are valid Perl variables:
-
- @fields = extract_multiple($text,
- [ sub { extract_variable($_[0]) } ],
- undef, 1);
-
-This example separates a text into fields which are quote delimited,
-curly bracketed, and anything else. The delimited and bracketed
-parts are also blessed to identify them (the "anything else" is unblessed):
-
- @fields = extract_multiple($text,
- [
- { Delim => sub { extract_delimited($_[0],q{'"}) } },
- { Brack => sub { extract_bracketed($_[0],'{}') } },
- ]);
-
-This call extracts the next single substring that is a valid Perl quotelike
-operator (and removes it from $text):
-
- $quotelike = extract_multiple($text,
- [
- sub { extract_quotelike($_[0]) },
- ], undef, 1);
-
-Finally, here is yet another way to do comma-separated value parsing:
-
- @fields = extract_multiple($csv_text,
- [
- sub { extract_delimited($_[0],q{'"}) },
- qr/([^,]+)(.*)/,
- ],
- undef,1);
-
-The list in the second argument means:
-I<"Try and extract a ' or " delimited string, otherwise extract anything up to a comma...">.
-The undef third argument means:
-I<"...as many times as possible...">,
-and the true value in the fourth argument means
-I<"...discarding anything else that appears (i.e. the commas)">.
-
-If you wanted the commas preserved as separate fields (i.e. like split
-does if your split pattern has capturing parentheses), you would
-just make the last parameter undefined (or remove it).
-
-
-=head2 C<gen_delimited_pat>
-
-The C<gen_delimited_pat> subroutine takes a single (string) argument and
- > builds a Friedl-style optimized regex that matches a string delimited
-by any one of the characters in the single argument. For example:
-
- gen_delimited_pat(q{'"})
-
-returns the regex:
-
- (?:\"(?:\\\"|(?!\").)*\"|\'(?:\\\'|(?!\').)*\')
-
-Note that the specified delimiters are automatically quotemeta'd.
-
-A typical use of C<gen_delimited_pat> would be to build special purpose tags
-for C<extract_tagged>. For example, to properly ignore "empty" XML elements
-(which might contain quoted strings):
-
- my $empty_tag = '<(' . gen_delimited_pat(q{'"}) . '|.)+/>';
-
- extract_tagged($text, undef, undef, undef, {ignore => [$empty_tag]} );
-
-
-C<gen_delimited_pat> may also be called with an optional second argument,
-which specifies the "escape" character(s) to be used for each delimiter.
-For example to match a Pascal-style string (where ' is the delimiter
-and '' is a literal ' within the string):
-
- gen_delimited_pat(q{'},q{'});
-
-Different escape characters can be specified for different delimiters.
-For example, to specify that '/' is the escape for single quotes
-and '%' is the escape for double quotes:
-
- gen_delimited_pat(q{'"},q{/%});
-
-If more delimiters than escape chars are specified, the last escape char
-is used for the remaining delimiters.
-If no escape char is specified for a given specified delimiter, '\' is used.
-
-Note that
-C<gen_delimited_pat> was previously called
-C<delimited_pat>. That name may still be used, but is now deprecated.
-
-
-=head1 DIAGNOSTICS
-
-In a list context, all the functions return C<(undef,$original_text)>
-on failure. In a scalar context, failure is indicated by returning C<undef>
-(in this case the input text is not modified in any way).
-
-In addition, on failure in I<any> context, the C<$@> variable is set.
-Accessing C<$@-E<gt>{error}> returns one of the error diagnostics listed
-below.
-Accessing C<$@-E<gt>{pos}> returns the offset into the original string at
-which the error was detected (although not necessarily where it occurred!)
-Printing C<$@> directly produces the error message, with the offset appended.
-On success, the C<$@> variable is guaranteed to be C<undef>.
-
-The available diagnostics are:
-
-=over 4
-
-=item C<Did not find a suitable bracket: "%s">
-
-The delimiter provided to C<extract_bracketed> was not one of
-C<'()[]E<lt>E<gt>{}'>.
-
-=item C<Did not find prefix: /%s/>
-
-A non-optional prefix was specified but wasn't found at the start of the text.
-
-=item C<Did not find opening bracket after prefix: "%s">
-
-C<extract_bracketed> or C<extract_codeblock> was expecting a
-particular kind of bracket at the start of the text, and didn't find it.
-
-=item C<No quotelike operator found after prefix: "%s">
-
-C<extract_quotelike> didn't find one of the quotelike operators C<q>,
-C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y> at the start of the substring
-it was extracting.
-
-=item C<Unmatched closing bracket: "%c">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> encountered
-a closing bracket where none was expected.
-
-=item C<Unmatched opening bracket(s): "%s">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> ran
-out of characters in the text before closing one or more levels of nested
-brackets.
-
-=item C<Unmatched embedded quote (%s)>
-
-C<extract_bracketed> attempted to match an embedded quoted substring, but
-failed to find a closing quote to match it.
-
-=item C<Did not find closing delimiter to match '%s'>
-
-C<extract_quotelike> was unable to find a closing delimiter to match the
-one that opened the quote-like operation.
-
-=item C<Mismatched closing bracket: expected "%c" but found "%s">
-
-C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> found
-a valid bracket delimiter, but it was the wrong species. This usually
-indicates a nesting error, but may indicate incorrect quoting or escaping.
-
-=item C<No block delimiter found after quotelike "%s">
-
-C<extract_quotelike> or C<extract_codeblock> found one of the
-quotelike operators C<q>, C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y>
-without a suitable block after it.
-
-=item C<Did not find leading dereferencer>
-
-C<extract_variable> was expecting one of '$', '@', or '%' at the start of
-a variable, but didn't find any of them.
-
-=item C<Bad identifier after dereferencer>
-
-C<extract_variable> found a '$', '@', or '%' indicating a variable, but that
-character was not followed by a legal Perl identifier.
-
-=item C<Did not find expected opening bracket at %s>
-
-C<extract_codeblock> failed to find any of the outermost opening brackets
-that were specified.
-
-=item C<Improperly nested codeblock at %s>
-
-A nested code block was found that started with a delimiter that was specified
-as being only to be used as an outermost bracket.
-
-=item C<Missing second block for quotelike "%s">
-
-C<extract_codeblock> or C<extract_quotelike> found one of the
-quotelike operators C<s>, C<tr> or C<y> followed by only one block.
-
-=item C<No match found for opening bracket>
-
-C<extract_codeblock> failed to find a closing bracket to match the outermost
-opening bracket.
-
-=item C<Did not find opening tag: /%s/>
-
-C<extract_tagged> did not find a suitable opening tag (after any specified
-prefix was removed).
-
-=item C<Unable to construct closing tag to match: /%s/>
-
-C<extract_tagged> matched the specified opening tag and tried to
-modify the matched text to produce a matching closing tag (because
-none was specified). It failed to generate the closing tag, almost
-certainly because the opening tag did not start with a
-bracket of some kind.
-
-=item C<Found invalid nested tag: %s>
-
-C<extract_tagged> found a nested tag that appeared in the "reject" list
-(and the failure mode was not "MAX" or "PARA").
-
-=item C<Found unbalanced nested tag: %s>
-
-C<extract_tagged> found a nested opening tag that was not matched by a
-corresponding nested closing tag (and the failure mode was not "MAX" or "PARA").
-
-=item C<Did not find closing tag>
-
-C<extract_tagged> reached the end of the text without finding a closing tag
-to match the original opening tag (and the failure mode was not
-"MAX" or "PARA").
-
-
-
-
-=back
-
-
-=head1 AUTHOR
-
-Damian Conway (damian@conway.org)
-
-
-=head1 BUGS AND IRRITATIONS
-
-There are undoubtedly serious bugs lurking somewhere in this code, if
-only because parts of it give the impression of understanding a great deal
-more about Perl than they really do.
-
-Bug reports and other feedback are most welcome.
-
-
-=head1 COPYRIGHT
-
- Copyright (c) 1997-2001, Damian Conway. All Rights Reserved.
- This module is free software. It may be used, redistributed
- and/or modified under the same terms as Perl itself.
diff --git a/locale/cs/LC_MESSAGES/vdradmin.mo b/locale/cs/LC_MESSAGES/vdradmin.mo
index d2b9246..b08a3bd 100644
--- a/locale/cs/LC_MESSAGES/vdradmin.mo
+++ b/locale/cs/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/de/LC_MESSAGES/vdradmin.mo b/locale/de/LC_MESSAGES/vdradmin.mo
index 874df93..61a1fde 100644
--- a/locale/de/LC_MESSAGES/vdradmin.mo
+++ b/locale/de/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/es/LC_MESSAGES/vdradmin.mo b/locale/es/LC_MESSAGES/vdradmin.mo
index 9544fd4..1a21f0a 100644
--- a/locale/es/LC_MESSAGES/vdradmin.mo
+++ b/locale/es/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/fi/LC_MESSAGES/vdradmin.mo b/locale/fi/LC_MESSAGES/vdradmin.mo
index 1cf67ae..2d034b1 100644
--- a/locale/fi/LC_MESSAGES/vdradmin.mo
+++ b/locale/fi/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/fr/LC_MESSAGES/vdradmin.mo b/locale/fr/LC_MESSAGES/vdradmin.mo
index 7e07375..1d69fe3 100644
--- a/locale/fr/LC_MESSAGES/vdradmin.mo
+++ b/locale/fr/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/nl/LC_MESSAGES/vdradmin.mo b/locale/nl/LC_MESSAGES/vdradmin.mo
index 379e63d..472555d 100644
--- a/locale/nl/LC_MESSAGES/vdradmin.mo
+++ b/locale/nl/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/locale/ru/LC_MESSAGES/vdradmin.mo b/locale/ru/LC_MESSAGES/vdradmin.mo
index 3f0a923..d41794b 100644
--- a/locale/ru/LC_MESSAGES/vdradmin.mo
+++ b/locale/ru/LC_MESSAGES/vdradmin.mo
Binary files differ
diff --git a/make.sh b/make.sh
index d5fedba..e61ada7 100755
--- a/make.sh
+++ b/make.sh
@@ -1,7 +1,7 @@
#!/bin/bash
LANGS="cs de es fr fi nl ru"
-DIST_FILES="ChangeLog COPYING CREDITS FAQ HISTORY INSTALL README README.translators REQUIREMENTS contrib convert.pl install.sh lib locale make.sh template uninstall.sh vdradmind.pl vdradmind.pl.1"
+DIST_FILES="autotimer2searchtimer.pl ChangeLog COPYING CREDITS FAQ HISTORY INSTALL README README.translators REQUIREMENTS contrib convert.pl install.sh lib locale make.sh template uninstall.sh vdradmind.pl vdradmind.pl.1"
INSTALL_SH=./install.sh
CVS2CL="./cvs2cl.pl" # get it at http://www.red-bean.com/cvs2cl/
TMPDIR=/tmp
diff --git a/po/cs.po b/po/cs.po
index e4f71e7..49ecb20 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: cs\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-09-23 13:14+0200\n"
"Last-Translator: Karel Borkovec <her-ur@her-ur.org>\n"
"Language-Team: <cs@li.org>\n"
@@ -17,8 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.2\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -34,11 +33,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-2"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "O programu"
@@ -61,54 +62,68 @@ msgid "Translation Team"
msgstr "Pøekladatelský tým"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Holand¹tina:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Angliètina:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Fin¹tina:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Nìmèina:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Francouz¹tina:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr ""
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "©panìl¹tina:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Nìmèina:"
+msgid "Finnish:"
+msgstr "Fin¹tina:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "©panìl¹tina:"
+msgid "Dutch:"
+msgstr "Holand¹tina:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Ru¹tina:"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "Francouz¹tina:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Informace"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "Verze VDRAdminu-AM:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "Verze VDR:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "Podporované vlastnosti ve VDR:"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+#, fuzzy
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"TV streamování (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
+"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -116,7 +131,7 @@ msgstr ""
"TV streamování (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -124,11 +139,11 @@ msgstr ""
"Pøejmenování nahrávek (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/"
"patches/\" target=\"_blank\">Liemikuutio Patch</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Rady a nahla¹ování chyb"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -137,7 +152,7 @@ msgstr ""
"Pokud si nevíte rady, pou¾ijte prosím nejdøíve on-line nápovìdu na rùzných "
"webech. Kliknìte zde <img src=\"bilder/help.png\" alt=\"\" />."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -149,7 +164,7 @@ msgstr ""
"\"_blank\">VDR-Portal</a> (nìmecký jazyk je samozøejmostí, popø. "
"angliètina). Vyu¾ijte tzv. ANNOUNCE vlákno, hledat:"
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -172,7 +187,6 @@ msgid "AutoTimer"
msgstr "Auto-Èasovaè"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -180,11 +194,12 @@ msgstr "Auto-Èasovaè"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Priorita:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -192,6 +207,8 @@ msgstr "Priorita:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr ""
@@ -200,30 +217,38 @@ msgid "New AutoTimer"
msgstr "Nové èasování"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Nápovìda"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Aktivovat"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Kanál"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Start"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Stop"
@@ -236,14 +261,11 @@ msgstr "Jméno"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Vybrat v¹e/Nic"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -255,14 +277,15 @@ msgstr "Vybrat v¹e/Nic"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Ano"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -274,23 +297,32 @@ msgstr "Ano"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "Ne"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Upravit"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "Smazat èasovaè?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Smazat"
@@ -312,200 +344,10 @@ msgstr "Vymazat v¹echny vybrané èasovaèe?"
msgid "No AutoTimers defined!"
msgstr "Nové èasování"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Pøidat nový AutoÈasovaè"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "Upravit AutoÈasovaè"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "Aktivní AutoÈasovaè:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Vyhledávací znaky:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "Hledat v:"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "Název"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Titulky"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Popis"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Hledat pouze v tyto dny:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Pondìlí"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Úterý"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Støeda"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Ètvrtek"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Pátek"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Sobota"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Nedìle"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Kanál"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "v¹e"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Zaèátek po:"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "hodin"
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Konec pøed:"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "minuty"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Epizoda:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Zapamatovat naprogramovaný èasovaè:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Slo¾ka:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Ulo¾it"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Test:"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Zru¹it"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Vysíláno"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Ulo¾eno v:"
-
-#: ../template/default/at_timer_new.html:182
-#, fuzzy
-msgid "No matches found!"
-msgstr "Nefunguje"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Nastavení"
@@ -591,7 +433,7 @@ msgstr "Guest heslo:"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Èasová pøímka"
@@ -621,6 +463,33 @@ msgstr "Aktivní:"
msgid "Timeout:"
msgstr ""
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "minuty"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr ""
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr ""
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -774,6 +643,12 @@ msgstr "V \"AutoÈasovaèi\"?"
msgid "In \"Watch TV\"?"
msgstr "V \"Sleduj TV\"?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Ulo¾it"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Pou¾ij"
@@ -828,6 +703,13 @@ msgstr ""
"class=\"submit\" value=\"Force Update\"/> k vynucení re-connectu k VDR, "
"stáhnutí aktuálního EPG a kontroly AutoÈasovaèù.</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "Upravit AutoÈasovaè"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -838,6 +720,11 @@ msgid ""
"irregularly broadcasted series or movies you don't want to miss.</p>"
msgstr ""
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "Aktivní AutoÈasovaè:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -846,6 +733,11 @@ msgid ""
"so this AutoTimer only programs the (one!) next matching broadcast."
msgstr ""
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Vyhledávací znaky:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -867,18 +759,36 @@ msgid ""
"\"Enterprise~Azati Prime\" as Blacklist-string)."
msgstr ""
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "Hledat v:"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
"search pattern."
msgstr ""
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Hledat pouze v tyto dny:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr ""
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Kanál"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -886,18 +796,33 @@ msgid ""
"in \"Configuration\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Zaèátek po:"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Konec pøed:"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -975,12 +900,22 @@ msgstr ""
"until the given number of days since the <strong>start</strong> time of the "
"recording has passed by."
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Epizoda:"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
"subtitle to the recording's file name."
msgstr ""
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Zapamatovat naprogramovaný èasovaè:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -988,6 +923,12 @@ msgid ""
"have been programmed automatically in the timers listing."
msgstr ""
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Slo¾ka:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1352,8 +1293,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Nahrávky"
@@ -1582,35 +1523,42 @@ msgstr "Vá¹ prohlí¾eè nepodporuje rámy!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "Co bì¾í nyní?"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "Co pobì¾í dnes?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "Kanály"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "hledat"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Dálkové ovládání"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "Sleduj TV"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
#, fuzzy
msgid "Commands"
msgstr "Pøíkazy:"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
#, fuzzy
msgid "Search"
msgstr "hledat"
@@ -1643,6 +1591,7 @@ msgid "view"
msgstr "náhled"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "nahrát"
@@ -1678,7 +1627,7 @@ msgstr "Naladit TV"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Stream"
@@ -1693,6 +1642,8 @@ msgstr "Start!"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "Více informací"
@@ -1727,7 +1678,7 @@ msgstr "Nahrávání"
msgid "No EPG information available"
msgstr "®ádné informace"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Bì¾í dnes"
@@ -1735,6 +1686,22 @@ msgstr "Bì¾í dnes"
msgid "starting at"
msgstr "zaèíná v"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "hodin"
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1742,12 +1709,12 @@ msgid "What's on:"
msgstr "Co bì¾í:"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr "v"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "nyní"
@@ -1789,10 +1756,16 @@ msgstr "Nové jméno nahrávky:"
msgid "Subtitle:"
msgstr "Titulky:"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Pøejmenovat"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Zru¹it"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Celkové:"
@@ -1814,49 +1787,50 @@ msgstr "Datum"
msgid "Total"
msgstr "Celkem"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "Nový"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "Hrát"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "Støihnout"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "Smazat nahrávku?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Obnovit"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Pøíkazy:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Spustit"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "Opravdu spustit tento pøíkaz?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Smazat oznaèené nahrávky"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "Smazat v¹echny oznaèené nahrávky?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
#, fuzzy
msgid "No recordings available"
msgstr "Nápovìda není dostupná"
@@ -1923,6 +1897,48 @@ msgstr "®ádný èasovaè není definován!"
msgid "Create New Timer"
msgstr "Vytvoøit nový èasovaè"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Pondìlí"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Úterý"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Støeda"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Ètvrtek"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Pátek"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Sobota"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Nedìle"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -1991,83 +2007,441 @@ msgstr "SVDRP pøíkazy:"
msgid "Commands defined in commands.conf:"
msgstr "Pøíkazy definované v commands.conf:"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Výstup"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "hledat"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "Pøidat nový AutoÈasovaè"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+#, fuzzy
+msgid "No matches found!"
+msgstr "Nefunguje"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "Obecné nastavení"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "Hledat v:"
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "Hledat v:"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "Název"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Titulky"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Popis"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "Kanál"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "nyní"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "Interval:"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "Kanál"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Jazyk:"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "Kanál"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "U¾iv. jméno:"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "Zaèátek po:"
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "Zaèátek po:"
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "Délka:"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "Délka:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "Délka:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "Naladit TV"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "v¹e"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "Hledat v:"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "Pøejmenovat nahrávku"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "Smazat nahrávku?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "Nahrávky"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "Slo¾ka s nahrávkami:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Pøidat nový AutoÈasovaè"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Test:"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Vysíláno"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Ulo¾eno v:"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "hledat"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "hledat"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "Aktivovat"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "Nahoru"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "Vyhledávací znaky:"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "Pátek"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "Vymazat vybrané èasovaèe"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "Vymazat v¹echny vybrané èasovaèe?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "Vymazat vybrané èasovaèe"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "Délka:"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "Jaké je Va¹e VDR hostname?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "Na jakém portu mám oèekávat SVDRP pøíkazy?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr "Na jaké adrese má èekat VDRAdmin-AM (0.0.0.0 pro jakoukoli)?"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "Na jakém portu má èekat VDRAdmin-AM?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "U¾iv. jméno?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "Heslo?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Kam ukládáte nahrávky z VDR?"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Kde se nacházejí konfiguraèní soubory VDR?"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "Konfiguraèní soubor ulo¾en v poøádku."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s startuje s pidem %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "Nefunguje"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "Po¾adovaná URL nebyla na tomto serveru nalezena!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Zakázáno"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "Nemáte práva pro vyu¾ití této funkce!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "Pøístup k souboru \"%s\" odmítnut!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "URL \"%s\" nebyla na tomto serveru nalezena!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "nyní"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "Nemohu otevøít soubor \"%s\"!"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2076,61 +2450,61 @@ msgstr ""
"Nemohu se pøipojit k VDR v %s:%s<br /><br />Prosím zkontrolujte, zda VDR "
"bì¾í a pokud je soubor soubor svdrphosts.conf øádnì nastaven."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Chyba pøi posílání pøíkazu k VDR v %s"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
#, fuzzy
msgid "Internal error:"
msgstr "Interval:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "Nemohu nalézt EPG vstup!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Co pobì¾í zítra?"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "Pobì¾í v %s"
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "dal¹í"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Co bì¾í pak"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Co bì¾í v"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr ""
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "struèný pøehled"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "detailní pøehled"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Plán"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Èasovaèe"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Defaultní nastavení"
diff --git a/po/de.po b/po/de.po
index 66f1793..e10fb80 100644
--- a/po/de.po
+++ b/po/de.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDRAdmin-AM-3.4.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-03-30 14:49+0100\n"
"Last-Translator: Andreas Mair <mail@andreas.vdr-developer.org>\n"
"Language-Team: <LL.org>\n"
@@ -24,8 +24,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -41,11 +40,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-1"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "Über"
@@ -66,54 +67,66 @@ msgid "Translation Team"
msgstr "Übersetzungsteam"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Holländisch:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Englisch:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Finnisch:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Deutsch:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Französisch:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "Wird zurzeit nicht aktualisiert, ältere Übersetzungen von:"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "Spanisch:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Deutsch:"
+msgid "Finnish:"
+msgstr "Finnisch:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "Spanisch:"
+msgid "Dutch:"
+msgstr "Holländisch:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Russisch:"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+msgid "Czech:"
+msgstr "Tschechisch:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Informationen"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "VDRAdmin-AM Version:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "VDR Version:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "Unterstützte Funktionen im VDR:"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -121,7 +134,7 @@ msgstr ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -129,11 +142,11 @@ msgstr ""
"Aufnahmen umbenennen (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/"
"patches/\" target=\"_blank\">Liemikuutio Patch</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Hilfe bekommen und Fehler melden"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -143,7 +156,7 @@ msgstr ""
"Online-Hilfe, die für einige Seiten verfügbar ist. Sie können Sie aufrufen "
"indem Sie <img src=\"bilder/help.png\" alt=\"\" /> anklicken."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -155,7 +168,7 @@ msgstr ""
"a> zu bekommen. Bitte verwenden Sie hierfür wenn möglich den "
"Ankündigungsthread, suchen Sie dafür nach:"
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -178,7 +191,6 @@ msgid "AutoTimer"
msgstr "AutoTimer"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -186,11 +198,12 @@ msgstr "AutoTimer"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Priorität:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -198,6 +211,8 @@ msgstr "Priorität:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "Lebenszeit:"
@@ -206,30 +221,38 @@ msgid "New AutoTimer"
msgstr "Neuer AutoTimer"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Hilfe"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Aktiv"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Sender"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Beginn"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Ende"
@@ -242,14 +265,11 @@ msgstr "Name"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Alle/keine auswählen"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -261,14 +281,15 @@ msgstr "Alle/keine auswählen"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Ja"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -280,23 +301,32 @@ msgstr "Ja"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "Nein"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Bearbeiten"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "Timer löschen?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Löschen"
@@ -317,199 +347,10 @@ msgstr "Ausgewählte Timer wirklich löschen?"
msgid "No AutoTimers defined!"
msgstr "Es wurden noch keine AutoTimer definiert!"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Neuen AutoTimer anlegen"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "AutoTimer editieren"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "AutoTimer aktiv:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "einmal"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Suchbegriffe:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "zu suchen in:"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "Titel"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Untertitel"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Beschreibung"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Nur an diesen Tagen suchen:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Montag"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Freitag"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Samstag"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Sender:"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "alle"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Beginnt frühestens:"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "Uhr"
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Endet spätestens:"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr "Zeitpuffer für Anfang/Ende überschreiben:"
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "Zeitpuffer Anfang:"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "Minuten"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "Zeitpuffer Ende:"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Serie:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Programmierte Timer merken:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Ordner:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Speichern"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Testen"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Ausgestrahlt"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Abgelegt in"
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr "Nichts gefunden!"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Konfiguration"
@@ -595,7 +436,7 @@ msgstr "Gast Passwort:"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Zeitleiste"
@@ -625,6 +466,33 @@ msgstr "Aktiv:"
msgid "Timeout:"
msgstr "Timeout:"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "Minuten"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "Zeitpuffer Anfang:"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "Zeitpuffer Ende:"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -778,6 +646,12 @@ msgstr "Bei \"AutoTimer\"?"
msgid "In \"Watch TV\"?"
msgstr "In \"Fernseher\"?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Speichern"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Anwenden"
@@ -840,6 +714,13 @@ msgstr ""
"Daten zu holen und anschliessend nach übereinstimmenden AutoTimern zu suchen."
"</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "AutoTimer editieren"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -858,6 +739,11 @@ msgstr ""
"Das ist sehr komfortable für unregelmäßig ausgestrahlte Serien oder "
"Spielfilmen, die Sie nicht vermissen wollen.</p>"
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "AutoTimer aktiv:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -872,6 +758,11 @@ msgstr ""
"dass dieser AutoTimer nur die als nächstes übereinstimmende Sendung (eine "
"einzige!) programmiert."
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Suchbegriffe:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -912,6 +803,12 @@ msgstr ""
"Eintrag) oder nur eine bestimmte Episode (z.B. \"Enterprise~Azati Prime\") "
"ausschliessen."
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "zu suchen in:"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
@@ -920,12 +817,24 @@ msgstr ""
"Hier geben Sie die Abschnitte aus dem EPG an, den VDRAdmin-AM nach den "
"Suchbegriffen durchsuchen soll."
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Nur an diesen Tagen suchen:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr "Haken Sie die Tage an, an denen Sendungen gesucht werden sollen."
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Sender:"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -937,6 +846,11 @@ msgstr ""
"erwünschten Sender für den AutoTimer können auf der \"Konfiguration\" Seite "
"eingestellt werden."
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Beginnt frühestens:"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
@@ -945,6 +859,11 @@ msgstr ""
"Eine Sendung darf frühestens zu der hier eingestellten Uhrzeit beginnen. Das "
"erste Textfeld gibt die Stunden, das zweite die Minuten an."
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Endet spätestens:"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
@@ -953,6 +872,11 @@ msgstr ""
"Eine Sendung darf spätestens zu der hier eingestellten Uhrzeit aufhören. Das "
"erste Textfeld gibt die Stunden, das zweite die Minuten an."
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr "Zeitpuffer für Anfang/Ende überschreiben:"
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -1038,6 +962,11 @@ msgstr ""
"Anzahl von Tagen seit der <strong>Startzeit</strong> abgelaufen ist und "
"Plattenplatz für eine neue Aufnahme benötigt wird."
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Serie:"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
@@ -1046,6 +975,11 @@ msgstr ""
"Aktivieren Sie diese Option, wenn Sie wollen, dass VDRAdmin-AM den "
"Untertitel der Sendung aus dem EPG an den Namen der Aufnahme anhängt."
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Programmierte Timer merken:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -1057,6 +991,12 @@ msgstr ""
"programmierte Timer in der Timerliste deaktiviert oder gelöscht werden "
"sollen."
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Ordner:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1496,8 +1436,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Aufnahmen"
@@ -1830,34 +1770,40 @@ msgstr "Ihr Browser unterstützt keine Frames!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "Was läuft jetzt?"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "Was läuft heute?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "Programmübersicht"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+msgid "EPG Search"
+msgstr "EPG Search"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Fernbedienung"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "Fernseher"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr "Befehle"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "Suchen"
@@ -1890,6 +1836,7 @@ msgid "view"
msgstr "umschalten"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "aufnehmen"
@@ -1924,7 +1871,7 @@ msgstr "TV umschalten"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Stream"
@@ -1939,6 +1886,8 @@ msgstr "Go!"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "mehr Infos"
@@ -1971,7 +1920,7 @@ msgstr "Sendung aufnehmen"
msgid "No EPG information available"
msgstr "Es sind keine EPG Informationen vorhanden"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Was läuft heute"
@@ -1979,6 +1928,22 @@ msgstr "Was läuft heute"
msgid "starting at"
msgstr "ab"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "Uhr"
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1986,12 +1951,12 @@ msgid "What's on:"
msgstr "Was läuft:"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr "um"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "jetzt"
@@ -2033,10 +1998,16 @@ msgstr "Neuer Titel der Aufnahme:"
msgid "Subtitle:"
msgstr "Untertitel:"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Umbenennen"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Abbrechen"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Total:"
@@ -2058,49 +2029,50 @@ msgstr "Datum"
msgid "Total"
msgstr "Gesamt"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "neu"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "Abspielen"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "Schneiden"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "Aufnahme löschen?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Neu einlesen"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Befehle:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Ausführen"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "Diesen Befehl wirklich ausführen?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Ausgewählte Aufnahmen löschen"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "Ausgewählte Aufnahmen wirklich löschen?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr "Es sind keine Aufnahmen vorhanden"
@@ -2166,6 +2138,48 @@ msgstr "Es wurden noch keine Timer angelegt!"
msgid "Create New Timer"
msgstr "Neuen Timer anlegen"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Montag"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Dienstag"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Donnerstag"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Freitag"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Samstag"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Sonntag"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -2234,85 +2248,407 @@ msgstr "SVDRP Befehle:"
msgid "Commands defined in commands.conf:"
msgstr "In commands.conf definierte Befehle:"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Ausgabe"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr "Neue Suche anlegen"
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+msgid "Edit Search"
+msgstr "Suche bearbeiten"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr "Kurzes Suchmuster.\\nSoll es wirklich verwendet werden?"
+
+#: ../template/default/epgsearch_new.html:151
+msgid "Add New Search"
+msgstr "Neuen Suche anlegen"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr "Ergebnis ausblenden"
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr "Nichts gefunden!"
+
+#: ../template/default/epgsearch_new.html:211
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: ../template/default/epgsearch_new.html:216
+msgid "Search Term:"
+msgstr "Suche:"
+
+#: ../template/default/epgsearch_new.html:223
+msgid "Search Mode:"
+msgstr "Suchmodus:"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr "Ausdruck"
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr "alle Worte"
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr "ein Wort"
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr "exakt"
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr "regulärer Ausdruck"
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr "unscharf"
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr "Toleranz für \"unscharf\":"
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr "Groß/klein:"
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "Titel"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Untertitel"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Beschreibung"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr "Verwende erweiterte EPG Info:"
+
+#: ../template/default/epgsearch_new.html:293
+msgid "Use Channel:"
+msgstr "Verwende Kanal:"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+msgid "no"
+msgstr "nein"
+
+#: ../template/default/epgsearch_new.html:297
+msgid "interval"
+msgstr "Bereich"
+
+#: ../template/default/epgsearch_new.html:298
+msgid "channel group"
+msgstr "Kanalgruppe"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr "ohne PayTV"
+
+#: ../template/default/epgsearch_new.html:302
+msgid "Range:"
+msgstr "Bereich:"
+
+#: ../template/default/epgsearch_new.html:316
+msgid "Channel Group:"
+msgstr "Kanalgruppe:"
+
+#: ../template/default/epgsearch_new.html:327
+msgid "Use Time:"
+msgstr "Verwende Uhrzeit:"
+
+#: ../template/default/epgsearch_new.html:333
+msgid "Start After:"
+msgstr "Start nach:"
+
+#: ../template/default/epgsearch_new.html:340
+msgid "Start Before:"
+msgstr "Start vor:"
+
+#: ../template/default/epgsearch_new.html:352
+msgid "Use Duration:"
+msgstr "Verwende Dauer:"
+
+#: ../template/default/epgsearch_new.html:358
+msgid "Min. Duration:"
+msgstr "Minimale Dauer:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr "hh:mm"
+
+#: ../template/default/epgsearch_new.html:365
+msgid "Max. Duration:"
+msgstr "Maximale Dauer:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr "Verwende Wochentag:"
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr "Verwende Ausschlusslisten:"
+
+#: ../template/default/epgsearch_new.html:397
+msgid "selection"
+msgstr "Auswahl"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "alle"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr "In Favoritenmenü verwenden:"
+
+#: ../template/default/epgsearch_new.html:420
+msgid "Use as Search Timer:"
+msgstr "Als Suchtimer verwenden:"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr "nur ankündigen"
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr "nur umschalten"
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr "Einstellungen für \"aufnehmen\""
+
+#: ../template/default/epgsearch_new.html:440
+msgid "Series Recording:"
+msgstr "Serienaufnahme:"
+
+#: ../template/default/epgsearch_new.html:452
+msgid "Delete Recordings After ... Days:"
+msgstr "Aufnahme nach ... Tagen löschen:"
+
+#: ../template/default/epgsearch_new.html:455
+msgid "Keep ... Recordings:"
+msgstr "Behalte ... Aufnahmen:"
+
+#: ../template/default/epgsearch_new.html:460
+msgid "Pause, when ... recordings exist:"
+msgstr "Pause, wenn ... Aufnahmen existieren:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr "Vermeide Wiederholung:"
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr "Erlaubte Wiederholungen:"
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr "Nur Wiederholungen innerhalb ... Tagen:"
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr "Vergleiche:"
+
+#: ../template/default/epgsearch_new.html:526
+msgid "VPS:"
+msgstr "VPS:"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr "Settings für \"nur umschalten\""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr "Umschalten ... Minuten vor Start:"
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr "Als Vorlage speichern"
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Neuen AutoTimer anlegen"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "einmal"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Testen"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Ausgestrahlt"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Abgelegt in"
+
+#: ../template/default/epgsearch_list.html:6
+msgid "EPG search"
+msgstr "EPG search"
+
+#: ../template/default/epgsearch_list.html:26
+msgid "New Search"
+msgstr "Neue Suche"
+
+#: ../template/default/epgsearch_list.html:54
+msgid "Action"
+msgstr "Aktion"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr "Von"
+
+#: ../template/default/epgsearch_list.html:93
+msgid "To"
+msgstr "Bis"
+
+#: ../template/default/epgsearch_list.html:107
+msgid "Search pattern"
+msgstr "Suchbegriff"
+
+#: ../template/default/epgsearch_list.html:163
+msgid "Find"
+msgstr "Suche starten"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr "Favoriten anzeigen"
+
+#: ../template/default/epgsearch_list.html:187
+msgid "Delete Selected Searches"
+msgstr "Ausgewählte Suchen löschen"
+
+#: ../template/default/epgsearch_list.html:187
+msgid "Delete all selected searches?"
+msgstr "Alle ausgewählten Suchen wirklich löschen?"
+
+#: ../template/default/epgsearch_list.html:188
+msgid "Execute Selected Searches"
+msgstr "Ausgewählte Suchen ausführen"
+
+#: ../template/default/epgsearch_list.html:212
+msgid "Duration"
+msgstr "Dauer"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "Wie lautet der Hostname des VDR (z.B. video.intra.net)?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "Auf welchem Port hört der VDR auf SVDRP-Anfragen?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr ""
"An welcher Adresse soll VDRAdmin-AM auf Verbindungen warten (0.0.0.0 für "
"alle)?"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "Auf welchem Port soll VDRAdmin-AM hören?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "Benutzername?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "Passwort?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Wo befinden sich die Aufnahmen?"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Wo befinden sich die Konfigurationsdateien des VDR?"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "Konfigurationsdatei wurde erfolgreich geschrieben."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s wurde mit der Prozeß-ID %d gestartet."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "Nicht gefunden"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "Die angeforderte URL konnte auf dem Server nicht gefunden werden!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Verboten"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "Sie haben nicht die Erlaubnis diese Funktion aufzurufen!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "Zugriff auf Datei \"%s\" verweigert!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "Die URL \"%s\" wurde auf dem Server nicht gefunden!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr "--- kein Timer ---"
+
+#: ../vdradmind.pl:2276
+msgid "unknown"
+msgstr "unbekannt"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr "keine"
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "Kann Datei \"%s\" nicht öffnen!"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2321,78 +2657,60 @@ msgstr ""
"Konnte Verbindung zu %s:%s nicht aufbauen!<br /><br />Bitte überprüfen Sie, "
"dass VDR läuft und dass seine svdrphosts.conf richtig konfiguriert ist."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Fehler beim Senden eines Kommandos zu %s"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr "Interner Fehler:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "EPG-Eintrag wurde nicht gefunden!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Was läuft morgen"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "Was läuft am %s"
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "als nächstes"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Was läuft nach"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Was läuft um"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "Suchergebnis für"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "Listenansicht"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "Ausführliche Ansicht"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Übersicht"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Timer"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Systemstandard"
-
-#~ msgid "Format:"
-#~ msgstr "Format:"
-
-#~ msgid "Description:"
-#~ msgstr "Beschreibung:"
-
-#~ msgid "Timeline:"
-#~ msgstr "Zeitleiste:"
-
-#~ msgid "Can't connect to VDR at %s!"
-#~ msgstr "Konnte Verbindung zu %s nicht aufbauen!"
-
-#~ msgid "Switch"
-#~ msgstr "Umschalten"
-
-#~ msgid "more"
-#~ msgstr "mehr"
diff --git a/po/es.po b/po/es.po
index 60ce00c..bd59fcb 100644
--- a/po/es.po
+++ b/po/es.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDRAdmin-AM-3.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-09-12 19:43+0100\n"
"Last-Translator: rudibert <r_jung@web.de>\n"
"Language-Team: Rudi <LL.org>\n"
@@ -28,8 +28,7 @@ msgstr ""
"X-Poedit-Bookmarks: 210,-1,86,-1,-1,-1,-1,-1,-1,-1\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -45,11 +44,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-1"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "Acerca de"
@@ -70,54 +71,68 @@ msgid "Translation Team"
msgstr "Equipo de traducción"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Holandés:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Inglés:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Finlandés:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Alemán:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Francés:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "De momento no se actualiza, traducciones anteriores de:"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "Español:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Alemán:"
+msgid "Finnish:"
+msgstr "Finlandés:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "Español:"
+msgid "Dutch:"
+msgstr "Holandés:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Ruso:"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "Francés:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Informaciones"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "Versión del VDRAdmin-AM:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "Versión del VDR:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "Características respaldadas en VDR:"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+#, fuzzy
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"Flujo de LiveTV (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
+"plugin\" target=\"_blank\">Streamdev Plugin</a>) (en alemán de momento)"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -125,7 +140,7 @@ msgstr ""
"Flujo de LiveTV (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>) (en alemán de momento)"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -133,11 +148,11 @@ msgstr ""
"Renombrar grabaciones (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/"
"patches/\" target=\"_blank\">Liemikuutio Patch</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Recibir ayuda y comentar \"Bugs\" (fallos)"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -147,7 +162,7 @@ msgstr ""
"encontraras en algunas páginas. Tienes acceso haciendo clic encima de <img "
"src=\"bilder/help.png\" alt=\"\" />."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -159,7 +174,7 @@ msgstr ""
"entiendes alemán (lo siento...). Para empezar alli aprovecha la funcción "
"\"suchen\" por:"
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -182,7 +197,6 @@ msgid "AutoTimer"
msgstr "Autoprogramaciones"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -190,11 +204,12 @@ msgstr "Autoprogramaciones"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Prioridad:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -202,6 +217,8 @@ msgstr "Prioridad:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "Durabilidad:"
@@ -210,30 +227,38 @@ msgid "New AutoTimer"
msgstr "Añadir autoprogramación"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Ayuda"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Activada"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Emisora"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Comienzo"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Fin"
@@ -246,14 +271,11 @@ msgstr "Título"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Seleccionar todas/ninguna"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -265,14 +287,15 @@ msgstr "Seleccionar todas/ninguna"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Sí"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -284,23 +307,32 @@ msgstr "Sí"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "No"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Modificar"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "¿Borrar programación?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Borrar"
@@ -321,199 +353,10 @@ msgstr "¿Estas seguro de que deseas borrar las programaciones elegidas?"
msgid "No AutoTimers defined!"
msgstr "No hay autoprogramaciones!"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Añadir autoprogramación"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "Modificar autoprogramación"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "Autoprogramación activa:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "una vez"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Palabras claves:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "Buscar en:"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "Título"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Subtítulo"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Resumen"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Los días para la búsqueda:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Lunes"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Martes"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Jueves"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Viernes"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Sábado"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Domingo"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Emisora:"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "todos"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Empieza después de:"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "h."
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Acaba antes de:"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr "Reemplazar los margenes de tiempo para Inicio/Fin:"
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "Más tiempo al principio:"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "minutos"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "Más tiempo al final:"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Episodios:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Recordar programaciones:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Carpeta:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Guardar"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Prueba"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Difundido"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Guardado en"
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr "Ninguna coincidencia encontrado!"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Configuraciones"
@@ -599,7 +442,7 @@ msgstr "Contraseña como invitado:"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Tabla de tiempo"
@@ -629,6 +472,33 @@ msgstr "Activada:"
msgid "Timeout:"
msgstr "Actualización cada:"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "minutos"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "Más tiempo al principio:"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "Más tiempo al final:"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -783,6 +653,12 @@ msgstr "¿Usar en \"Autoprogramaciones\"?"
msgid "In \"Watch TV\"?"
msgstr "En \"Televisión\"?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Guardar"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Establecer"
@@ -855,6 +731,13 @@ msgstr ""
"ahora\"/> arrancarás una búsqueda inmediatamente en los datos actuales de la "
"EPG récien actualizados.</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "Modificar autoprogramación"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -873,6 +756,11 @@ msgstr ""
"estreno encontrado. Bastante útil para estrenos irregulares, que te importan "
"mucho.</p>"
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "Autoprogramación activa:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -884,6 +772,11 @@ msgstr ""
"encuentran todavia en la lista de las programaciones. Asi se puede activarse "
"más tarde. Pero significará que no grabará mientras está desactiva."
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Palabras claves:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -924,6 +817,12 @@ msgstr ""
"estreno. Así se puede bloquear una serie completo (p.e. con \"Stargate\" "
"como registro negro) o un episodio soló (p.e. \"Stargate~Revisiones\")."
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "Buscar en:"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
@@ -932,6 +831,11 @@ msgstr ""
"Aquí se ajusta las secciones de la EPG (emisoras posibles) donde VDRAdmin-AM "
"va a buscar por palabras claves."
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Los días para la búsqueda:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
@@ -940,6 +844,13 @@ msgstr ""
"Marca estos campos para especificar los dias de la semana, que quieres "
"incluir para la búsqueda."
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Emisora:"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -950,6 +861,11 @@ msgstr ""
"conocidas o deseadas. Se puede establecer las emisoras deseadas para "
"autoprogramaciones en \"Configuraciones\"."
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Empieza después de:"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
@@ -958,6 +874,11 @@ msgstr ""
"Un estreno tiene que empezar después de la hora esablecida aquí. El primer "
"campo es para \"hora\", el segundo para \"minutos\"."
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Acaba antes de:"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
@@ -966,6 +887,11 @@ msgstr ""
"Un estreno tiene que finalizar antes de la hora esablecida aquí. El primer "
"campo es para \"hora\", el segundo para \"minutos\"."
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr "Reemplazar los margenes de tiempo para Inicio/Fin:"
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -1051,6 +977,11 @@ msgstr ""
"grabación nueva, cuando se han pasado los dias ajustados y garantizados "
"desde su <strong>dia de grabación</strong>."
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Episodios:"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
@@ -1059,6 +990,11 @@ msgstr ""
"Marca este campo si VDRAdmin-AM debe añadir el subtítulo de la EPG del "
"estreno al nombre de la grabación."
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Recordar programaciones:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -1069,6 +1005,12 @@ msgstr ""
"automáticamente. Así se puede borrar o desactivar estas pragramaciones "
"agregadas automáticamente de la lista de programaciones."
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Carpeta:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1506,8 +1448,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Grabaciones"
@@ -1858,34 +1800,41 @@ msgstr "¡El navegador no respalda marcos!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "Estrenos ahora"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "¿Estrenos hoy?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "EPG por emisoras"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "Buscar"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Mando a distancia"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "Televisión"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr "Comandos:"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "Buscar"
@@ -1918,6 +1867,7 @@ msgid "view"
msgstr "cambiar"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "grabar"
@@ -1952,7 +1902,7 @@ msgstr "cambiar canal"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Flujo"
@@ -1967,6 +1917,8 @@ msgstr "¡Venga!"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "más información"
@@ -1999,7 +1951,7 @@ msgstr "Grabar estreno"
msgid "No EPG information available"
msgstr "No hay información de la EPG"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Estrenos hoy"
@@ -2007,6 +1959,22 @@ msgstr "Estrenos hoy"
msgid "starting at"
msgstr "empezando a la/s"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "h."
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -2014,12 +1982,12 @@ msgid "What's on:"
msgstr "Se puede ver:"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr " a la/s:"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "ahora"
@@ -2061,10 +2029,16 @@ msgstr "Título nuevo de la grabación:"
msgid "Subtitle:"
msgstr "Subtítulo:"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Renombrar"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Cancelar"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Espacio en el disco:"
@@ -2086,49 +2060,50 @@ msgstr "Fecha"
msgid "Total"
msgstr "en total"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "nueva"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "Reproducir"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "Cortar"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "¿Borrar grabación?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Restaurar"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Órdenes:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Iniciar"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "¿Ejecutar el orden de verdad?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Borrar grabaciones elegidas"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "¿Estas seguro de que deseas borrar las grabaciones elegidas?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr "No hay grabaciones."
@@ -2194,6 +2169,48 @@ msgstr "No hay programaciones!"
msgid "Create New Timer"
msgstr "Añadir programación"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Lunes"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Martes"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Miércoles"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Jueves"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Viernes"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Sábado"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Domingo"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -2262,83 +2279,440 @@ msgstr "Órdenes de SVDRP:"
msgid "Commands defined in commands.conf:"
msgstr "Órdenes definido en commands.conf:"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Salida"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "Buscar"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "Añadir autoprogramación"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr "Ninguna coincidencia encontrado!"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "Propiedades generales"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "Buscar en:"
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "Buscar en:"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "Título"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Subtítulo"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Resumen"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "Emisora:"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "ahora"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "Intervalo:"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "Emisora"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Idioma:"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "Emisora:"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "Nombre del usuario:"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "Empieza después de:"
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "Empieza después de:"
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "Duración:"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "Duración:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "Duración:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "cambiar canal"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "todos"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "Buscar en:"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "Renombrar grabación"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "¿Borrar grabación?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "Grabaciones"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "Ruta de las grabaciones:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Añadir autoprogramación"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "una vez"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Prueba"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Difundido"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Guardado en"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "repeticiones"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "Buscar"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "Activada"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "Al principio"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "Palabras claves:"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "Viernes"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "Borrar programaciones elegidas"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "¿Estas seguro de que deseas borrar las programaciones elegidas?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "Borrar programaciones elegidas"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "Duración:"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "¿Cuál es el nombre del sitio del VDR (p.e. video.intra.net)?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "¿Cuál puerto esta vigilando VDR para requeridas de SVDRP?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr "¿En qué dirección debe VDRAdmin-AM escuchar (0.0.0.0 para todas)?"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "¿Qué puerto debe VDRAdmin-AM esperar órdenes?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "¿Nombre del usuario?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "¿Contraseña?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Introduce la ruta de las grabaciones:"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Introduce la ruta de los archivos de configuración:"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "¡Los archivos de configuración creados!"
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s se ha iniciado con pid %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "No encontrado"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "¡No encontrado la URL requerida, en el servidor!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Prohibido"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "¡No tienes permiso para ésta funcción!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "¡Acceso al archivo \"%s\" negado!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "¡No encontrado la URL %s en el servidor!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "ahora"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "¡No se pudo abrir el archivo \"%s\" !"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2347,61 +2721,61 @@ msgstr ""
"No se puede conectar a VDR a %s:%s<br /><br />Compruebe si VDR está en "
"marcha y su svdrhosts.conf bien configurado."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Error mientras mandó el orden a %s "
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr "Error interno:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "No se encuentra el registro en la EPG!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Estrenos mañana"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "Estrenos en %s"
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "próximo"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Se puede ver después:"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Se puede ver a la/s:"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "Emparejamientos convenientes para:"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "Vista rapida"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "Vista detallada"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Vista general"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Programaciones"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Defecto del sistema"
diff --git a/po/fi.po b/po/fi.po
index 40f3e35..13a7b0e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,17 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: VDRAdmin-AM-3.4.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
-"PO-Revision-Date: 2006-06-26 12:36+0200\n"
-"Last-Translator: Rofa\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
+"PO-Revision-Date: 2006-09-30 11:50+0200\n"
+"Last-Translator: Ville Skyttä <ville.skytta@iki.fi>\n"
"Language-Team: Suomi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -33,11 +32,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-1"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "Tietoja"
@@ -58,54 +59,68 @@ msgid "Translation Team"
msgstr "Lokalisointi"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Hollanti:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Englanti:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Suomi:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Saksa:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Ranska:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "Ei ylläpidetty - aiemmat lokalisoinnit:"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "Espanja:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Saksa:"
+msgid "Finnish:"
+msgstr "Suomi:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "Espanja:"
+msgid "Dutch:"
+msgstr "Hollanti:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Venäjä:"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "Ranska:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Lisätietoja"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "VDRAdmin-AM:n versio:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "VDR:n versio:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "VDR:n tuetut ominaisuudet:"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+#, fuzzy
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"Live-kuvan suoratoisto (<a href=\"http://www.vdr-wiki.de/wiki/index.php/"
+"Streamdev-plugin\" target=\"_blank\">Streamdev-laajennos</a>)"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -113,7 +128,7 @@ msgstr ""
"Live-kuvan suoratoisto (<a href=\"http://www.vdr-wiki.de/wiki/index.php/"
"Streamdev-plugin\" target=\"_blank\">Streamdev-laajennos</a>)"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -121,11 +136,11 @@ msgstr ""
"Tallenteiden uudelleennimeäminen (<a href=\"http://www.saunalahti.fi/"
"~rahrenbe/vdr/patches/\" target=\"_blank\">Liemikuutio-kokoelma</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Avunsaanti ja virheiden raportointi"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -134,7 +149,7 @@ msgstr ""
"Saat opasteen näytille painamalla <img src=\"bilder/help.png\" alt=\"\" /> -"
"kuvaketta."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -145,7 +160,7 @@ msgstr ""
"vdrportal.de\" target=\"_blank\">VDR-Portal</a> -foorumilta, missä "
"ensisijaisesti kannattaa selata VDRAdminin julkistussäie läpi: "
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -167,7 +182,6 @@ msgid "AutoTimer"
msgstr "Hakuajastimet"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -175,11 +189,12 @@ msgstr "Hakuajastimet"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Prioriteetti:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -187,6 +202,8 @@ msgstr "Prioriteetti:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "Elinaika:"
@@ -195,30 +212,38 @@ msgid "New AutoTimer"
msgstr "Uusi hakuajastin"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Opaste"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Aktiivinen"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Kanava"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Aloitus"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Lopetus"
@@ -231,14 +256,11 @@ msgstr "Nimi"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Valitse kaikki/ei yhtään"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -250,14 +272,15 @@ msgstr "Valitse kaikki/ei yhtään"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Kyllä"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -269,23 +292,32 @@ msgstr "Kyllä"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "Ei"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Muokkaa"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "Poistetaanko ajastin?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Poista"
@@ -306,199 +338,10 @@ msgstr "Poistetaanko valitut ajastimet?"
msgid "No AutoTimers defined!"
msgstr "Hakuajastimia ei ole määritelty!"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Lisää uusi hakuajastin"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "Muokkaa hakuajastinta"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "Aktiivinen:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "Kerran"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Hakuehdot:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "Hakukentät:"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "Otsikko"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Lyhyt kuvaus"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Kuvaus"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Etsi valittuina päivinä:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Maanantai"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Tiistai"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Keskiviikko"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Torstai"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Perjantai"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Lauantai"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Sunnuntai"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Kanava:"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "Kaikki"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Alkaa jälkeen:"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr " "
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Loppuu ennen:"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr "Käytä yksilöllisiä aloitus- ja lopetusmarginaaleja"
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "Aloitusmarginaali:"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "minuuttia"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "Lopetusmarginaali:"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Sarjatallennus:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Muista ohjelmoidut ajastimet:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Hakemisto:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Tallenna"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Hae"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Peru"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Lähetysaika"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Tallennehakemisto"
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr "Ei löydy"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Asetukset"
@@ -533,7 +376,7 @@ msgstr "Kieli:"
#: ../template/default/config.html:107 ../template/default/help_config.html:44
msgid "Save settings on exit:"
-msgstr ""
+msgstr "Tallenna asetukset suljettaessa:"
#: ../template/default/config.html:117 ../template/default/help_config.html:30
#: ../template/default/help_config.html:50
@@ -584,7 +427,7 @@ msgstr "Vierailijan salasana:"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Aikajana"
@@ -614,6 +457,33 @@ msgstr "Käytössä:"
msgid "Timeout:"
msgstr "Odotusaika:"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "minuuttia"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "Aloitusmarginaali:"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "Lopetusmarginaali:"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -767,6 +637,12 @@ msgstr "Käytä kanavavalintoja \"Hakuajastimet\"-sivulla"
msgid "In \"Watch TV\"?"
msgstr "Käytä kanavavalintoja \"Katso TV:tä\"-sivulla"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Tallenna"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Käytä"
@@ -801,6 +677,13 @@ msgid ""
"check for matching AutoTimers.</p>"
msgstr ""
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "Muokkaa hakuajastinta"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -811,6 +694,11 @@ msgid ""
"irregularly broadcasted series or movies you don't want to miss.</p>"
msgstr ""
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "Aktiivinen:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -819,6 +707,11 @@ msgid ""
"so this AutoTimer only programs the (one!) next matching broadcast."
msgstr ""
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Hakuehdot:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -840,18 +733,36 @@ msgid ""
"\"Enterprise~Azati Prime\" as Blacklist-string)."
msgstr ""
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "Hakukentät:"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
"search pattern."
msgstr ""
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Etsi valittuina päivinä:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr ""
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Kanava:"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -859,18 +770,33 @@ msgid ""
"in \"Configuration\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Alkaa jälkeen:"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Loppuu ennen:"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr "Käytä yksilöllisiä aloitus- ja lopetusmarginaaleja"
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -910,6 +836,20 @@ msgid ""
"will interrupt the timer with the lowest priority in order to start "
"recording."
msgstr ""
+"Kokonaisluku väliltä <strong>0...99</strong> joka määrittää tämän ajastimen "
+"ja sen tekemien tallennusten <strong>prioriteetin</strong>. <strong>0</"
+"strong> on alin prioriteetti, <strong>99</strong> ylin. Prioriteettiarvoa "
+"käytetään päättämään mikä ajastettu tallennus aloitetaan mikäli asetettuna "
+"on kaksi tai useampia samaan aikaan <strong>alkamaan</strong> asetettuja "
+"ajastimia. Valinta kohdistuu ensimmäiseen suurimmalla prioriteetilla "
+"olevista ajastimista.<br /><br />Prioriteettiarvo säilytetään myös "
+"tallenteen mukana, ja sitä käytetään myöhemmin päättämään mikä tallenne "
+"poistetaan mikäli uutta varten pitää saada lisää levytilaa. Mikäli levy "
+"täyttyy ja uusi tallenne tarvitsee lisää tilaa, pienimmällä prioriteetilla "
+"merkitty tallenne (joka on ylittänyt <strong>taatun</strong> elinaikanasa) "
+"poistetaan.<br /><br />Mikäli kaikki DVB-kortit ovat käytössä, korkeamman "
+"prioriteetin ajastin keskeyttää tarvittaessa käynnissä olevan alimman "
+"prioriteetin tallennuksen."
#: ../template/default/help_at_timer_new.html:53
#: ../template/default/help_config.html:101
@@ -925,6 +865,19 @@ msgid ""
"until the given number of days since the <strong>start</strong> time of the "
"recording has passed by."
msgstr ""
+"Tämän ajastimen tekemien tallenteiden <strong>taattu</strong> elinaika "
+"(päivinä). <strong>0</strong> tarkoittaa että tallenne saatetaan poistaa "
+"automaattisesti milloin tahansa korkeamman prioriteetin ajastimen tarvitessa "
+"lisää levytilaa. <strong>99</strong> tarkoittaa että tallennetta ei poisteta "
+"automaattisesti. Numero väliltä <strong>1...98</strong> tarkoittaa päivien "
+"määrää, jonka pitää olla kulunut ajastimen <strong>alkuajankohdasta</strong> "
+"ennen kuin tallenne saatetaan poistaa automaattisesti uuden tallenteen "
+"tarvitessa levytilaa."
+
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Sarjatallennus:"
#: ../template/default/help_at_timer_new.html:55
msgid ""
@@ -932,6 +885,11 @@ msgid ""
"subtitle to the recording's file name."
msgstr ""
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Muista ohjelmoidut ajastimet:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -939,6 +897,12 @@ msgid ""
"have been programmed automatically in the timers listing."
msgstr ""
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Hakemisto:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1260,8 +1224,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Tallenteet"
@@ -1350,7 +1314,7 @@ msgstr "Muokkaa ajastinta"
#: ../template/default/help_timer_new.html:24
msgid "<p>Here you can edit a timer's settings.</p>"
-msgstr ""
+msgstr "<p>Tässä näkymässä voit muokata ajastimen asetuksia.</p>"
#: ../template/default/help_timer_new.html:26
#: ../template/default/timer_new.html:60
@@ -1363,6 +1327,9 @@ msgid ""
"the timer list so that they can be activated again, but they do not record "
"anything meanwhile."
msgstr ""
+"Aktivoi tai deaktivoi tämä ajastin. Deaktivoidut ajastimet eivät tallenna "
+"mitään, mutta ne näytetään ajastinlistauksessa josta ne voidaan aktivoida "
+"uudelleen."
#: ../template/default/help_timer_new.html:28
#: ../template/default/timer_new.html:67
@@ -1373,7 +1340,7 @@ msgstr "Hakuajastimen tarkistus:"
msgid ""
"Depending on how this timer has been programmed you have up to three "
"possible settings:"
-msgstr ""
+msgstr "Riippuen ajastimen tekotavasta, käytettävissäsi on useita asetuksia:"
#: ../template/default/help_timer_new.html:31
#: ../template/default/timer_new.html:71
@@ -1386,6 +1353,10 @@ msgid ""
"that this only works if the provided identification is a fix and unique "
"value! This option is not available with timers programmed in VDR."
msgstr ""
+"Tarkista ajastinta ohjelmisto-oppaan sisältämän ohjelmatunnisteen "
+"perusteella. Tämä tarkistustapa toimii vain mikäli ohjelmisto-oppaan "
+"ohjelmatunniste on vakio ja uniikki. Tämä valinta ei ole käytettävissä VDR:"
+"stä tehtyjen ajastimien kohdalla."
#: ../template/default/help_timer_new.html:33
#: ../template/default/rec_list.html:64 ../template/default/timer_new.html:73
@@ -1394,7 +1365,7 @@ msgstr "Aika"
#: ../template/default/help_timer_new.html:34
msgid "Monitor this timer using the start and stop time."
-msgstr ""
+msgstr "Tarkista ajastin käyttäen alku- ja loppuaikoja."
#: ../template/default/help_timer_new.html:35
#: ../template/default/timer_new.html:74 ../template/default/tv.html:79
@@ -1403,11 +1374,11 @@ msgstr "Pois"
#: ../template/default/help_timer_new.html:36
msgid "Do not monitor this timer."
-msgstr ""
+msgstr "Älä tarkista tätä ajastinta."
#: ../template/default/help_timer_new.html:40
msgid "The channel to record."
-msgstr ""
+msgstr "Tallennettava kanava."
#: ../template/default/help_timer_new.html:41
#: ../template/default/timer_new.html:88
@@ -1423,6 +1394,13 @@ msgid ""
"the seven checkboxes below the text field. Check the box for each day you "
"want the timer to get active."
msgstr ""
+"Ajastimen aktivoitumispäivä. Voit käyttää kahta eri muotoa päivän "
+"asettamiseen:<ul><li>Kaksi numeroa (PP). Tämä täydennetään päivämääräksi "
+"kuluvalla kuukaudella ja vuodella.</li><li>ISO-standardi (VVVV-KK-PP). Voit "
+"tehdä ajastuksia niin kauas tulevaisuuteen kuin haluat.</li></ul>Halutessasi "
+"asettaa toistuvan ajastuksen voit käyttää tekstikentän alla olevia seitsemää "
+"viikonpäiväkohtaista valintaruutua. Valitse jokainen viikonpäivä jolloin "
+"haluat ajastimen aktivoituvan."
#: ../template/default/help_timer_new.html:49
#: ../template/default/timer_new.html:102
@@ -1434,6 +1412,8 @@ msgid ""
"This is the time when the timer should start recording. The first text field "
"is for \"hour\", the second for \"minute\"."
msgstr ""
+"Aika jolloin ajastettu tallennus alkaa. Ensimmäiseen kenttään syötetään "
+"tunnit, jälkimmäiseen minuutit."
#: ../template/default/help_timer_new.html:51
#: ../template/default/timer_new.html:114
@@ -1445,6 +1425,8 @@ msgid ""
"This is the time when the timer should stop recording. The first text field "
"is for \"hour\", the second for \"minute\"."
msgstr ""
+"Aika jolloin ajastettu tallennus päättyy. Ensimmäiseen kenttään syötetään "
+"tunnit, jälkimmäiseen minuutit."
#: ../template/default/help_timer_new.html:57
#: ../template/default/timer_new.html:138
@@ -1463,6 +1445,12 @@ msgid ""
"default to the channel name, and <strong>EPISODE</strong> will default to a "
"blank."
msgstr ""
+"Ajastimen tekemien tallenteiden <strong>tiedostonimi</strong>. "
+"Hakemistoerottimena käytetään '~':a (koska '/' saattaa esiintyä ohjelmien "
+"nimissä).<br /><br />Avainsanat <strong>TITLE</strong> ja <strong>EPISODE</"
+"strong> korvataan ohjelmisto-oppaan otsikko- ja jaksotiedoilla mikäli ne "
+"ovat saatavilla tallennuksen alkaessa. Jos eivät, <strong>TITLE</strong>:n "
+"oletus on kanavan nimi ja <strong>EPISODE</strong>:n tyhjä."
#: ../template/default/help_timer_new.html:59
#: ../template/default/rec_edit.html:38 ../template/default/timer_new.html:142
@@ -1476,6 +1464,10 @@ msgid ""
"\"ref_file\">summary.vdr</span> or <span class=\"ref_file\">info.vdr</span> "
"file of the recording."
msgstr ""
+"Vapaavalintainen lisätietoteksti tämän ajastimen tekemille tallenteille. Jos "
+"tämä kenttä ei ole tyhjä, sen sisältö kirjoitetaan tallenteen <span class="
+"\"ref_file\">summary.vdr</span>- tai <span class=\"ref_file\">info.vdr</"
+"span>-tiedostoon."
#: ../template/default/index.html:21
msgid "Your Browser does not support frames!"
@@ -1483,34 +1475,41 @@ msgstr "Selaimesi ei tue kehyksiä!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "Menossa nyt"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "Tänään"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "Kanavat"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "Etsi"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Kauko-ohjain"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "Katso TV:tä"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr "Komennot"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "Etsi"
@@ -1540,6 +1539,7 @@ msgid "view"
msgstr "Katso"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "Tallenna"
@@ -1574,7 +1574,7 @@ msgstr "Valitse"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Suoratoisto"
@@ -1589,6 +1589,8 @@ msgstr "Siirry"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "Lisätietoja"
@@ -1621,7 +1623,7 @@ msgstr "Tallenna"
msgid "No EPG information available"
msgstr "Ohjelmaoppaan tietoja ei saatavilla"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Ohjelmisto tänään"
@@ -1629,6 +1631,22 @@ msgstr "Ohjelmisto tänään"
msgid "starting at"
msgstr "alkaen kello"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr " "
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1636,12 +1654,12 @@ msgid "What's on:"
msgstr "Menossa"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr " "
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "nyt"
@@ -1683,10 +1701,16 @@ msgstr "Tallenteen uusi nimi:"
msgid "Subtitle:"
msgstr "Lyhyt kuvaus"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Nimeä"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Peru"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Käytössä:"
@@ -1708,49 +1732,50 @@ msgstr "Päivä"
msgid "Total"
msgstr "kpl"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "Uusi"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "Toista"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "Leikkaa"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "Poistetaanko tallenne?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Päivitä"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Komennot:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Suorita"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "Suoritetaanko komento?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Poista valitut tallenteet"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "Poistetaanko valitut tallenteet?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr "Tallenteita ei saatavilla"
@@ -1816,6 +1841,48 @@ msgstr "Ajastimia ei määritelty!"
msgid "Create New Timer"
msgstr "Luo uusi ajastin"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Maanantai"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Tiistai"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Keskiviikko"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Torstai"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Perjantai"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Lauantai"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Sunnuntai"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -1884,83 +1951,440 @@ msgstr "SVDRP-komennot:"
msgid "Commands defined in commands.conf:"
msgstr "Määritellyt komennot (commands.conf):"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Vaste"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "Etsi"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "Lisää uusi hakuajastin"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr "Ei löydy"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "Yleiset"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "Hakukentät:"
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "Hakukentät:"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "Otsikko"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Lyhyt kuvaus"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Kuvaus"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "Kanava:"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "nyt"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "Päivitysväli:"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "Kanava"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Kieli:"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "Kanava:"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "Käyttäjätunnus:"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "Alkaa jälkeen:"
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "Alkaa jälkeen:"
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "Kesto:"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "Kesto:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "Kesto:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "Valitse"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "Kaikki"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "Hakukentät:"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "Nimeä tallenne"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "Poistetaanko tallenne?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "Tallenteet"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "VDR-tallenteiden polku:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Lisää uusi hakuajastin"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "Kerran"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Hae"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Lähetysaika"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Tallennehakemisto"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "Etsi"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "Etsi"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "Aktiivinen"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "Alkuun"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "Hakuehdot:"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "Perjantai"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "Poista valitut ajastimet"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "Poistetaanko valitut ajastimet?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "Poista valitut ajastimet"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "Kesto:"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "Anna VDR-koneesi nimi (esim. video.intra.net):"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "Anna VDR-koneesi käyttämä SVDRP-portti:"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr "Anna VDRAdmin-AM käyttämä osoiteavaruus (0.0.0.0 ei rajoituksia):"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "Anna VDRAdmin-AM käyttämä portti:"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "Anna käyttäjätunnus VDRAdmin-AM varten:"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "Anna salasana VDRAdmin-AM varten:"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Anna VDR-koneesi tallennehakemiston polku:"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Anna VDR-koneesi konfigurointihakemiston polku:"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "VDRAdmin-AM konfigurointitiedosto muodostettu."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s käynnistetty prosessitunnisteella %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "Ei löydy"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "Pyydettyä URL:ia ei löydy palvelimelta!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Kielletty"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "Puutteelliset käyttäjäoikeudet haluttuun toimintoon!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "Pääsy tiedostoon \"%s\" evätty!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "URL:ia \"%s\" ei löydy palvelimelta!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "nyt"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "Tiedoston \"%s\" avaus ei onnistu!"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -1969,60 +2393,60 @@ msgstr ""
"Yhteydenotto VDR:ään (%s:%s) epäonnistui!<br /><br />Varmista VDR:n "
"päälläolo ja svdrphosts.conf-tiedoston oikeellisuus."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Komennon lähetys VDR:lle epäonnistui (%s)"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr "Sisäinen virhe:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "Ohjelman tietoja ei löydy ohjelmaoppaasta!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Ohjelmisto huomenna"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "Ohjelmisto %d päivä"
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "seuraavaksi"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Menossa seuraavaksi"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Menossa"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "Hakutulokset termille:"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "lyhyt näkymä"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "pitkä näkymä"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Ohjelmisto"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Ajastimet"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Oletus"
diff --git a/po/fr.po b/po/fr.po
index 1a0b29f..3260d82 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDRAdmin-AM-3.4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-05-21 00:34+0100\n"
"Last-Translator: NIVAL Michaël <mnival@club-internet.fr>\n"
"Language-Team: Trois Six <trois.six@free.fr>\n"
@@ -13,8 +13,7 @@ msgstr ""
"X-Poedit-Country: FRANCE\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -30,11 +29,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-1"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "A propos"
@@ -55,70 +56,81 @@ msgid "Translation Team"
msgstr "Équipe de Traduction"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Hollandais :"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Anglais :"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Finlandais :"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Allemand :"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Français"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "Pour le moment non maintenu, précédente traductions par :"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "Espagnol :"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Allemand :"
+msgid "Finnish:"
+msgstr "Finlandais :"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "Espagnol :"
+msgid "Dutch:"
+msgstr "Hollandais :"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Russe"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "Français"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Informations"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "Version de VDRAdmin-AM :"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "Version de VDR :"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr ""
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
msgstr ""
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
msgstr ""
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Avoir de l'Aide et Rapporter les Bugs"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -127,7 +139,7 @@ msgstr ""
"Si vous avez besoin d'aide, merci de regarder en priorité sur l'aide en "
"ligne. Ici <img src=\"bilder/help.png\" alt=\"\" />."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -139,7 +151,7 @@ msgstr ""
"\">VDR-Portal</a> si vous comprenez l'allemand. Merci d'utiliser le topic de "
"l'annonce si possible, recherchez : "
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -161,7 +173,6 @@ msgid "AutoTimer"
msgstr "Auto-Programmation"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -169,11 +180,12 @@ msgstr "Auto-Programmation"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Priorité :"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -181,6 +193,8 @@ msgstr "Priorité :"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "Chronologie :"
@@ -189,30 +203,38 @@ msgid "New AutoTimer"
msgstr "Nouvelle Auto-Programmation"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Aide"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Actif"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Chaîne"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Début"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Fin"
@@ -225,14 +247,11 @@ msgstr "Nom"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Selectionner tout/rien"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -244,14 +263,15 @@ msgstr "Selectionner tout/rien"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Oui"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -263,23 +283,32 @@ msgstr "Oui"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "Non"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Editer"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "Supprimer Programmation ?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Supprimer"
@@ -301,200 +330,10 @@ msgstr "Supprimer Programmations Sélectionnées ?"
msgid "No AutoTimers defined!"
msgstr "Vérification Auto-Programmation :"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Ajouter Nouvelle Auto-Programmation"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "Editer Auto-Programmation"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "Auto-Programmation Active :"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "une fois"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Rechercher Modèles :"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "Rechercher dans :"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "une fois"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Sous-titre"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Description"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Rechercher uniquement sur ces jours :"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Lundi"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Mardi"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Mercredi"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Jeudi"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Vendredi"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Samedi"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Dimanche"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Chaîne :"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "tout"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Début de recherche :"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "Heure"
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Fin de recherche :"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "Marge avant :"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "minutes"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "Marge après :"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Episode :"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Se souvenir des programmations :"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Chemin :"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Enregistrer"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Test"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Annuler"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Diffusé"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Stockés dans"
-
-#: ../template/default/at_timer_new.html:182
-#, fuzzy
-msgid "No matches found!"
-msgstr "Non trouvé"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Configuration"
@@ -580,7 +419,7 @@ msgstr "Mot de Passe Invité :"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Chronologie"
@@ -610,6 +449,33 @@ msgstr "Active :"
msgid "Timeout:"
msgstr "Délai de dépassement :"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "minutes"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "Marge avant :"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "Marge après :"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -763,6 +629,12 @@ msgstr "Dans \"Auto-Programmations\" ?"
msgid "In \"Watch TV\"?"
msgstr "Dans \"Regarder TV\" ?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Enregistrer"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Appliquer"
@@ -825,6 +697,13 @@ msgstr ""
"données EPG courantes et vérifier and les modèles de Programmations "
"Automatiques.</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "Editer Auto-Programmation"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -843,6 +722,11 @@ msgstr ""
"est très confortable pour enregistrer des séries diffusées irrégulièrement "
"ou des films que vous ne voulez par manquer.</p>"
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "Auto-Programmation Active :"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -857,6 +741,11 @@ msgstr ""
"cette Auto-Programmation programme seulement la prochaine (et unique!) "
"occurrence de la diffusion."
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Rechercher Modèles :"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -898,6 +787,12 @@ msgstr ""
"de caractère) ou seulement un épisode (en utilisant \"Enterprise~Azati Prime"
"\" comme chaîne de caractères)."
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "Rechercher dans :"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
@@ -906,6 +801,11 @@ msgstr ""
"Ici, vous pouvez définir les sections du guide électronique des programmes "
"où VDRAdmin-AM recherchera le motif de recherche."
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Rechercher uniquement sur ces jours :"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
@@ -914,6 +814,13 @@ msgstr ""
"Utilisez ces cases à cocher pour limiter la recherche de diffusions "
"concordantes à un jeu de jours."
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Chaîne :"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -924,6 +831,11 @@ msgstr ""
"rechercher dans toutes les chaînes connues ou désirées. Vous pouvez définir "
"les chaînes désirées pour l'Auto-programmation dans \"Configuration\"."
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Début de recherche :"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
@@ -932,6 +844,11 @@ msgstr ""
"Une diffusion doit démarrer après l'horaire entrée pour être concordante. Le "
"premier champ est pour \"heure\", le second pour \"minute\"."
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Fin de recherche :"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
@@ -940,6 +857,11 @@ msgstr ""
"Une diffusion doit s'arrêter avant l'horaire entrée pour être concordante. "
"Le premier champ est pour \"heure\", le second pour \"minute\"."
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -1020,6 +942,11 @@ msgstr ""
"enregistrement, jusqu'à ce que le nombre de jour donné depuis la date de "
"<strong>démarrage</strong> de l'enregistrement soit dépassé."
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Episode :"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
@@ -1028,6 +955,11 @@ msgstr ""
"Cochez cette case si vous voulez que VDRAdmin-AM ajoute le sous-titre EPG de "
"la diffusion au nom du fichier de l'enregistrement."
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Se souvenir des programmations :"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -1039,6 +971,12 @@ msgstr ""
"supprimer les programmations automatiquement créées dans la liste des "
"programmations."
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Chemin :"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1476,8 +1414,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Enregistrements"
@@ -1815,35 +1753,42 @@ msgstr "Votre Navigateur ne supporte pas les cadres !"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "En ce Moment ?"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "Aujourd'hui ?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "Chaînes"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "Rechercher"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Télécommande"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "Regarder TV"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
#, fuzzy
msgid "Commands"
msgstr "Commandes :"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "Rechercher"
@@ -1875,6 +1820,7 @@ msgid "view"
msgstr "vue"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "enregistrer"
@@ -1909,7 +1855,7 @@ msgstr "Zapper"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Flux"
@@ -1924,6 +1870,8 @@ msgstr "Ok !"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "Plus d'Informations"
@@ -1958,7 +1906,7 @@ msgstr "Enregistrer"
msgid "No EPG information available"
msgstr "Pas d'information"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Joué Aujourd'hui"
@@ -1966,6 +1914,22 @@ msgstr "Joué Aujourd'hui"
msgid "starting at"
msgstr "Commence à"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "Heure"
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1973,12 +1937,12 @@ msgid "What's on:"
msgstr "En ce moment :"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr "à"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "maintenant"
@@ -2020,10 +1984,16 @@ msgstr "Nouveau Nom d'Enregistrement :"
msgid "Subtitle:"
msgstr "Sous-titre :"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Renommer"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Annuler"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Total :"
@@ -2045,49 +2015,50 @@ msgstr "Date"
msgid "Total"
msgstr "Total"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "Nouveau"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr ""
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr ""
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "Supprimer l'Enregistrement ?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Rafraîchir"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Commandes :"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Exécuter"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "Voulez-vous réellement exécuter cette commande ?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Supprimer Enregistrements Sélectionnés"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "Supprimer Enregistrements Sélectionnés ?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
#, fuzzy
msgid "No recordings available"
msgstr "Pas d'aide disponible"
@@ -2155,6 +2126,48 @@ msgstr "Aucune correspondance trouvée !"
msgid "Create New Timer"
msgstr "Créer Nouvelle Programmation"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Lundi"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Mardi"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Mercredi"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Jeudi"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Vendredi"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Samedi"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Dimanche"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -2223,83 +2236,441 @@ msgstr "Commandes SVDRP :"
msgid "Commands defined in commands.conf:"
msgstr "Commandes définies dans commands.conf :"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Sortie"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "Rechercher"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "Ajouter Nouvelle Auto-Programmation"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+#, fuzzy
+msgid "No matches found!"
+msgstr "Non trouvé"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "Paramètres Généraux"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "Rechercher dans :"
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "Rechercher dans :"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "une fois"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Sous-titre"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Description"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "Chaîne :"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "maintenant"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "Intervalle :"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "Chaîne"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Langue :"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "Chaîne :"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "Identifiant :"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "Début de recherche :"
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "Début de recherche :"
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "Durée :"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "Durée :"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "Durée :"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "Zapper"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "tout"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "Rechercher dans :"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "Nom Original d'Enregistrement :"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "Supprimer l'Enregistrement ?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "Enregistrements"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "Chemin des Enregistrements VDR :"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Ajouter Nouvelle Auto-Programmation"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "une fois"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Test"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Diffusé"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Stockés dans"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "rechercher"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "Rechercher"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "Actif"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "Haut"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "Rechercher Modèles :"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "Vendredi"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "Supprimer Programmations Sélectionnées"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "Supprimer Programmations Sélectionnées ?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "Supprimer Programmations Sélectionnées"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "Durée :"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "Quel est votre Nom d'hôte (ex video.intra.net) ?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "Sur quel port VDR écoute les requêtes SVDRP ?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr "Sur quelle adresse VDRAdmin-AM doit-il écouter (0.0.0.0 pour toutes) ?"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "Sur quel port VDRAdmin-AM doit-il écouter ?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "Identifiant ?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "Mot de Passe ?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Où vos enregistrements sont-ils stockés ?"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Où sont vos fichiers de configuration de VDR ?"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "Fichier de configuration écrit avec succès."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmin.pl %s a démarré avec le pid %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "Non trouvé"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "L'URL demandée n'a pas été trouvée sur le serveur !"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Interdit"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "Vous n'avez pas la permission d'accéder à cette fonction !"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "Accès au fichier \"%s\" interdit !"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "L'URL \"%s\" n'a pas été trouvée sur le serveur !"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "maintenant"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "Ne peut pas ouvrir le fichier \"%s\" !"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2308,62 +2679,62 @@ msgstr ""
"Connexion impossible vers VDR %s:%s<br /><br />Merci de vérifier que VDR est "
"lancé et que le fichier svdrphosts.conf est configuré correctement."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Erreur en envoyant la commande à %s"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
#, fuzzy
msgid "Internal error:"
msgstr "Intervalle :"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr ""
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Joué demain"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, fuzzy, perl-format
msgid "Playing on the %s"
msgstr "En cours sur la %d."
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "suivant"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Que se passe-t-il ensuite"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Que se passe-t-il à telle heure"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "Correspondances trouvées pour :"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "Court aperçu"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "Long aperçu"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Programmateur"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Programmations"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Par défaut"
diff --git a/po/nl.po b/po/nl.po
index a2a3052..b0c288c 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-09-14 20:15+0200\n"
"Last-Translator: Roel <rl.koelewijn@home.nl>\n"
"Language-Team: Nederlands <nl@li.org>\n"
@@ -19,8 +19,7 @@ msgstr ""
"X-Generator: KBabel 1.10\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -36,11 +35,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-1"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "Over"
@@ -61,54 +62,68 @@ msgid "Translation Team"
msgstr "Vertalers team"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "Nederlands:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "Engels:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "Fins:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "Duits:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "Frans:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "Op dit moment niet onderhouden, eerdere vertalingen door:"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "Spaans:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "Duits:"
+msgid "Finnish:"
+msgstr "Fins:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "Spaans:"
+msgid "Dutch:"
+msgstr "Nederlands:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "Russies"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "Frans:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "Informatie"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "VDRAdmin-AM versie:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "VDRAdmin versie:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "Ondersteunde elementen in VDR"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+#, fuzzy
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
+"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -116,7 +131,7 @@ msgstr ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -124,11 +139,11 @@ msgstr ""
"Hernoem opnamers (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "Voor het verkrijgen van hulp en melden van bugs"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -138,7 +153,7 @@ msgstr ""
"pagina's vinden. U kunt dit bezoeken door op <img src=\"bilder/help.png\" "
"alt=\"\" /> te klikken."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -150,7 +165,7 @@ msgstr ""
"de duitse taal verstaat. Gebruik graag de bekendmakingen draad indien "
"mogelijk, zoek naar:"
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -172,7 +187,6 @@ msgid "AutoTimer"
msgstr "AutoTimer"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -180,11 +194,12 @@ msgstr "AutoTimer"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "Prioriteit:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -192,6 +207,8 @@ msgstr "Prioriteit:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "Levensduur:"
@@ -200,30 +217,38 @@ msgid "New AutoTimer"
msgstr "Nieuwe AutoTimer"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "Help"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "Aktief"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "Kanaal"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "Start"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "Stop"
@@ -236,14 +261,11 @@ msgstr "Naam"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "Selecteer alles/niets"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -255,14 +277,15 @@ msgstr "Selecteer alles/niets"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "Ja"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -274,23 +297,32 @@ msgstr "Ja"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "Nee"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "Bewerken"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "Timer verwijderen? "
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "Verwijderen"
@@ -311,199 +343,10 @@ msgstr "Verwijder alle geselecteerde timers?"
msgid "No AutoTimers defined!"
msgstr "Geen Auto timers ingesteld!"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "Nieuwe auto timer toevoegen "
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "Auto timer bewerken"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "Auto timer aktief:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "eenmalig"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "Zoek patronen:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "Zoeken in: "
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "Titel"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "Subtitel"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "Omschrijving"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "Alleen zoeken op deze dagen:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "Maandag"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "Dinsdag"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "Woensdag"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "Donderdag"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "Vrijdag"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "Zaterdag"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "Zondag"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "Kanaal"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "Alle"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "Start na: "
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "Uur"
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "Eindigd voor: "
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr "Start/stop marges overschrijden"
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "Tijd marge bij start:"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "minuten"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "Tijd marge bij stop:"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "Aflevering:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "Herinner geprogrammeerde timer:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "Map:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "Opslaan"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "Test"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "Uitgezonden"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "Opgeslagen in"
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr "Geen overeenkomsten gevonden!"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "Configuratie"
@@ -589,7 +432,7 @@ msgstr "Wachtwoord gast"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "Tijdlijn"
@@ -619,6 +462,33 @@ msgstr "Aktief:"
msgid "Timeout:"
msgstr "Timeout:"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "minuten"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "Tijd marge bij start:"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "Tijd marge bij stop:"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -772,6 +642,12 @@ msgstr "In \"AutoTimer\"?"
msgid "In \"Watch TV\"?"
msgstr "In \"TV bekijken\"?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "Opslaan"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "Toepassen"
@@ -830,6 +706,13 @@ msgstr ""
"VDR, de laatste EPG data op te halen en te controleren voor overeenkomstige "
"timers.</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "Auto timer bewerken"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -846,6 +729,11 @@ msgstr ""
"overeenkomst word een timer toegevoegd. Dit is zeer gemakkelijk voor "
"onregelmatig uitgezonden series of voor film die u niet wilt missen.</p> "
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "Auto timer aktief:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -859,6 +747,11 @@ msgstr ""
"instellen op \"eenmalig\" zodat deze auto timer alleen de eerst volgende "
"overeenkomstige programma zal opnemen."
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "Zoek patronen:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -899,6 +792,12 @@ msgstr ""
"lijst zoekterm) of alleen een opname (door gebruikt te maken van "
"\"Enterprise~Azati Prime\" als zwarte lijst zoekterm)."
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "Zoeken in: "
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
@@ -907,12 +806,24 @@ msgstr ""
"Hier kunt u aangeven de EPG delen aangeven waar VDRAdmin-AM moet zoeken naar "
"zoekpatronen."
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "Alleen zoeken op deze dagen:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr "Gebruik deze hokjes om het zoeken te beperken op bepaalde dagen."
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "Kanaal"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -923,6 +834,11 @@ msgstr ""
"of \"alle\" om te zoeken in alle bekende of gewenste kanalen. U kunt de "
"gewenste kanalen voor de auto timer aangeven in \"Configuratie\"."
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "Start na: "
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
@@ -932,6 +848,11 @@ msgstr ""
"komen voor opname. Het eerste veld is voor \"Uur\", de tweede voor \"minuut"
"\"."
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "Eindigd voor: "
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
@@ -941,6 +862,11 @@ msgstr ""
"komen voor opname. Het eerste veld is voor \"Uur\", de tweede voor \"minuut"
"\"."
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr "Start/stop marges overschrijden"
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -1024,6 +950,11 @@ msgstr ""
"plaats te maken voor een nieuwe opname, alleen als de levensduur van de "
"opname voorbij is."
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "Aflevering:"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
@@ -1032,6 +963,11 @@ msgstr ""
"Vink dit vakje aan als u VDRAdmin-AM de titel wilt laten toevoegen die "
"gevonden is in de EPG informatie aan de opname's bestandsnaam."
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "Herinner geprogrammeerde timer:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -1042,6 +978,12 @@ msgstr ""
"automatisch heeft geprogrammeerd. Dit handig als u timers wilt aktiveren of "
"verwijderen die automatisch zijn geprogrammeerd in de timer lijst."
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "Map:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1473,8 +1415,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "Opnames"
@@ -1797,34 +1739,41 @@ msgstr "UW browser ondersteund geen frames!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "Wat is er nu op?"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "Speelt vandaag?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "Kanalen"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "Zoeken"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "Afstands bedienig "
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "TV bekijken"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr "Commando's"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "Zoeken"
@@ -1856,6 +1805,7 @@ msgid "view"
msgstr "bekijken"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "opnemen"
@@ -1890,7 +1840,7 @@ msgstr "Selecteer programma"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Stream"
@@ -1905,6 +1855,8 @@ msgstr "Ga!"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "Meer informatie"
@@ -1937,7 +1889,7 @@ msgstr "Opnemen"
msgid "No EPG information available"
msgstr "Geen informatie EPG informatie beschikbaar"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "Programma vandaag "
@@ -1945,6 +1897,22 @@ msgstr "Programma vandaag "
msgid "starting at"
msgstr "start om"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "Uur"
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1952,12 +1920,12 @@ msgid "What's on:"
msgstr "Wat is er op:"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr "om"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "nu"
@@ -1999,10 +1967,16 @@ msgstr "Nieuwe naam van de opname:"
msgid "Subtitle:"
msgstr "Subtitel:"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "Hernoemen"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "Annuleren"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "Totaal:"
@@ -2024,49 +1998,50 @@ msgstr "Datum"
msgid "Total"
msgstr "Totaal"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "Nieuw"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "Afspelen"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "Knippen"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "Opname verwijderen?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "Verversen"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "Commando's:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "Uitvoeren"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "Echt dit commando uitvoeren?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "Geselecteerde opnames verwijderen"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "Alle geselecteerde opnames verwijderen?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr "Geen opnames beschikbaar"
@@ -2132,6 +2107,48 @@ msgstr "Geen timers opgegeven!"
msgid "Create New Timer"
msgstr "Nieuwe timer instellen"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "Maandag"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "Dinsdag"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "Woensdag"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "Donderdag"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "Vrijdag"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "Zaterdag"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "Zondag"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -2200,83 +2217,440 @@ msgstr "SVDRP commando's:"
msgid "Commands defined in commands.conf:"
msgstr "Commando's gedefinieerd in commands.conf:"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "Uitvoer"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "Zoeken"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "Nieuwe auto timer toevoegen "
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr "Geen overeenkomsten gevonden!"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "Algemene instellingen"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "Zoeken in: "
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "Zoeken in: "
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "Titel"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "Subtitel"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "Omschrijving"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "Kanaal"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "nu"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "Interval:"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "Kanaal"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Taal:"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "Kanaal"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "Gebruikersnaam:"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "Start na: "
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "Start na: "
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "Duur:"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "Duur:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "Duur:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "Selecteer programma"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "Alle"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "Zoeken in: "
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "Hernoemen opname"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "Opname verwijderen?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "Opnames"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "Pad voor opnames:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "Nieuwe auto timer toevoegen "
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "eenmalig"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "Test"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "Uitgezonden"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "Opgeslagen in"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "zoeken"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "Zoeken"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "Aktief"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "Boven"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "Zoek patronen:"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "Vrijdag"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "Verwijder geselecteerde timers"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "Verwijder alle geselecteerde timers?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "Verwijder geselecteerde timers"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "Duur:"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "Wat de de hostnaam van de VDR (b.v. video.intra.net)?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "Op welke poort luister VDR naar SVDRP verzoeken?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr "Naar welk adres moet VDRAdmin-AM luisteren (0.0.0.0 voor alles)?"
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "Naar welke poort moet VDRAdmin-AM luisteren?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "Gebruikersnaam?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "Wachtwoord?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "Waar worden uw opnames opgeslagen?"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "Waar bevinden zicht de VDR's configuratie bestanden?"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "Configuratie bestanden succesvol weggeschreven."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s gestart met pid %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "Niet gevonden"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "De gevraagde URl is niet gevonden op deze server!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "Verboden"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "U heeft geen toestemming om deze functie te gebruiken!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "Toegang tot bestand \"%s\" geweigerd!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "De URl \"%s\" is niet gevonden op deze server!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "nu"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "Kan bestand \"%s\" niet openen!"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2285,60 +2659,60 @@ msgstr ""
"Kan geen verbinding maken met VDR at %s:%s<br /><br /> Controleer of VDR "
"draait en of VDR's svdrphosts.conf op de juiste manier is geconfigureerd."
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "Fout tijdens verzenden van commando op %s"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr "Interne fout:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "Kan geen EPG gegevens vinden!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "Speelt morgen"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "Speelt op de %s"
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "volgende"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "Wat is er op na"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "Wat is er op om:"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "Bruikbare overeenkomsten voor:"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "beknopt tonen"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "uitgebreid tonen"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "Schema"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "Timers"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "Systeem standaard"
diff --git a/po/ru.po b/po/ru.po
index f07acbd..4ff3a88 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDRAdmin-AM-3.4.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: 2006-09-13 10:42+0100\n"
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
"Language-Team: Allrussian <LL.org>\n"
@@ -26,8 +26,7 @@ msgstr ""
"X-Poedit-Country: RUSSIAN FEDERATION\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -43,11 +42,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr "ISO-8859-5"
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr "O"
@@ -68,54 +69,68 @@ msgid "Translation Team"
msgstr "³àãßßÐ ßÕàÕÒÞÔçØÚÞÒ"
#: ../template/default/about.html:34
-msgid "Dutch:"
-msgstr "³ÞÛÛÐÝÔáÚØÙ:"
-
-#: ../template/default/about.html:38
msgid "English:"
msgstr "°ÝÓÛØÙáÚØÙ:"
-#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr "ÄØÝáÚØÙ:"
+#: ../template/default/about.html:38
+msgid "German:"
+msgstr "½ÕÜÕæÚØÙ:"
-#: ../template/default/about.html:46
+#: ../template/default/about.html:42
msgid "French:"
msgstr "ÄàÐÝæã×áÚØÙ:"
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr "² ÝÐáâÞïéÕÕ ÒàÕÜï ÝÕ ÞÑÝÞÒÛïÕâáï, ßàÕÖÝØÕ ßÕàÕÒÞÔë Þâ:"
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr "¸áßÐÝáÚØÙ:"
+
#: ../template/default/about.html:50
-msgid "German:"
-msgstr "½ÕÜÕæÚØÙ:"
+msgid "Finnish:"
+msgstr "ÄØÝáÚØÙ:"
#: ../template/default/about.html:54
-msgid "Spanish:"
-msgstr "¸áßÐÝáÚØÙ:"
+msgid "Dutch:"
+msgstr "³ÞÛÛÐÝÔáÚØÙ:"
#: ../template/default/about.html:58
msgid "Russian:"
msgstr "ÀãááÚØÙ"
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+#, fuzzy
+msgid "Czech:"
+msgstr "ÄàÐÝæã×áÚØÙ:"
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr "¸ÝäÞàÜÐæØï"
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr "²ÕàáØï VDRAdmin-AM:"
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr "²ÕàáØï VDR:"
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr "¿ÞÔÔÕàÖØÒÐÕÜëÕ ãÛãçèÕÝØï Ò VDR:"
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+#, fuzzy
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+"LiveTV Streaming (<a href=\"http://www.free-x.de/wiki/index.php/Streamdev-"
+"plugin\" target=\"_blank\">Streamdev Plugin</a>"
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
@@ -123,7 +138,7 @@ msgstr ""
"LiveTV Streaming (<a href=\"http://www.free-x.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>"
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
@@ -131,11 +146,11 @@ msgstr ""
"¿ÕàÕØÜÕÝÞÒÐÝØÕ ×ÐߨáÕÙ (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/"
"patches/\" target=\"_blank\">Liemikuutio Patch</a>)"
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr "¿ÞÛãçØâì ßÞÜÞéì Ø áÞÞÑéØâì ÞÑ ÞèØÑÚÕ"
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
@@ -145,7 +160,7 @@ msgstr ""
"ØÝâÕàÐÚâØÒÝÞÙ ßÞÜÞéØ, ÚÞâÞàÐï ÔÞáâãßÝÐ ÝÐ ÝÕÚÞâÞàëå áâàÐÝØæÐå. ²ë ÜÞÖÕâÕ "
"Òë×ëÒÐâì ÕÕ ÝÐÖØÜÐï ÝÐ <img src=\"bilder/help.png\" alt=\"\" />."
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -156,7 +171,7 @@ msgstr ""
"ßÞßëâÐâìáï ßÞÛãçØâì ßÞÜÞéì Ò <a href=\"http://www.allrussian.info/board.php?"
"boardid=61 \"target=\"_blank\">Allrussian VDR äÞàãÜÕ</a>. ¸éØâÕ ÔÛï íâÞÓÞ:"
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -179,7 +194,6 @@ msgid "AutoTimer"
msgstr "°ÒâÞâÐÙÜÕàë"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -187,11 +201,12 @@ msgstr "°ÒâÞâÐÙÜÕàë"
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr "¿àØÞàØâÕâ:"
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -199,6 +214,8 @@ msgstr "¿àØÞàØâÕâ:"
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr "ºÐÚ ÔÞÛÓÞ åàÐÝØâì:"
@@ -207,30 +224,38 @@ msgid "New AutoTimer"
msgstr "½ÞÒëÙ °ÒâÞâÐÙÜÕà"
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr "¿ÞÜÞéì"
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr "°ÚâØÒØàÞÒÐÝÞ"
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr "ºÐÝÐÛ"
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr "½ÐçÐÛÞ"
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr "ºÞÝÕæ"
@@ -243,14 +268,11 @@ msgstr "¸Üï"
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr "²ëÑàÐâì ÒáÕ ØÛØ ÝØçÕÓÞ"
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -262,14 +284,15 @@ msgstr "²ëÑàÐâì ÒáÕ ØÛØ ÝØçÕÓÞ"
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr "´Ð"
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -281,23 +304,32 @@ msgstr "´Ð"
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr "½Õâ"
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr "ÀÕÔÐÚâØàÞÒÐâì"
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr "ÃÔÐÛØâì âÐÙÜÕà?"
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr "ÃÔÐÛØâì"
@@ -318,199 +350,10 @@ msgstr "ÃÔÐÛØâì ÒáÕ ÒëÑàÐÝÝëÕ °ÒâÞâÐÙÜÕàë?"
msgid "No AutoTimers defined!"
msgstr "AutoTimer ÝÕ ãáâÐÝÞÒÛÕÝ"
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr "ÁÞ×ÔÐâì ÝÞÒëÙ °ÒâÞâÐÙÜÕà"
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr "ÀÕÔÐÚâØàÞÒÐÝØÕ °ÒâÞâÐÙÜÕàÐ"
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr "°ÒâÞâÐÙÜÕà ÐÚâØÒÕÝ:"
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr "ÞÔÝÞÚàÐâÝÞ"
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr "¿ÞØáÚÞÒëÕ ßàØ×ÝÐÚØ:"
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr "ØáÚÐâì Ò:"
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr "·ÐÓÞÛÞÒÞÚ"
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr "¿ÞÔ×ÐÓÞÛÞÒÞÚ"
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr "¾ßØáÐÝØÕ"
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr "¸áÚÐâì âÞÛìÚÞ Ò íâØ ÔÝØ:"
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr "¿ÞÝÕÔÕÛìÝØÚ"
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr "²âÞàÝØÚ"
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr "ÁàÕÔÐ"
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr "ÇÕâÒÕàÓ"
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr "¿ïâÝØæÐ"
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr "ÁãÑÑÞâÐ"
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr "²ÞáÚàÕáÕÝØÕ"
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr "ºÐÝÐÛ:"
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr "ÒáÕ"
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr "½ÐçØÝÐÕâáï ÝÕ àÐÝìèÕ:"
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr "ÇÐáÞÒ"
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr "·ÐÚÐÝçØÒÐÕâáï ÝÕ ßÞ×ÔÝÕÕ:"
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr "¿ÕàÕߨáëÒÐâì áâÐàâ/áâÞß "
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr "¾ßÕàÕÖÕÝØÕ ÝÐçÐÛÐ âÐÙÜÕàÐ (ÜØÝ.):"
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr "¼ØÝãâë"
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr "·ÐßÐ×ÔëÒÐÝØÕ ÞáâÐÝÞÒÚØ âÐÙÜÕàÐ (ÜØÝ.):"
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr "ÁÕàØï:"
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr "·ÐßÞÜÝØâì ×ÐßàÞÓàÐÜÜØàÞÒÐÝÝëÕ âÐÙÜÕàë:"
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr "ºÐâÐÛÞÓ:"
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr "ÁÞåàÐÝØâì"
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr "ÂÕáâ"
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr "¾âÜÕÝØâì"
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr "²ÕéïÛÞáì"
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr "ÁÞåàÐÝÕÝÝÞ Ò"
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr "½Õâ àÕ×ãÛìâÐâÞÒ!"
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr "½ÐáâàÞÙÚØ"
@@ -596,7 +439,7 @@ msgstr "¿ÐàÞÛì ÔÛï ÓÞáâï:"
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr "³àÐäØÚ ÒàÕÜÕÝØ"
@@ -626,6 +469,33 @@ msgstr "°ÚâØÒØàÞÒÐÝÞ:"
msgid "Timeout:"
msgstr "Timeout:"
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr "¼ØÝãâë"
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr "¾ßÕàÕÖÕÝØÕ ÝÐçÐÛÐ âÐÙÜÕàÐ (ÜØÝ.):"
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr "·ÐßÐ×ÔëÒÐÝØÕ ÞáâÐÝÞÒÚØ âÐÙÜÕàÐ (ÜØÝ.):"
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -779,6 +649,12 @@ msgstr "² \"°ÒâÞâÐÙÜÕàë\"?"
msgid "In \"Watch TV\"?"
msgstr "¿àØ \"ßàÞáÜÞâàÕ TV\"?"
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr "ÁÞåàÐÝØâì"
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr "¿àØÜÕÝØâì"
@@ -837,6 +713,13 @@ msgstr ""
"áÒï×ëÒÐâìáï á VDR ÔÛï ÞÑÝÞÒÛÕÝØï ÔÐÝÝëå EPG Ø ßÞØáÚÐ áÞÒßÞÔÐîéØå "
"°ÒâÞâÐÙÜÕàÞÒ.</p>"
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr "ÀÕÔÐÚâØàÞÒÐÝØÕ °ÒâÞâÐÙÜÕàÐ"
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -854,6 +737,11 @@ msgstr ""
"ÝÕàÕÓãÛïàÝÞ âàÐÝáÛØàãÕÜëå áÕàØÐÛÞÒ ØÛØ åãÔÞÖÕáâÒÕÝÝëå äØÛìÜÞÒ, ÚÞâÞàëÕ ²ë ÝÕ "
"åÞâØâÕ ßàÞßãáâØâì.</p>"
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr "°ÒâÞâÐÙÜÕà ÐÚâØÒÕÝ:"
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -867,6 +755,11 @@ msgstr ""
"ÝÐ \"ÞÔÝÞÚàÐâÝÞ\", âÐÚ çâÞÑë íâÞâ °ÒâÞâÐÙÜÕà áàÐÑÞâÐÛ âÞÛìÚÞ ÕÔØÝÐÖÔë ÝÐ "
"áÛÕÔãéÕÙ ßÕàÕÔÐçÕ."
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr "¿ÞØáÚÞÒëÕ ßàØ×ÝÐÚØ:"
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -903,6 +796,12 @@ msgstr ""
"ßÕàÕÔÐçÐ ÐÒâÞÜÐâØçÕáÚØ ÝÕ ßàÞÓàÐÜÜØàãÕâáï.ÂÐÚØÜ ÞÑàÐ×ÞÜ ²ë ÜÞÖÕâÕ ØáÚÛîçÐâì "
"ßÞÛÝãî áÕàØî."
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr "ØáÚÐâì Ò:"
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
@@ -911,12 +810,24 @@ msgstr ""
"·ÔÕáì ²ë ãÚÐ×ëÒÐÕâÕ àÐ×ÔÕÛë Ø× EPG, ÚÞâÞàëÕ VDRAdmin-AM ÔÞÛÖÕÝ ÞáÜÐâàØÒÐâì "
"ÝÐ ÝÐÛØçØÕ ßàØ×ÝÐÚÞÒ ßÞØáÚÐ."
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr "¸áÚÐâì âÞÛìÚÞ Ò íâØ ÔÝØ:"
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr "¾âÜÕâìâÕ ÔÝØ ÝÕÔÕÛØ, Ò ÚÞâÞàëÕ ÑãÔÕâ ßàÞÒÞÔØâìáï ßÞØáÚ ßÕàÕÔÐç."
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr "ºÐÝÐÛ:"
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -927,6 +838,11 @@ msgstr ""
"\" ÑãÔãâ ßàÞáÜÞâàÕÝë ÒáÕ Ø×ÒÕáâÝëÕ ØÛØ ÖÕÛÐÕÜëÕ ÚÐÝÐÛë. ¶ÕÛÐÕÜëÕ ÚÐÝÐÛë ÔÛï "
"ÐÒâÞâÐÙÜÕàÞÒ ãáâÐÝÐÒÛØÒÐîâáï ÝÐ áâàÐÝØæÕ \"ºÞÝäØÓãàÐæØØ\". "
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr "½ÐçØÝÐÕâáï ÝÕ àÐÝìèÕ:"
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
@@ -935,6 +851,11 @@ msgstr ""
"¿ÕàÕÔÐçÐ ÜÞÖÕâ ÝÐçØÝÐâìáï ÝÕ àÐÝìèÕ ãáâÐÝÞÒÛÕÝÝÞÓÞ ×ÔÕáì ÒàÕÜÕÝØ. ¿ÕàÒÞÕ "
"âÕÚáâÞÒÞÕ ßÞÛÕ ãÚÐ×ëÒÐÕâ çÐáë, ÒâÞàÞÕ ÜØÝãâë."
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr "·ÐÚÐÝçØÒÐÕâáï ÝÕ ßÞ×ÔÝÕÕ:"
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
@@ -943,6 +864,11 @@ msgstr ""
"¿ÕàÕÔÐçÐ ÔÞÛÖÝÐ ×ÐÚÐÝçØÒÐâìáï ÝÕ ßÞ×ÔÝÕÕ ãáâÐÝÞÒÛÕÝÝÞÓÞ ×ÔÕáì ÒàÕÜÕÝØ."
"¿ÕàÒÞÕâÕÚáâÞÒÞÕ ßÞÛÕ ãÚÐ×ëÒÐÕâ çÐáë, ÒâÞàÞÕ ÜØÝãâë."
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr "¿ÕàÕߨáëÒÐâì áâÐàâ/áâÞß "
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -1022,6 +948,11 @@ msgstr ""
"ãÔÐÛØâáï ÐÒâÞÜÐâØçÕáÚØ, ÕáÛØ ãÚÐ×ÐÝÝÞÕ ÚÞÛØçÕáâÒÞ ÔÝÕÙ ØáâÕÚÛÞ áÞ ÔÝï ×ÐßØáØ "
"Ø ÝÐ ÖÕáâÚÞÜ ÔØáÚÕ ÝÕâ ÑÞÛìèÕ ÜÕáâÐ ÔÛï ÝÞÒëå ×ÐߨáÕÙ. "
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr "ÁÕàØï:"
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
@@ -1030,6 +961,11 @@ msgstr ""
"°ÚâØÒØàãÙâÕ íâã ÞßæØî, ÕáÛØ ²ë åÞâØâÕ, çâÞÑë VDRAdmin-AM ÔÞÑÐÒÛïÛ "
"ßÞÔ×ÐÓÞÛÞÒÞÚ ßÕàÕÔÐçØ Ø× EPG Ú ÝÐ×ÒÐÝØî ×ÐߨáØ."
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr "·ÐßÞÜÝØâì ×ÐßàÞÓàÐÜÜØàÞÒÐÝÝëÕ âÐÙÜÕàë:"
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -1041,6 +977,12 @@ msgstr ""
"×ÐßàÞÓàÐÜÜØàÞÒÐÝÝëÕ âÐÙÜÕàë ÔÞÛÖÝë ãÔÐÛïâìáï ØÛØ ÔÕÐÚâØÒØàÞÒÐâìáï Ò áߨáÚÕ "
"âÐÙÜÕàÞÒ."
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr "ºÐâÐÛÞÓ:"
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1450,8 +1392,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr "·ÐߨáØ"
@@ -1771,34 +1713,41 @@ msgstr "²Ðè ±àÞã×Õà ÝÕ ßÞÔÔÕàÖØÒÐÕâ äàÕÙÜë!"
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr "ÇâÞ ØÔÕâ áÕÙçÐá?"
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr "ÇâÞ ÑãÔÕâ áÕÓÞÔÝï?"
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr "ÂÕÛÕÓØÔ"
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+#, fuzzy
+msgid "EPG Search"
+msgstr "¿ÞØáÚ"
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr "¿ãÛìâ ´Ã"
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr "ÂÕÛÕÒØ×Þà"
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr "ºÞÜÐÝÔë"
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr "¿ÞØáÚ"
@@ -1829,6 +1778,7 @@ msgid "view"
msgstr "ßÕàÕÚÛîçØâì"
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr "×ÐߨáÐâì"
@@ -1863,7 +1813,7 @@ msgstr "TV ßÕàÕÚÛîçØâì"
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr "Stream"
@@ -1878,6 +1828,8 @@ msgstr "ÁâÐàâÞÒÐâì!"
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr "´ÞßÞÛÝØâÕÛìÝÐï ØÝäÞàÜÐæØï"
@@ -1910,7 +1862,7 @@ msgstr "·ÐߨáÐâì ßÕàÕÔÐçã"
msgid "No EPG information available"
msgstr "½Õâ EPG ØÝäÞàÜÐæØØ"
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr "ÇâÞ ÑãÔÕâ áÕÓÞÔÝï?"
@@ -1918,6 +1870,22 @@ msgstr "ÇâÞ ÑãÔÕâ áÕÓÞÔÝï?"
msgid "starting at"
msgstr "½ÐçÐâì Ò"
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr "ÇÐáÞÒ"
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1925,12 +1893,12 @@ msgid "What's on:"
msgstr "ÇâÞ áÕÙçÐá:"
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr "Ò"
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr "áÕÙçÐá"
@@ -1972,10 +1940,16 @@ msgstr "½ÞÒÞÕ ÝÐ×ÒÐÝØÕ ×ÐߨáØ:"
msgid "Subtitle:"
msgstr "¿ÞÔ×ÐÓÞÛÞÒÞÚ:"
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr "¿ÕàÕØÜÕÝÞÒÐâì"
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr "¾âÜÕÝØâì"
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr "²áÕÓÞ:"
@@ -1997,49 +1971,50 @@ msgstr "´ÐâÐ"
msgid "Total"
msgstr "²áÕÓÞ"
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr "½ÞÒëÙ"
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr "²ÞáßàÞØ×ÒÕÔÕÝØÕ"
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr "ÁàÕ×"
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr "ÃÔÐÛØâì ×Ðߨáì?"
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr "¾ÑÝÞÒØâì"
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr "ºÞÜÐÝÔë:"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr "²ëßÞÛÝØâì"
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr "´ÕÙáâÒØâÕÛìÝÞ ÒëßÞÛÝØâì ÚÞÜÐÝÔã?"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr "ÃÔÐÛØâì ÒëÑàÐÝÝëÕ ×ÐߨáØ"
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr "ÃÔÐÛØâì ÒáÕ ÒëÑàÐÝÝëÕ ×ÐߨáØ?"
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr "½Õâ ×ÐߨáÕÙ"
@@ -2105,6 +2080,48 @@ msgstr "½Õâ âÐÙÜÕàÞÒ!"
msgid "Create New Timer"
msgstr "ÁÞ×ÔÐâì ÝÞÒëÙ âÐÙÜÕà"
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr "¿ÞÝÕÔÕÛìÝØÚ"
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr "²âÞàÝØÚ"
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr "ÁàÕÔÐ"
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr "ÇÕâÒÕàÓ"
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr "¿ïâÝØæÐ"
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr "ÁãÑÑÞâÐ"
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr "²ÞáÚàÕáÕÝØÕ"
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -2173,84 +2190,441 @@ msgstr "SVDRP ºÞÜÐÝÔë:"
msgid "Commands defined in commands.conf:"
msgstr "ºÞÜÜÐÝÔë Ø× commands.conf:"
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr "²ëÒÞÔ"
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Edit Search"
+msgstr "¿ÞØáÚ"
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+#, fuzzy
+msgid "Add New Search"
+msgstr "ÁÞ×ÔÐâì ÝÞÒëÙ °ÒâÞâÐÙÜÕà"
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr "½Õâ àÕ×ãÛìâÐâÞÒ!"
+
+#: ../template/default/epgsearch_new.html:211
+#, fuzzy
+msgid "Settings"
+msgstr "¾ÑéØÕ ÝÐáâàÞÙÚØ"
+
+#: ../template/default/epgsearch_new.html:216
+#, fuzzy
+msgid "Search Term:"
+msgstr "ØáÚÐâì Ò:"
+
+#: ../template/default/epgsearch_new.html:223
+#, fuzzy
+msgid "Search Mode:"
+msgstr "ØáÚÐâì Ò:"
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr "·ÐÓÞÛÞÒÞÚ"
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr "¿ÞÔ×ÐÓÞÛÞÒÞÚ"
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr "¾ßØáÐÝØÕ"
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+#, fuzzy
+msgid "Use Channel:"
+msgstr "ºÐÝÐÛ:"
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+#, fuzzy
+msgid "no"
+msgstr "áÕÙçÐá"
+
+#: ../template/default/epgsearch_new.html:297
+#, fuzzy
+msgid "interval"
+msgstr "¸ÝâÕàÒÐÛ:"
+
+#: ../template/default/epgsearch_new.html:298
+#, fuzzy
+msgid "channel group"
+msgstr "ºÐÝÐÛ"
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+#, fuzzy
+msgid "Range:"
+msgstr "Ï×ëÚ:"
+
+#: ../template/default/epgsearch_new.html:316
+#, fuzzy
+msgid "Channel Group:"
+msgstr "ºÐÝÐÛ:"
+
+#: ../template/default/epgsearch_new.html:327
+#, fuzzy
+msgid "Use Time:"
+msgstr "¸Üï:"
+
+#: ../template/default/epgsearch_new.html:333
+#, fuzzy
+msgid "Start After:"
+msgstr "½ÐçØÝÐÕâáï ÝÕ àÐÝìèÕ:"
+
+#: ../template/default/epgsearch_new.html:340
+#, fuzzy
+msgid "Start Before:"
+msgstr "½ÐçØÝÐÕâáï ÝÕ àÐÝìèÕ:"
+
+#: ../template/default/epgsearch_new.html:352
+#, fuzzy
+msgid "Use Duration:"
+msgstr "¿àÞÔÞÛÖØâÕÛìÝÞáâì:"
+
+#: ../template/default/epgsearch_new.html:358
+#, fuzzy
+msgid "Min. Duration:"
+msgstr "¿àÞÔÞÛÖØâÕÛìÝÞáâì:"
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+#, fuzzy
+msgid "Max. Duration:"
+msgstr "¿àÞÔÞÛÖØâÕÛìÝÞáâì:"
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+#, fuzzy
+msgid "selection"
+msgstr "TV ßÕàÕÚÛîçØâì"
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr "ÒáÕ"
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+#, fuzzy
+msgid "Use as Search Timer:"
+msgstr "ØáÚÐâì Ò:"
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+#, fuzzy
+msgid "Series Recording:"
+msgstr "¿ÕàÕØÜÕÝÞÒÐâì ×Ðߨáì"
+
+#: ../template/default/epgsearch_new.html:452
+#, fuzzy
+msgid "Delete Recordings After ... Days:"
+msgstr "ÃÔÐÛØâì ×Ðߨáì?"
+
+#: ../template/default/epgsearch_new.html:455
+#, fuzzy
+msgid "Keep ... Recordings:"
+msgstr "·ÐߨáØ"
+
+#: ../template/default/epgsearch_new.html:460
+#, fuzzy
+msgid "Pause, when ... recordings exist:"
+msgstr "¿ãâì Ú ×ÐߨáïÜ:"
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+#, fuzzy
+msgid "VPS:"
+msgstr "VPS"
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr "ÁÞ×ÔÐâì ÝÞÒëÙ °ÒâÞâÐÙÜÕà"
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr "ÞÔÝÞÚàÐâÝÞ"
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr "ÂÕáâ"
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr "²ÕéïÛÞáì"
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr "ÁÞåàÐÝÕÝÝÞ Ò"
+
+#: ../template/default/epgsearch_list.html:6
+#, fuzzy
+msgid "EPG search"
+msgstr "¿ÞÒâÞàÕÝØï"
+
+#: ../template/default/epgsearch_list.html:26
+#, fuzzy
+msgid "New Search"
+msgstr "¿ÞØáÚ"
+
+#: ../template/default/epgsearch_list.html:54
+#, fuzzy
+msgid "Action"
+msgstr "°ÚâØÒØàÞÒÐÝÞ"
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+#, fuzzy
+msgid "To"
+msgstr "ÒÒÕàå"
+
+#: ../template/default/epgsearch_list.html:107
+#, fuzzy
+msgid "Search pattern"
+msgstr "¿ÞØáÚÞÒëÕ ßàØ×ÝÐÚØ:"
+
+#: ../template/default/epgsearch_list.html:163
+#, fuzzy
+msgid "Find"
+msgstr "¿ïâÝØæÐ"
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete Selected Searches"
+msgstr "ÃÔÐÛØâì ÒëÑàÐÝÝëÕ âÐÙÜÕàë"
+
+#: ../template/default/epgsearch_list.html:187
+#, fuzzy
+msgid "Delete all selected searches?"
+msgstr "ÃÔÐÛØâì ÒáÕ ÒëÑàÐÝÝëÕ °ÒâÞâÐÙÜÕàë?"
+
+#: ../template/default/epgsearch_list.html:188
+#, fuzzy
+msgid "Execute Selected Searches"
+msgstr "ÃÔÐÛØâì ÒëÑàÐÝÝëÕ âÐÙÜÕàë"
+
+#: ../template/default/epgsearch_list.html:212
+#, fuzzy
+msgid "Duration"
+msgstr "¿àÞÔÞÛÖØâÕÛìÝÞáâì:"
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr "¸Üï åÞáâÐ VDR (ÝÐßàØÜÕà, video.intra.net)?"
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr "ºÐÚÞÙ ßÞàâ ØáßÞÛì×ãÕâ VDR ÔÛï ×ÐßàÞáÞÒ SVDRP?"
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr ""
"¿Þ ÚÐÚÞÜã ÐÔàÕáã VDRAdmin-AM ÔÞÛÖÕÝ ÖÔÐâì áÞÕÔØÝÕÝØï (0.0.0.0 ßÞÒáÕÜ)? "
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr "ºÐÚÞÙ ÝÞÜÕà ßÞàâÐ ÔÞÛÖÕÝ ØáßÞÛì×ÞÒÐâì VDRAdmin-AM?"
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr "¸Üï ßÞÛì×ÞÒÐâÕÛï?"
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr "¿ÐàÞÛì?"
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr "¿Þ ÚÐÚÞÜã ÐÔàÕáã ÝÐåÞÔïâáï ×ÐߨáØ?"
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr "¿Þ ÚÐÚÞÜã ÐÔàÕáã ÝÐåÞÔïâáï ÚÞÝäØÓãàÐæØÞÝÝëÕ äÐÙÛë VDR?"
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr "ÄÐÙÛ ÚÞÝäØÓãàÐæØØ ãáßÕèÝÞ ×ÐߨáÐÝ."
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr "vdradmind.pl %s ÑëÛ ×ÐßãéÕÝ á PID-ÞÜ %d."
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr "½Õ ÝÐÙÔÕÝÞ"
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr "·ÐâàÕÑÞÒÐÝÝëÙ URL ÝÕ ÑëÛ ÝÐÙÔÕÝ ÝÐ íâÞÜ áÕàÒÕàÕ!"
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr "·ÐßàÕéÕÝÞ"
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr "à ÒÐá ÝÕÔÞáâÐâÞçÝÞ ßàÐÒ ÔÛï Òë×ÞÒÐ íâÞÙ äãÝ򾯯!"
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr "² ÔÞáâãßÕ Ú äÐÙÛã \"%s\" ÞâÚÐ×ÐÝÝÞ!"
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr "URL \"%s\" ÝÕ ÑëÛ ÝÐÙÔÕÝ ÝÐ íâÞÜ áÕàÒÕàÕ!"
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+#, fuzzy
+msgid "unknown"
+msgstr "áÕÙçÐá"
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr "½Õ ÜÞÖÕâ ÞâÚàëâì äÐÙÛ \"%s\"!"
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
@@ -2259,64 +2633,68 @@ msgstr ""
"½Õ ÜÞÓã áÞÕÔØÝØâìáï á VDR %s:%s<br /><br />¿àÞÚÞÝâàÞÛØàãÙâÕ VDR Ø "
"svdrphosts.conf"
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr "¾èØÑÚÐ ßàØ ÞâßàÐÒÛÕÝØØ ÚÞÜÐÝÔë Ú %s"
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr "²ÝãâàÕÝÝïï ÞèØÑÚÐ:"
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr "½Õâ EPG ×ÐߨáÕÙ!"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr "¿àÞÓàÐÜÜÐ ÝÐ ×ÐÒâàÐ"
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr "²ÞáßàÞØ×ÒÕáâØ %s."
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr "áÛÕÔ."
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr "ÇâÞ ßÞâÞÜ"
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr "ÇâÞ Ò:"
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr "ÀÕ×ãÛìâÐâë ßÞØáÚÐ ÔÛï"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr "áÞÚàÐéÕÝÝÐï ØÝäÞàÜÐæØï"
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr "ÀÐáèØàÕÝÝÐï ØÝäÞàÜÐæØï"
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr "ÀÐáߨáÐÝØÕ"
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr "ÂÐÙÜÕàë"
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr "ÁØáâÕÜÝëÙ áâÐÝÔÐàâ"
+#, fuzzy
+#~ msgid "Switch only"
+#~ msgstr "¿ÕàÕÚÛîçØâì"
+
#~ msgid "Format:"
#~ msgstr "ÄÞàÜÐâ:"
@@ -2332,8 +2710,5 @@ msgstr "ÁØáâÕÜÝëÙ áâÐÝÔÐàâ"
#~ msgid "Can't connect to VDR at %s!"
#~ msgstr "½Õ ÜÞÖÕâ áÞÕÔØÝØâìáï á %s!"
-#~ msgid "Switch"
-#~ msgstr "¿ÕàÕÚÛîçØâì"
-
#~ msgid "more"
#~ msgstr "ÑÞÛìèÕ"
diff --git a/po/vdradmin.pot b/po/vdradmin.pot
index 1b63e03..a01cdb8 100644
--- a/po/vdradmin.pot
+++ b/po/vdradmin.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-29 11:18+0200\n"
+"POT-Creation-Date: 2006-10-27 12:17+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,8 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: ../template/default/about.html:5 ../template/default/at_timer_list.html:5
-#: ../template/default/at_timer_new.html:5 ../template/default/config.html:4
-#: ../template/default/error.html:5
+#: ../template/default/config.html:4 ../template/default/error.html:5
#: ../template/default/help_at_timer_list.html:5
#: ../template/default/help_at_timer_new.html:11
#: ../template/default/help_config.html:8 ../template/default/help_no.html:5
@@ -34,11 +33,13 @@ msgstr ""
#: ../template/default/rec_edit.html:5 ../template/default/rec_list.html:5
#: ../template/default/timer_list.html:5 ../template/default/timer_new.html:5
#: ../template/default/tv.html:6 ../template/default/vdr_cmds.html:5
-#: ../vdradmind.pl:2090
+#: ../template/default/epgsearch_new.html:5
+#: ../template/default/at_timer_new.html:5
+#: ../template/default/epgsearch_list.html:5 ../vdradmind.pl:2740
msgid "ISO-8859-1"
msgstr ""
-#: ../template/default/about.html:6 ../template/default/navigation.html:64
+#: ../template/default/about.html:6 ../template/default/navigation.html:69
msgid "About"
msgstr ""
@@ -59,77 +60,87 @@ msgid "Translation Team"
msgstr ""
#: ../template/default/about.html:34
-msgid "Dutch:"
+msgid "English:"
msgstr ""
#: ../template/default/about.html:38
-msgid "English:"
+msgid "German:"
msgstr ""
#: ../template/default/about.html:42
-msgid "Finnish:"
-msgstr ""
-
-#: ../template/default/about.html:46
msgid "French:"
msgstr ""
-#: ../template/default/about.html:47
+#: ../template/default/about.html:43
msgid "At the moment unmaintained, former translations by:"
msgstr ""
+#: ../template/default/about.html:46
+msgid "Spanish:"
+msgstr ""
+
#: ../template/default/about.html:50
-msgid "German:"
+msgid "Finnish:"
msgstr ""
#: ../template/default/about.html:54
-msgid "Spanish:"
+msgid "Dutch:"
msgstr ""
#: ../template/default/about.html:58
msgid "Russian:"
msgstr ""
-#: ../template/default/about.html:65
+#: ../template/default/about.html:62
+msgid "Czech:"
+msgstr ""
+
+#: ../template/default/about.html:69
msgid "Informations"
msgstr ""
-#: ../template/default/about.html:68
+#: ../template/default/about.html:72
msgid "VDRAdmin-AM version:"
msgstr ""
-#: ../template/default/about.html:72
+#: ../template/default/about.html:76
msgid "VDR version:"
msgstr ""
-#: ../template/default/about.html:76
+#: ../template/default/about.html:80
msgid "Supported features in VDR:"
msgstr ""
-#: ../template/default/about.html:83
+#: ../template/default/about.html:87
+msgid ""
+"EPGSearch (<a href=\"http://people.freenet.de/cwieninger/html/vdr-epg-search."
+"html\" target=\"_blank\">EPGSearch Plugin</a>)"
+msgstr ""
+
+#: ../template/default/about.html:93
msgid ""
"LiveTV Streaming (<a href=\"http://www.vdr-wiki.de/wiki/index.php/Streamdev-"
"plugin\" target=\"_blank\">Streamdev Plugin</a>)"
msgstr ""
-#: ../template/default/about.html:89
+#: ../template/default/about.html:99
msgid ""
"Rename Recordings (<a href=\"http://www.saunalahti.fi/~rahrenbe/vdr/patches/"
"\" target=\"_blank\">Liemikuutio Patch</a>)"
msgstr ""
-#: ../template/default/about.html:96
+#: ../template/default/about.html:106
msgid "Getting Help and Reporting Bugs"
msgstr ""
-#: ../template/default/about.html:101
+#: ../template/default/about.html:111
msgid ""
"If you need help please first try to use the online help you'll find on some "
"pages. You can access it by clicking <img src=\"bilder/help.png\" alt=\"\" /"
">."
msgstr ""
-#: ../template/default/about.html:102
+#: ../template/default/about.html:112
msgid ""
"If this doesn't provide the information you need you can try to get help at "
"<a href=\"http://www.vdrportal.de\" target=\"_blank\">VDR-Portal</a> if you "
@@ -137,7 +148,7 @@ msgid ""
"search for:"
msgstr ""
-#: ../template/default/about.html:103
+#: ../template/default/about.html:113
msgid ""
"If you think you have found a bug please check that it's a new one and "
"report it in the <a href=\"http://www.vdr-developer.org/mantisbt/main_page."
@@ -156,7 +167,6 @@ msgid "AutoTimer"
msgstr ""
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:120
#: ../template/default/config.html:203 ../template/default/config.html:261
#: ../template/default/help_at_timer_new.html:50
#: ../template/default/help_config.html:98
@@ -164,11 +174,12 @@ msgstr ""
#: ../template/default/help_timer_new.html:53
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:130
+#: ../template/default/epgsearch_new.html:502
+#: ../template/default/at_timer_new.html:120
msgid "Priority:"
msgstr ""
#: ../template/default/at_timer_list.html:24
-#: ../template/default/at_timer_new.html:126
#: ../template/default/config.html:207 ../template/default/config.html:265
#: ../template/default/help_at_timer_new.html:52
#: ../template/default/help_config.html:100
@@ -176,6 +187,8 @@ msgstr ""
#: ../template/default/help_timer_new.html:55
#: ../template/default/timer_list.html:27
#: ../template/default/timer_new.html:134
+#: ../template/default/epgsearch_new.html:508
+#: ../template/default/at_timer_new.html:126
msgid "Lifetime:"
msgstr ""
@@ -184,30 +197,38 @@ msgid "New AutoTimer"
msgstr ""
#: ../template/default/at_timer_list.html:43
-#: ../template/default/at_timer_new.html:23 ../template/default/config.html:32
-#: ../template/default/navigation.html:64 ../template/default/rec_list.html:26
-#: ../template/default/timer_list.html:50
+#: ../template/default/config.html:32 ../template/default/navigation.html:69
+#: ../template/default/rec_list.html:26 ../template/default/timer_list.html:50
#: ../template/default/timer_new.html:52 ../template/default/vdr_cmds.html:20
+#: ../template/default/epgsearch_new.html:155
+#: ../template/default/at_timer_new.html:23
+#: ../template/default/epgsearch_list.html:31
msgid "Help"
msgstr ""
#: ../template/default/at_timer_list.html:57
#: ../template/default/timer_list.html:205
+#: ../template/default/epgsearch_list.html:43
msgid "Active"
msgstr ""
#: ../template/default/at_timer_list.html:68
#: ../template/default/timer_list.html:216
+#: ../template/default/epgsearch_list.html:65
+#: ../template/default/epgsearch_list.html:67
+#: ../template/default/epgsearch_list.html:214
msgid "Channel"
msgstr ""
#: ../template/default/at_timer_list.html:79
#: ../template/default/timer_list.html:238
+#: ../template/default/epgsearch_list.html:81
msgid "Start"
msgstr ""
#: ../template/default/at_timer_list.html:90
#: ../template/default/timer_list.html:249
+#: ../template/default/epgsearch_list.html:95
msgid "Stop"
msgstr ""
@@ -220,14 +241,11 @@ msgstr ""
#: ../template/default/at_timer_list.html:112
#: ../template/default/rec_list.html:85
#: ../template/default/timer_list.html:271
+#: ../template/default/epgsearch_list.html:117
msgid "Select all/none"
msgstr ""
#: ../template/default/at_timer_list.html:120
-#: ../template/default/at_timer_new.html:35
-#: ../template/default/at_timer_new.html:39
-#: ../template/default/at_timer_new.html:103
-#: ../template/default/at_timer_new.html:140
#: ../template/default/config.html:109 ../template/default/config.html:152
#: ../template/default/config.html:181 ../template/default/config.html:194
#: ../template/default/config.html:223 ../template/default/config.html:250
@@ -239,14 +257,15 @@ msgstr ""
#: ../template/default/config.html:409 ../template/default/config.html:416
#: ../template/default/config.html:423 ../template/default/timer_list.html:294
#: ../template/default/timer_new.html:62
+#: ../template/default/at_timer_new.html:35
+#: ../template/default/at_timer_new.html:39
+#: ../template/default/at_timer_new.html:103
+#: ../template/default/at_timer_new.html:140
+#: ../template/default/epgsearch_list.html:125
msgid "Yes"
msgstr ""
#: ../template/default/at_timer_list.html:122
-#: ../template/default/at_timer_new.html:36
-#: ../template/default/at_timer_new.html:40
-#: ../template/default/at_timer_new.html:104
-#: ../template/default/at_timer_new.html:141
#: ../template/default/config.html:110 ../template/default/config.html:153
#: ../template/default/config.html:182 ../template/default/config.html:195
#: ../template/default/config.html:224 ../template/default/config.html:251
@@ -258,23 +277,32 @@ msgstr ""
#: ../template/default/config.html:410 ../template/default/config.html:417
#: ../template/default/config.html:424 ../template/default/timer_list.html:295
#: ../template/default/timer_new.html:63
+#: ../template/default/at_timer_new.html:36
+#: ../template/default/at_timer_new.html:40
+#: ../template/default/at_timer_new.html:104
+#: ../template/default/at_timer_new.html:141
+#: ../template/default/epgsearch_list.html:127
msgid "No"
msgstr ""
#: ../template/default/at_timer_list.html:143
#: ../template/default/at_timer_list.html:148
#: ../template/default/timer_list.html:324
+#: ../template/default/epgsearch_list.html:158
+#: ../template/default/epgsearch_list.html:166
msgid "Edit"
msgstr ""
#: ../template/default/at_timer_list.html:153
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete timer?"
msgstr ""
#: ../template/default/at_timer_list.html:153
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
#: ../template/default/timer_list.html:327
+#: ../template/default/epgsearch_list.html:169
msgid "Delete"
msgstr ""
@@ -295,199 +323,10 @@ msgstr ""
msgid "No AutoTimers defined!"
msgstr ""
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-msgid "Add New AutoTimer"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:6
-#: ../template/default/at_timer_new.html:19
-#: ../template/default/help_at_timer_new.html:12
-#: ../template/default/help_at_timer_new.html:23
-msgid "Edit AutoTimer"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:32
-#: ../template/default/help_at_timer_new.html:30
-msgid "AutoTimer Active:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:37
-#: ../template/default/at_timer_new.html:41
-msgid "oneshot"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:46
-#: ../template/default/help_at_timer_new.html:32
-msgid "Search Patterns:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:52
-#: ../template/default/help_at_timer_new.html:34
-msgid "Search in:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:54
-#: ../template/default/at_timer_new.html:167
-msgid "Title"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:55
-#: ../template/default/at_timer_new.html:168
-msgid "Subtitle"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:56
-msgid "Description"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:60
-#: ../template/default/help_at_timer_new.html:36
-msgid "Search only on these days:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:62
-#: ../template/default/timer_new.html:92
-msgid "Monday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:63
-#: ../template/default/timer_new.html:93
-msgid "Tuesday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:64
-#: ../template/default/timer_new.html:94
-msgid "Wednesday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:65
-#: ../template/default/timer_new.html:95
-msgid "Thursday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:66
-#: ../template/default/timer_new.html:96
-msgid "Friday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:67
-#: ../template/default/timer_new.html:97
-msgid "Saturday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:68
-#: ../template/default/timer_new.html:98
-msgid "Sunday"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:72
-#: ../template/default/help_at_timer_new.html:38
-#: ../template/default/help_timer_new.html:39
-#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
-msgid "Channel:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:75
-msgid "all"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:83
-#: ../template/default/help_at_timer_new.html:40
-msgid "Starts After:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:88
-#: ../template/default/at_timer_new.html:97
-#: ../template/default/prog_list2.html:31
-#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33
-#: ../template/default/prog_timeline.html:77
-#: ../template/default/prog_timeline.html:155
-#: ../template/default/prog_timeline.html:172
-#: ../template/default/timer_new.html:107
-#: ../template/default/timer_new.html:119 ../vdradmind.pl:4034
-#: ../vdradmind.pl:4047
-msgid "o'clock"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:92
-#: ../template/default/help_at_timer_new.html:42
-msgid "Ends Before:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:101
-#: ../template/default/help_at_timer_new.html:44
-msgid "Override Start/Stop Margins:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:108
-#: ../template/default/config.html:212 ../template/default/config.html:269
-#: ../template/default/help_at_timer_new.html:46
-#: ../template/default/help_config.html:126
-msgid "Time Margin at Start:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:110
-#: ../template/default/at_timer_new.html:116
-#: ../template/default/config.html:200 ../template/default/config.html:270
-#: ../template/default/config.html:274 ../template/default/timer_new.html:109
-#: ../template/default/timer_new.html:121
-msgid "minutes"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:114
-#: ../template/default/config.html:216 ../template/default/config.html:273
-#: ../template/default/help_at_timer_new.html:48
-#: ../template/default/help_config.html:128
-msgid "Time Margin at Stop:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:132
-#: ../template/default/help_at_timer_new.html:54
-msgid "Episode:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:138
-#: ../template/default/help_at_timer_new.html:56
-msgid "Remember programmed timers:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:145
-#: ../template/default/help_at_timer_new.html:58
-msgid "Directory:"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:154
-#: ../template/default/config.html:450 ../template/default/timer_new.html:154
-msgid "Save"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:155
-msgid "Test"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:156
-#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
-msgid "Cancel"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:169
-msgid "Broadcasted"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:170
-msgid "Stored in"
-msgstr ""
-
-#: ../template/default/at_timer_new.html:182
-msgid "No matches found!"
-msgstr ""
-
#: ../template/default/config.html:5 ../template/default/config.html:28
#: ../template/default/help_config.html:9
#: ../template/default/help_config.html:24
-#: ../template/default/navigation.html:61
+#: ../template/default/navigation.html:66
msgid "Configuration"
msgstr ""
@@ -573,7 +412,7 @@ msgstr ""
#: ../template/default/config.html:168 ../template/default/help_config.html:30
#: ../template/default/help_config.html:80
#: ../template/default/navigation.html:35
-#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_timeline.html:7 ../vdradmind.pl:5318
msgid "Timeline"
msgstr ""
@@ -603,6 +442,33 @@ msgstr ""
msgid "Timeout:"
msgstr ""
+#: ../template/default/config.html:200 ../template/default/config.html:270
+#: ../template/default/config.html:274 ../template/default/timer_new.html:109
+#: ../template/default/timer_new.html:121
+#: ../template/default/epgsearch_new.html:516
+#: ../template/default/epgsearch_new.html:522
+#: ../template/default/epgsearch_new.html:542
+#: ../template/default/at_timer_new.html:110
+#: ../template/default/at_timer_new.html:116
+msgid "minutes"
+msgstr ""
+
+#: ../template/default/config.html:212 ../template/default/config.html:269
+#: ../template/default/help_at_timer_new.html:46
+#: ../template/default/help_config.html:126
+#: ../template/default/epgsearch_new.html:514
+#: ../template/default/at_timer_new.html:108
+msgid "Time Margin at Start:"
+msgstr ""
+
+#: ../template/default/config.html:216 ../template/default/config.html:273
+#: ../template/default/help_at_timer_new.html:48
+#: ../template/default/help_config.html:128
+#: ../template/default/epgsearch_new.html:520
+#: ../template/default/at_timer_new.html:114
+msgid "Time Margin at Stop:"
+msgstr ""
+
#: ../template/default/config.html:221
#: ../template/default/help_config.html:102
msgid "Send email after programming timer:"
@@ -756,6 +622,12 @@ msgstr ""
msgid "In \"Watch TV\"?"
msgstr ""
+#: ../template/default/config.html:450 ../template/default/timer_new.html:154
+#: ../template/default/epgsearch_new.html:557
+#: ../template/default/at_timer_new.html:154
+msgid "Save"
+msgstr ""
+
#: ../template/default/config.html:451
msgid "Apply"
msgstr ""
@@ -790,6 +662,13 @@ msgid ""
"check for matching AutoTimers.</p>"
msgstr ""
+#: ../template/default/help_at_timer_new.html:12
+#: ../template/default/help_at_timer_new.html:23
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Edit AutoTimer"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:27
msgid ""
"<p>Here you can edit an automatic timer's (AutoTimer) settings.</"
@@ -800,6 +679,11 @@ msgid ""
"irregularly broadcasted series or movies you don't want to miss.</p>"
msgstr ""
+#: ../template/default/help_at_timer_new.html:30
+#: ../template/default/at_timer_new.html:32
+msgid "AutoTimer Active:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:31
msgid ""
"Activate or deactivate this AutoTimer. Deactivated AutoTimers are still "
@@ -808,6 +692,11 @@ msgid ""
"so this AutoTimer only programs the (one!) next matching broadcast."
msgstr ""
+#: ../template/default/help_at_timer_new.html:32
+#: ../template/default/at_timer_new.html:46
+msgid "Search Patterns:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:33
msgid ""
"Choosing the right search items decides whether only the wanted broadcasts "
@@ -829,18 +718,36 @@ msgid ""
"\"Enterprise~Azati Prime\" as Blacklist-string)."
msgstr ""
+#: ../template/default/help_at_timer_new.html:34
+#: ../template/default/epgsearch_new.html:248
+#: ../template/default/at_timer_new.html:52
+msgid "Search in:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:35
msgid ""
"Here you can define the EPG sections where VDRAdmin-AM should look for the "
"search pattern."
msgstr ""
+#: ../template/default/help_at_timer_new.html:36
+#: ../template/default/at_timer_new.html:60
+msgid "Search only on these days:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:37
msgid ""
"Use these checkboxes to limit searching for matching broadcasts to a set of "
"weekdays."
msgstr ""
+#: ../template/default/help_at_timer_new.html:38
+#: ../template/default/help_timer_new.html:39
+#: ../template/default/prog_list.html:32 ../template/default/timer_new.html:78
+#: ../template/default/at_timer_new.html:72
+msgid "Channel:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:39
msgid ""
"The channel to look for matching broadcasts or \"all\" to search in all "
@@ -848,18 +755,33 @@ msgid ""
"in \"Configuration\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:40
+#: ../template/default/at_timer_new.html:83
+msgid "Starts After:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:41
msgid ""
"A broadcast must start after the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:42
+#: ../template/default/at_timer_new.html:92
+msgid "Ends Before:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:43
msgid ""
"A broadcast must end before the time entered here to match. The first text "
"field is for \"hour\", the second for \"minute\"."
msgstr ""
+#: ../template/default/help_at_timer_new.html:44
+#: ../template/default/at_timer_new.html:101
+msgid "Override Start/Stop Margins:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:45
msgid ""
"Set this option to \"yes\" if all timers programed by this AutoTimer should "
@@ -915,12 +837,22 @@ msgid ""
"recording has passed by."
msgstr ""
+#: ../template/default/help_at_timer_new.html:54
+#: ../template/default/at_timer_new.html:132
+msgid "Episode:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:55
msgid ""
"Check this box if you want VDRAdmin-AM to append the broadcast's EPG "
"subtitle to the recording's file name."
msgstr ""
+#: ../template/default/help_at_timer_new.html:56
+#: ../template/default/at_timer_new.html:138
+msgid "Remember programmed timers:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:57
msgid ""
"If you enable this VDRAdmin-AM will track timers it has already programmed "
@@ -928,6 +860,12 @@ msgid ""
"have been programmed automatically in the timers listing."
msgstr ""
+#: ../template/default/help_at_timer_new.html:58
+#: ../template/default/epgsearch_new.html:446
+#: ../template/default/at_timer_new.html:145
+msgid "Directory:"
+msgstr ""
+
#: ../template/default/help_at_timer_new.html:60
msgid ""
"The directory this AutoTimer will place the recordings in. If the name shall "
@@ -1242,8 +1180,8 @@ msgstr ""
#: ../template/default/help_rec_list.html:6
#: ../template/default/help_rec_list.html:17
-#: ../template/default/navigation.html:49 ../template/default/rec_list.html:6
-#: ../template/default/rec_list.html:17 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:54 ../template/default/rec_list.html:6
+#: ../template/default/rec_list.html:17 ../vdradmind.pl:5318
msgid "Recordings"
msgstr ""
@@ -1465,34 +1403,40 @@ msgstr ""
#: ../template/default/navigation.html:29
#: ../template/default/prog_summary.html:7
-#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:7 ../vdradmind.pl:5318
msgid "What's On Now?"
msgstr ""
-#: ../template/default/navigation.html:32 ../vdradmind.pl:4644
+#: ../template/default/navigation.html:32 ../vdradmind.pl:5318
msgid "Playing Today?"
msgstr ""
#: ../template/default/navigation.html:38 ../template/default/prog_list.html:6
#: ../template/default/prog_list2.html:56
#: ../template/default/prog_summary.html:48
-#: ../template/default/prog_summary2.html:85 ../vdradmind.pl:4644
+#: ../template/default/prog_summary2.html:85
+#: ../template/default/epgsearch_list.html:246 ../vdradmind.pl:5318
msgid "Channels"
msgstr ""
-#: ../template/default/navigation.html:52 ../template/default/rc.html:6
+#: ../template/default/navigation.html:50
+#: ../template/default/epgsearch_list.html:23
+msgid "EPG Search"
+msgstr ""
+
+#: ../template/default/navigation.html:57 ../template/default/rc.html:6
msgid "Remote Control"
msgstr ""
-#: ../template/default/navigation.html:55
+#: ../template/default/navigation.html:60
msgid "Watch TV"
msgstr ""
-#: ../template/default/navigation.html:58
+#: ../template/default/navigation.html:63
msgid "Commands"
msgstr ""
-#: ../template/default/navigation.html:69
+#: ../template/default/navigation.html:74
msgid "Search"
msgstr ""
@@ -1521,6 +1465,7 @@ msgid "view"
msgstr ""
#: ../template/default/prog_detail.html:37
+#: ../template/default/epgsearch_new.html:425 ../vdradmind.pl:2270
msgid "record"
msgstr ""
@@ -1555,7 +1500,7 @@ msgstr ""
#: ../template/default/prog_list2.html:59
#: ../template/default/prog_summary.html:68
#: ../template/default/prog_summary2.html:89
-#: ../template/default/rec_list.html:126
+#: ../template/default/rec_list.html:120
msgid "Stream"
msgstr ""
@@ -1570,6 +1515,8 @@ msgstr ""
#: ../template/default/prog_summary.html:104
#: ../template/default/prog_summary2.html:70
#: ../template/default/prog_summary2.html:99
+#: ../template/default/epgsearch_new.html:181
+#: ../template/default/epgsearch_list.html:232
msgid "More Information"
msgstr ""
@@ -1602,7 +1549,7 @@ msgstr ""
msgid "No EPG information available"
msgstr ""
-#: ../template/default/prog_list2.html:6 ../vdradmind.pl:2754
+#: ../template/default/prog_list2.html:6 ../vdradmind.pl:3427
msgid "Playing Today"
msgstr ""
@@ -1610,6 +1557,22 @@ msgstr ""
msgid "starting at"
msgstr ""
+#: ../template/default/prog_list2.html:31
+#: ../template/default/prog_summary.html:33
+#: ../template/default/prog_summary2.html:33
+#: ../template/default/prog_timeline.html:77
+#: ../template/default/prog_timeline.html:155
+#: ../template/default/prog_timeline.html:172
+#: ../template/default/timer_new.html:107
+#: ../template/default/timer_new.html:119
+#: ../template/default/epgsearch_new.html:336
+#: ../template/default/epgsearch_new.html:343
+#: ../template/default/at_timer_new.html:88
+#: ../template/default/at_timer_new.html:97 ../vdradmind.pl:4708
+#: ../vdradmind.pl:4721
+msgid "o'clock"
+msgstr ""
+
#: ../template/default/prog_summary.html:27
#: ../template/default/prog_summary2.html:27
#: ../template/default/prog_timeline.html:158
@@ -1617,12 +1580,12 @@ msgid "What's on:"
msgstr ""
#: ../template/default/prog_summary.html:33
-#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4034
+#: ../template/default/prog_summary2.html:33 ../vdradmind.pl:4708
msgid "at"
msgstr ""
#: ../template/default/prog_timeline.html:76
-#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4019
+#: ../template/default/prog_timeline.html:163 ../vdradmind.pl:4693
msgid "now"
msgstr ""
@@ -1664,10 +1627,16 @@ msgstr ""
msgid "Subtitle:"
msgstr ""
-#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:122
+#: ../template/default/rec_edit.html:44 ../template/default/rec_list.html:116
msgid "Rename"
msgstr ""
+#: ../template/default/rec_edit.html:45 ../template/default/timer_new.html:155
+#: ../template/default/epgsearch_new.html:559
+#: ../template/default/at_timer_new.html:156
+msgid "Cancel"
+msgstr ""
+
#: ../template/default/rec_list.html:20
msgid "Total:"
msgstr ""
@@ -1689,49 +1658,50 @@ msgstr ""
msgid "Total"
msgstr ""
-#: ../template/default/rec_list.html:98 ../template/default/rec_list.html:101
+#: ../template/default/rec_list.html:97
msgid "New"
msgstr ""
-#: ../template/default/rec_list.html:116
+#: ../template/default/rec_list.html:110
msgid "Play"
msgstr ""
-#: ../template/default/rec_list.html:119
+#: ../template/default/rec_list.html:113
msgid "Cut"
msgstr ""
-#: ../template/default/rec_list.html:124
+#: ../template/default/rec_list.html:118
msgid "Delete recording?"
msgstr ""
-#: ../template/default/rec_list.html:140
+#: ../template/default/rec_list.html:134
msgid "Refresh"
msgstr ""
-#: ../template/default/rec_list.html:144
+#: ../template/default/rec_list.html:138
msgid "Commands:"
msgstr ""
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
+#: ../template/default/epgsearch_new.html:558
msgid "Run"
msgstr ""
-#: ../template/default/rec_list.html:150 ../template/default/vdr_cmds.html:43
+#: ../template/default/rec_list.html:144 ../template/default/vdr_cmds.html:43
#: ../template/default/vdr_cmds.html:55
msgid "Really run this command?"
msgstr ""
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete Selected Recordings"
msgstr ""
-#: ../template/default/rec_list.html:154
+#: ../template/default/rec_list.html:148
msgid "Delete all selected recordings?"
msgstr ""
-#: ../template/default/rec_list.html:160
+#: ../template/default/rec_list.html:155
msgid "No recordings available"
msgstr ""
@@ -1797,6 +1767,48 @@ msgstr ""
msgid "Create New Timer"
msgstr ""
+#: ../template/default/timer_new.html:92
+#: ../template/default/epgsearch_new.html:381
+#: ../template/default/at_timer_new.html:62
+msgid "Monday"
+msgstr ""
+
+#: ../template/default/timer_new.html:93
+#: ../template/default/epgsearch_new.html:382
+#: ../template/default/at_timer_new.html:63
+msgid "Tuesday"
+msgstr ""
+
+#: ../template/default/timer_new.html:94
+#: ../template/default/epgsearch_new.html:383
+#: ../template/default/at_timer_new.html:64
+msgid "Wednesday"
+msgstr ""
+
+#: ../template/default/timer_new.html:95
+#: ../template/default/epgsearch_new.html:384
+#: ../template/default/at_timer_new.html:65
+msgid "Thursday"
+msgstr ""
+
+#: ../template/default/timer_new.html:96
+#: ../template/default/epgsearch_new.html:385
+#: ../template/default/at_timer_new.html:66
+msgid "Friday"
+msgstr ""
+
+#: ../template/default/timer_new.html:97
+#: ../template/default/epgsearch_new.html:386
+#: ../template/default/at_timer_new.html:67
+msgid "Saturday"
+msgstr ""
+
+#: ../template/default/timer_new.html:98
+#: ../template/default/epgsearch_new.html:387
+#: ../template/default/at_timer_new.html:68
+msgid "Sunday"
+msgstr ""
+
#: ../template/default/timer_new.html:109
#: ../template/default/timer_new.html:121
msgid "Buffer:"
@@ -1865,143 +1877,465 @@ msgstr ""
msgid "Commands defined in commands.conf:"
msgstr ""
-#: ../template/default/vdr_cmds.html:67
+#: ../template/default/vdr_cmds.html:68
msgid "Output"
msgstr ""
-#: ../vdradmind.pl:346
+#: ../template/default/epgsearch_new.html:6
+msgid "Define New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:6
+#: ../template/default/epgsearch_new.html:151
+msgid "Edit Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:135
+msgid "Small search pattern.\\nDo you really want to use it?"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:151
+msgid "Add New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:165
+msgid "Hide results"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:204
+#: ../template/default/at_timer_new.html:182
+#: ../template/default/epgsearch_list.html:255
+msgid "No matches found!"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:211
+msgid "Settings"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:216
+msgid "Search Term:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:223
+msgid "Search Mode:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:226
+msgid "phrase"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:227
+msgid "all words"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:228
+msgid "at least one word"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:229
+msgid "match exactly"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:230
+msgid "regular expression"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:231
+msgid "fuzzy"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:234
+msgid "Tolerance for \"fuzzy\":"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:241
+msgid "Match Case:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:250
+#: ../template/default/epgsearch_new.html:483
+#: ../template/default/at_timer_new.html:54
+#: ../template/default/at_timer_new.html:167
+#: ../template/default/epgsearch_list.html:213
+msgid "Title"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:251
+#: ../template/default/epgsearch_new.html:484
+#: ../template/default/at_timer_new.html:55
+#: ../template/default/at_timer_new.html:168
+msgid "Subtitle"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:252
+#: ../template/default/epgsearch_new.html:485
+#: ../template/default/at_timer_new.html:56
+msgid "Description"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:258
+msgid "Use extended EPG info:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:293
+msgid "Use Channel:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:296
+#: ../template/default/epgsearch_new.html:396
+msgid "no"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:297
+msgid "interval"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:298
+msgid "channel group"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:299
+msgid "only FTA"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:302
+msgid "Range:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:316
+msgid "Channel Group:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:327
+msgid "Use Time:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:333
+msgid "Start After:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:340
+msgid "Start Before:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:352
+msgid "Use Duration:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:358
+msgid "Min. Duration:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:361
+#: ../template/default/epgsearch_new.html:368
+msgid "hh:mm"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:365
+msgid "Max. Duration:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:377
+msgid "Use Day of Week:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:393
+msgid "Use Blacklists:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:397
+msgid "selection"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:398
+#: ../template/default/at_timer_new.html:75
+msgid "all"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:412
+msgid "Use in Favorites Menu:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:420
+msgid "Use as Search Timer:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:426 ../vdradmind.pl:2272
+msgid "announce only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:427 ../vdradmind.pl:2274
+msgid "switch only"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:437
+msgid "Settings for action \"record\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:440
+msgid "Series Recording:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:452
+msgid "Delete Recordings After ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:455
+msgid "Keep ... Recordings:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:460
+msgid "Pause, when ... recordings exist:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:466
+msgid "Avoid Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:472
+msgid "Allowed Repeats:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:475
+msgid "Only Repeats Within ... Days:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:480
+msgid "Compare:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:526
+msgid "VPS:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:537
+msgid "Settings for action \"switch only\""
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:540
+msgid "Switch ... Minutes Before Start:"
+msgstr ""
+
+#: ../template/default/epgsearch_new.html:553
+msgid "Save as template"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:6
+#: ../template/default/at_timer_new.html:19
+msgid "Add New AutoTimer"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:37
+#: ../template/default/at_timer_new.html:41
+msgid "oneshot"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:155
+msgid "Test"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:169
+msgid "Broadcasted"
+msgstr ""
+
+#: ../template/default/at_timer_new.html:170
+#: ../template/default/epgsearch_list.html:215
+msgid "Stored in"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:6
+msgid "EPG search"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:26
+msgid "New Search"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:54
+msgid "Action"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:79
+msgid "From"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:93
+msgid "To"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:107
+msgid "Search pattern"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:163
+msgid "Find"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:184
+msgid "Show Favorites"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+msgid "Delete Selected Searches"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:187
+msgid "Delete all selected searches?"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:188
+msgid "Execute Selected Searches"
+msgstr ""
+
+#: ../template/default/epgsearch_list.html:212
+msgid "Duration"
+msgstr ""
+
+#: ../vdradmind.pl:352
msgid "What's your VDR hostname (e.g video.intra.net)?"
msgstr ""
-#: ../vdradmind.pl:347
+#: ../vdradmind.pl:353
msgid "On which port does VDR listen to SVDRP queries?"
msgstr ""
-#: ../vdradmind.pl:348
+#: ../vdradmind.pl:354
msgid "On which address should VDRAdmin-AM listen (0.0.0.0 for any)?"
msgstr ""
-#: ../vdradmind.pl:349
+#: ../vdradmind.pl:355
msgid "On which port should VDRAdmin-AM listen?"
msgstr ""
-#: ../vdradmind.pl:350
+#: ../vdradmind.pl:356
msgid "Username?"
msgstr ""
-#: ../vdradmind.pl:351
+#: ../vdradmind.pl:357
msgid "Password?"
msgstr ""
-#: ../vdradmind.pl:352
+#: ../vdradmind.pl:358
msgid "Where are your recordings stored?"
msgstr ""
-#: ../vdradmind.pl:353
+#: ../vdradmind.pl:359
msgid "Where are your VDR's configuration files located?"
msgstr ""
-#: ../vdradmind.pl:360
+#: ../vdradmind.pl:366
msgid "Config file written successfully."
msgstr ""
-#: ../vdradmind.pl:420
+#: ../vdradmind.pl:426
#, perl-format
msgid "vdradmind.pl %s started with pid %d."
msgstr ""
-#: ../vdradmind.pl:480 ../vdradmind.pl:1085 ../vdradmind.pl:2078
+#: ../vdradmind.pl:486 ../vdradmind.pl:1117 ../vdradmind.pl:2728
msgid "Not found"
msgstr ""
-#: ../vdradmind.pl:480 ../vdradmind.pl:2079
+#: ../vdradmind.pl:486 ../vdradmind.pl:2729
msgid "The requested URL was not found on this server!"
msgstr ""
-#: ../vdradmind.pl:550 ../vdradmind.pl:1081 ../vdradmind.pl:2081
+#: ../vdradmind.pl:563 ../vdradmind.pl:1113 ../vdradmind.pl:2731
msgid "Forbidden"
msgstr ""
-#: ../vdradmind.pl:550 ../vdradmind.pl:2082
+#: ../vdradmind.pl:563 ../vdradmind.pl:2732
msgid "You don't have permission to access this function!"
msgstr ""
-#: ../vdradmind.pl:1081 ../vdradmind.pl:2083
+#: ../vdradmind.pl:1113 ../vdradmind.pl:2733
#, perl-format
msgid "Access to file \"%s\" denied!"
msgstr ""
-#: ../vdradmind.pl:1085 ../vdradmind.pl:2080
+#: ../vdradmind.pl:1117 ../vdradmind.pl:2730
#, perl-format
msgid "The URL \"%s\" was not found on this server!"
msgstr ""
-#: ../vdradmind.pl:2084
+#: ../vdradmind.pl:2188
+msgid "--- no timer ---"
+msgstr ""
+
+#: ../vdradmind.pl:2276
+msgid "unknown"
+msgstr ""
+
+#: ../vdradmind.pl:2279
+msgid "none"
+msgstr ""
+
+#: ../vdradmind.pl:2734
#, perl-format
msgid "Can't open file \"%s\"!"
msgstr ""
-#: ../vdradmind.pl:2085
+#: ../vdradmind.pl:2735
#, perl-format
msgid ""
"Can't connect to VDR at %s:%s<br /><br />Please check if VDR is running and "
"if VDR's svdrphosts.conf is configured correctly."
msgstr ""
-#: ../vdradmind.pl:2086
+#: ../vdradmind.pl:2736
#, perl-format
msgid "Error while sending command to VDR at %s"
msgstr ""
-#: ../vdradmind.pl:2142
+#: ../vdradmind.pl:2792
msgid "Internal error:"
msgstr ""
-#: ../vdradmind.pl:2495
+#: ../vdradmind.pl:3164
msgid "Can't find EPG entry!"
msgstr ""
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
msgid "Playing Tomorrow"
msgstr ""
-#: ../vdradmind.pl:2754
+#: ../vdradmind.pl:3427
#, perl-format
msgid "Playing on the %s"
msgstr ""
-#: ../vdradmind.pl:4024
+#: ../vdradmind.pl:4698
msgid "next"
msgstr ""
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on after"
msgstr ""
-#: ../vdradmind.pl:4043
+#: ../vdradmind.pl:4717
msgid "What's on at"
msgstr ""
-#: ../vdradmind.pl:4046
+#: ../vdradmind.pl:4720
msgid "Suitable matches for:"
msgstr ""
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "short view"
msgstr ""
-#: ../vdradmind.pl:4049
+#: ../vdradmind.pl:4723
msgid "long view"
msgstr ""
-#: ../vdradmind.pl:4098
+#: ../vdradmind.pl:4772
msgid "Schedule"
msgstr ""
-#: ../vdradmind.pl:4644
+#: ../vdradmind.pl:5318
msgid "Timers"
msgstr ""
-#: ../vdradmind.pl:4712
+#: ../vdradmind.pl:5386
msgid "System default"
msgstr ""
diff --git a/template/default/.#about.html.1.6 b/template/default/.#about.html.1.6
new file mode 100644
index 0000000..8e2d438
--- /dev/null
+++ b/template/default/.#about.html.1.6
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
+ <title><?% gettext('About') %?></title>
+ <script type="text/javascript" language="JavaScript1.2" src="library.js"></script>
+ <link href="style.css" rel="stylesheet" media="screen" type="text/css" />
+ <?% IF usercss %?>
+ <link href="user.css" rel="stylesheet" media="screen" type="text/css" />
+ <?% END %?>
+</head>
+
+<body id="about" onload="window.focus()">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="heading">
+ <td colspan="2"><h2><?% gettext('Authors') %?></h2></td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Current author (VDRAdmin-AM branch):') %?></h5></td>
+ <td class="col_value"><a href="mailto:mail@andreas.vdr-developer.org">Andreas Mair</a> (<a href="http://andreas.vdr-developer.org" target="_blank">Homepage</a>)</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Original author (VDRAdmin):') %?></h5></td>
+ <td class="col_value">Thomas Koch (<a href="http://www.linvdr.org" target="_blank">Homepage</a>)</td>
+ </tr>
+ </table>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="heading">
+ <td colspan="2"><h2><?% gettext('Translation Team') %?></h2></td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Dutch:') %?></h5></td>
+ <td class="col_value">Roel Koelewijn</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('English:') %?></h5></td>
+ <td class="col_value">Andreas Mair</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Finnish:') %?></h5></td>
+ <td class="col_value">Rolf Ahrenberg</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('French:') %?></h5></td>
+ <td class="col_value"><!-- <?% gettext('At the moment unmaintained, former translations by:') %?> -->Trois Six (also at vdrportal.de), map, lobotomise, bads, Mickaël Nival</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('German:') %?></h5></td>
+ <td class="col_value">Andreas Mair</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Spanish:') %?></h5></td>
+ <td class="col_value">R&uuml;diger Jung</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Russian:') %?></h5></td>
+ <td class="col_value">Oleg Roitburd and Allrussian-forum translation team</td>
+ </tr>
+ </table>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="heading">
+ <td colspan="2"><h2><?% gettext('Informations') %?></h2></td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('VDRAdmin-AM version:') %?></h5></td>
+ <td class="col_value"><?% myversion %?></td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('VDR version:') %?></h5></td>
+ <td class="col_value"><?% vdrversion %?></td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label" valign="top"><h5><?% gettext('Supported features in VDR:') %?></h5></td>
+ <td class="col_value">
+ <?% IF features.EPGSEARCH %?>
+ <img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/poempl_rot.png" alt="" align="middle" border="0"/>
+ <?% END %?>
+ &nbsp;<?% gettext('EPGSearch (<a href="http://people.freenet.de/cwieninger/html/vdr-epg-search.html" target="_blank">EPGSearch Plugin</a>)') %?><br />
+ <?% IF features.STREAMDEV %?>
+ <img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/poempl_rot.png" alt="" align="middle" border="0"/>
+ <?% END %?>
+ &nbsp;<?% gettext('LiveTV Streaming (<a href="http://www.vdr-wiki.de/wiki/index.php/Streamdev-plugin" target="_blank">Streamdev Plugin</a>)') %?><br />
+ <?% IF features.REC_RENAME %?>
+ <img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/poempl_rot.png" alt="" align="middle" border="0"/>
+ <?% END %?>
+ &nbsp;<?% gettext('Rename Recordings (<a href="http://www.saunalahti.fi/~rahrenbe/vdr/patches/" target="_blank">Liemikuutio Patch</a>)') %?><br />
+ </td>
+ </tr>
+ </table>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="help" class="group">
+ <tr class="heading">
+ <td><h2><?% gettext('Getting Help and Reporting Bugs') %?></h2></td>
+ </tr>
+ <tr class="row_even">
+ <td>
+ <ul>
+ <li><?% gettext('If you need help please first try to use the online help you\'ll find on some pages. You can access it by clicking <img src="bilder/help.png" alt="" />.') %?></li>
+ <li><?% gettext('If this doesn\'t provide the information you need you can try to get help at <a href="http://www.vdrportal.de" target="_blank">VDR-Portal</a> if you understand German language. Please use the announcement thread if possible, search for:') %?> &quot;[ANNOUNCE] VDRAdmin-AM-<?% myversion %?>&quot;</li>
+ <li><?% gettext('If you think you have found a bug please check that it\'s a new one and report it in the <a href="http://www.vdr-developer.org/mantisbt/main_page.php" target="_blank">VDRAdmin-AM BugTracking system</a>.') %?></li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+</body>
+
+</html>
diff --git a/template/default/.#navigation.html.1.4 b/template/default/.#navigation.html.1.4
new file mode 100644
index 0000000..3847057
--- /dev/null
+++ b/template/default/.#navigation.html.1.4
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
+ <title>VDRAdmin-AM</title>
+ <link type="text/css" href="style.css" rel="stylesheet" media="screen" />
+ <?% IF usercss %?>
+ <link type="text/css" href="user.css" rel="stylesheet" media="screen" />
+ <?% END %?>
+
+ <script type="text/javascript">
+ <!--
+ function rc_open() {
+ window.open("./vdradmin.pl?aktion=rc_show", "vdradminRC", "width=200, height=510, resizable=no, scrollbars=no, status=no, toolbar=no");
+ }
+ function tv_open() {
+ window.open("./vdradmin.pl?aktion=tv_show", "vdradminTV", "width=615, height=548, resizable=yes, scrollbars=no, status=no, toolbar=no");
+ }
+ // -->
+ </script>
+</head>
+
+<body id="navigation">
+ <div class="logo">
+ <a href="./" target="_top"><img src="bilder/logo.png" alt="" height="50" width="150" border="0" /></a>
+ </div>
+ <div class="nav_bar">
+ <div class="navi" id="prog_summary">
+ <a href="vdradmin.pl?aktion=prog_summary" target="main"><?% gettext('What\'s On Now?') %?></a>
+ </div>
+ <div class="navi" id="prog_list2">
+ <a href="vdradmin.pl?aktion=prog_list2" target="main"><?% gettext('Playing Today?') %?></a>
+ </div>
+ <div class="navi" id="prog_timeline">
+ <a href="vdradmin.pl?aktion=prog_timeline" target="main"><?% gettext('Timeline') %?></a>
+ </div>
+ <div class="navi" id="prog_list">
+ <a href="vdradmin.pl?aktion=prog_list" target="main"><?% gettext('Channels') %?></a>
+ </div>
+ <div class="navi" id="timer_list">
+ <a href="vdradmin.pl?aktion=timer_list" target="main"><?% gettext('Timer') %?></a>
+ </div>
+<?% IF features.AUTOTIMER %?>
+ <div class="navi" id="at_timer_list">
+ <a href="vdradmin.pl?aktion=at_timer_list" target="main"><?% gettext('AutoTimer') %?></a>
+ </div>
+<?% END %?>
+<?% IF features.EPGSEARCH %?>
+ <div class="navi" id="epgsearch_list">
+ <a href="vdradmin.pl?aktion=epgsearch_list" target="main"><?% gettext('EPG Search') %?></a>
+ </div>
+<X?% END %?>
+ <div class="navi" id="rec_list">
+ <a href="vdradmin.pl?aktion=rec_list" target="main"><?% gettext('Recordings') %?></a>
+ </div>
+ <div class="navi" id="rc">
+ <a href="javascript:rc_open();"><?% gettext('Remote Control') %?></a>
+ </div>
+ <div class="navi" id="tv">
+ <a href="vdradmin.pl?aktion=tv_show" target="main"><?% gettext('Watch TV') %?></a>
+ </div>
+ <div class="navi" id="commands">
+ <a href="vdradmin.pl?aktion=vdr_cmds" target="main"><?% gettext('Commands') %?></a>
+ </div>
+ <div class="navi" id="config">
+ <a href="vdradmin.pl?aktion=config" target="main"><?% gettext('Configuration') %?></a>
+ </div>
+ <div class="navi" id="about">
+ <a href="vdradmin.pl?aktion=about" target="main"><?% gettext('About') %?> / <?% gettext('Help') %?></a>
+ </div>
+
+ <form action="vdradmin.pl" method="get" name="FormName" target="main" class="search">
+ <input type="text" name="search" /><br />
+ <input type="submit" name="submit" value="<?% gettext('Search') %?>" /
+ <input type="hidden" name="aktion" value="prog_summary" />
+ </form>
+ </div>
+</body>
+</html>
diff --git a/template/default/about.html b/template/default/about.html
index 7cb6dcd..9d94fcb 100644
--- a/template/default/about.html
+++ b/template/default/about.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -31,33 +31,37 @@
<td colspan="2"><h2><?% gettext('Translation Team') %?></h2></td>
</tr>
<tr class="row_even">
- <td class="col_label"><h5><?% gettext('Dutch:') %?></h5></td>
- <td class="col_value">Roel Koelewijn</td>
- </tr>
- <tr class="row_even">
<td class="col_label"><h5><?% gettext('English:') %?></h5></td>
<td class="col_value">Andreas Mair</td>
</tr>
<tr class="row_even">
- <td class="col_label"><h5><?% gettext('Finnish:') %?></h5></td>
- <td class="col_value">Rolf Ahrenberg</td>
+ <td class="col_label"><h5><?% gettext('German:') %?></h5></td>
+ <td class="col_value">Andreas Mair</td>
</tr>
<tr class="row_even">
<td class="col_label"><h5><?% gettext('French:') %?></h5></td>
<td class="col_value"><!-- <?% gettext('At the moment unmaintained, former translations by:') %?> -->Trois Six (also at vdrportal.de), map, lobotomise, bads, Mickaël Nival</td>
</tr>
<tr class="row_even">
- <td class="col_label"><h5><?% gettext('German:') %?></h5></td>
- <td class="col_value">Andreas Mair</td>
- </tr>
- <tr class="row_even">
<td class="col_label"><h5><?% gettext('Spanish:') %?></h5></td>
<td class="col_value">R&uuml;diger Jung</td>
</tr>
<tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Finnish:') %?></h5></td>
+ <td class="col_value">Rolf Ahrenberg</td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Dutch:') %?></h5></td>
+ <td class="col_value">Roel Koelewijn</td>
+ </tr>
+ <tr class="row_even">
<td class="col_label"><h5><?% gettext('Russian:') %?></h5></td>
<td class="col_value">Oleg Roitburd and Allrussian-forum translation team</td>
</tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Czech:') %?></h5></td>
+ <td class="col_value">Karel Borkovec</td>
+ </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
@@ -75,6 +79,12 @@
<tr class="row_even">
<td class="col_label" valign="top"><h5><?% gettext('Supported features in VDR:') %?></h5></td>
<td class="col_value">
+ <?% IF features.EPGSEARCH %?>
+ <img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/poempl_rot.png" alt="" align="middle" border="0"/>
+ <?% END %?>
+ &nbsp;<?% gettext('EPGSearch (<a href="http://people.freenet.de/cwieninger/html/vdr-epg-search.html" target="_blank">EPGSearch Plugin</a>)') %?><br />
<?% IF features.STREAMDEV %?>
<img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/>
<?% ELSE %?>
diff --git a/template/default/at_timer_list.html b/template/default/at_timer_list.html
index aa67c40..306ab74 100644
--- a/template/default/at_timer_list.html
+++ b/template/default/at_timer_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>"/>
@@ -138,7 +138,7 @@
<?% IF at.stop %?><?% at.stop %?><?% ELSE %?>-<?% END %?>
</div>
</td>
- <td class="col_name <?% IF at.sortbypattern %?>selected<?% END %?>" <?% IF config.AT_TOOLTIP %?>onMouseOver="tip('VDR-<?% at.id %?>'); return true;" onMouseOut="untip(); return true;"<?% END %?>>
+ <td class="col_name <?% IF at.sortbypattern %?>selected<?% END %?>" <?% IF config.AT_TOOLTIP %?>onmouseover="tip('VDR-<?% at.id %?>'); return true;" onmouseout="untip(); return true;"<?% END %?>>
<div>
<a href="<?% at.modurl %?>" title="<?% gettext('Edit') %?>"><?% at.pattern %?></a>
</div>
@@ -168,7 +168,7 @@
<input type="submit" class="submit" name="at_force" value="<?% gettext('Force Update') %?>" />
</td>
<td align="right">
- <input type="submit" class="submit" name="at_delete" value="<?% gettext('Delete Selected AutoTimers') %?>" onclick="return mdel_old('<?% gettext('Delete all selected timers?') %?>');" />
+ <input type="submit" class="submit" name="at_delete" value="<?% gettext('Delete Selected AutoTimers') %?>" onclick="return mdel(this, '<?% gettext('Delete all selected timers?') %?>');" />
</td>
</tr>
</table>
diff --git a/template/default/at_timer_new.html b/template/default/at_timer_new.html
index d30c3d5..6a8dfb0 100644
--- a/template/default/at_timer_new.html
+++ b/template/default/at_timer_new.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>"/>
diff --git a/template/default/config.html b/template/default/config.html
index 03f47db..bb25def 100644
--- a/template/default/config.html
+++ b/template/default/config.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
<title>VDRAdmin-AM - <?% gettext('Configuration') %?></title>
@@ -426,7 +426,7 @@
</tr>
<tr class="row_odd">
<td class="col_channels">
- <select name="all_channels" size="8" multiple class="channels">
+ <select name="all_channels" size="8" multiple="multiple" class="channels">
<?% FOREACH chan = ALL_CHANNELS %?>
<option value="<?% chan.vdr_id %?>"><?% chan.name | html %?></option>
<?% END %?>
@@ -437,7 +437,7 @@
<input type="submit" class="submit" name="submit" value="&lt;&lt;&lt;&lt;&lt;" />
</td>
<td class="col_wanted_channels">
- <select name="selected_channels" size="8" multiple class="channels">
+ <select name="selected_channels" size="8" multiple="multiple" class="channels">
<?% FOREACH chan = SELECTED_CHANNELS %?>
<option value="<?% chan.vdr_id %?>"><?% chan.name | html %?></option>
<?% END %?>
diff --git a/template/default/default/sauerei.gif b/template/default/default/sauerei.gif
deleted file mode 100644
index f931774..0000000
--- a/template/default/default/sauerei.gif
+++ /dev/null
Binary files differ
diff --git a/template/default/epgsearch_list.html b/template/default/epgsearch_list.html
new file mode 100644
index 0000000..42a3ac7
--- /dev/null
+++ b/template/default/epgsearch_list.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html id="scroller">
+<?% USE JavaScript, HTML %?>
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>"/>
+ <title>VDRAdmin-AM - <?% gettext('EPG search') %?></title>
+ <link href="style.css" rel="stylesheet" media="screen" type="text/css"/>
+ <?% IF usercss %?>
+ <link href="user.css" rel="stylesheet" media="screen" type="text/css"/>
+ <?% END %?>
+ <script type="text/javascript" language="JavaScript1.2" src="library.js"></script>
+ <?% IF config.AT_TOOLTIP %?>
+ <script type="text/javascript" language="JavaScript1.2" src="infobox.js"></script>
+ <?% END %?>
+</head>
+
+<body id="epgsearch_list">
+<?% UNLESS did_search %?>
+ <form action="<?% url %?>" method="get" name="FormName0">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="heading">
+ <tr>
+ <td class="col_title">
+ <h1><?% gettext('EPG Search') %?></h1>
+ </td>
+ <td class="col_other">
+ <input type="submit" class="submit" name="new_search" value="<?% gettext('New Search') %?>" />
+ <input type="hidden" name="aktion" value="epgsearch_edit" />
+ </td>
+<?% IF help_url %?>
+ <td class="col_help">
+ <a href="javascript:open_help('<?% help_url %?>');"><img src="bilder/help.png" border="0" alt="help" title="<?% gettext('Help') %?>"/></a>
+ </td>
+<?% END %?>
+ </tr>
+ </table>
+ </form>
+
+ <form action="<?% url %?>" method="get" name="FormName">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="content" class="list hilight">
+ <tr class="heading">
+ <td class="col_active <?% IF sortbyactive %?>selected<?% END %?>">
+ <h2>
+ <a href="<?% sortbyactiveurl %?>"><?% gettext('Active') %?>
+ <?% IF sortbyactive %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ </h2>
+ </td>
+ <td class="col_action <?% IF sortbyaction %?>selected<?% END %?>">
+ <h2>
+ <a href="<?% sortbyactionurl %?>"><?% gettext('Action') %?>
+ <?% IF sortbyaction %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ </h2>
+ </td>
+ <td class="col_channel <?% IF sortbychannel %?>selected<?% END %?>">
+ <h2>
+ <?% gettext('Channel') %?>
+ <!--
+ <a href="<?% sortbychannelurl %?>"><?% gettext('Channel') %?>
+ <?% IF sortbychannel %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ -->
+ </h2>
+ </td>
+ <td class="col_start <?% IF sortbystart %?>selected<?% END %?>">
+ <h2>
+ <?% gettext('From') %?>
+ <!--
+ <a href="<?% sortbystarturl %?>"><?% gettext('Start') %?>
+ <?% IF sortbystart %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ -->
+ </h2>
+ </td>
+ <td class="col_stop <?% IF sortbystop %?>selected<?% END %?>">
+ <h2>
+ <?% gettext('To') %?>
+ <!--
+ <a href="<?% sortbystopurl %?>"><?% gettext('Stop') %?>
+ <?% IF sortbystop %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ -->
+ </h2>
+ </td>
+ <td class="col_name <?% IF sortbypattern %?>selected<?% END %?>">
+ <h2>
+ <a href="<?% sortbypatternurl %?>"><?% gettext('Search pattern') %?>
+ <?% IF sortbypattern %?>
+ <img src="bilder/sortiert_<?% desc %?>.gif" alt="" width="9" height="11" border="0"/>
+ <?% ELSE %?>
+ <img src="bilder/spacer.gif" alt="" width="9" height="11" border="0"/>
+ <?% END %?>
+ </a>
+ </h2>
+ </td>
+ <td class="col_buttons"></td>
+ <td class="col_checkbox"><input type="checkbox" name="SELALL" value="SELALL" onclick="AllMessages(this.form);" title="<?% gettext('Select all/none') %?>"/></td>
+ </tr>
+
+<?% FOREACH searches %?>
+ <tr class="<?% IF loop.count % 2 == 0 %?>row_even<?% ELSE %?>row_odd<?% END %?>">
+ <td class="col_active <?% IF sortbyactive %?>selected<?% END %?>">
+ <div>
+ <?% IF has_action %?>
+ <a href="<?% toggleurl %?>"><img src="bilder/poempl_gruen.png" alt="" align="middle" border="0"/> <?% gettext('Yes') %?></a>
+ <?% ELSE %?>
+ <a href="<?% toggleurl %?>"><img src="bilder/poempl_grau.png" alt="" align="middle" border="0"/> <?% gettext('No') %?></a>
+ <?% END %?>
+ </div>
+ </td>
+ <td class="col_active <?% IF sortbyactive %?>selected<?% END %?>">
+ <div><?% action_text %?></div>
+ </td>
+ <td class="col_channel <?% IF sortbychannel %?>selected<?% END %?>">
+ <div>
+ <?% SWITCH use_channel %?>
+ <?% CASE 1 %?>
+ <?% channel_from_name %?><?% IF channel_from_name != channel_to_name %?> - <?% channel_to_name %?><?% END %?>
+ <?% CASE 2 %?>
+ <?% channels %?>
+ <?% CASE %?>
+ -
+ <?% END %?>
+ </div>
+ </td>
+ <td class="col_start <?% IF sortbystart %?>selected<?% END %?>">
+ <div>
+ <?% IF time_start %?><?% time_start %?><?% ELSE %?>--:--<?% END %?>
+ </div>
+ </td>
+ <td class="col_stop <?% IF sortbystop %?>selected<?% END %?>">
+ <div>
+ <?% IF time_stop %?><?% time_stop %?><?% ELSE %?>--:--<?% END %?>
+ </div>
+ </td>
+ <td class="col_name <?% IF sortbypattern %?>selected<?% END %?>">
+ <div>
+ <a href="<?% modurl %?>" title="<?% gettext('Edit') %?>"><?% pattern | html %?></a>
+ </div>
+ </td>
+ <td class="col_buttons">
+ <span class="action find">
+ <a href="<?% findurl %?>"><img src="bilder/find.png" alt="find" border="0" title="<?% gettext('Find') %?>"/></a>
+ </span>
+ <span class="action edit">
+ <a href="<?% modurl %?>"><img src="bilder/edit.png" alt="edit" border="0" title="<?% gettext('Edit') %?>"/></a>
+ </span>
+ <span class="action delete">
+ <a href="javascript:del('<?% gettext('Delete timer?') %?>\n\n&quot;<?% pattern | js %?>&quot;', '<?% delurl %?>');"><img src="bilder/delete.png" alt="delete" border="0" title="<?% gettext('Delete') %?>"/></a>
+ </span>
+ </td>
+ <td class="col_checkbox">
+ <div>
+ <input type="checkbox" name="xxxx_<?% id %?>"/>
+ </div>
+ </td>
+ </tr>
+<?% END %?>
+ </table>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="buttons">
+ <tr>
+ <td align="left">
+ <input type="submit" class="submit" name="favorites" value="<?% gettext('Show Favorites') %?>" />
+ </td>
+ <td align="right">
+ <input type="submit" class="submit" name="delete" value="<?% gettext('Delete Selected Searches') %?>" onclick="mdel(this, '<?% gettext('Delete all selected searches?') %?>');" />
+ <input type="submit" class="submit" name="execute" value="<?% gettext('Execute Selected Searches') %?>" />
+ </td>
+ </tr>
+ </table>
+ <input type="hidden" name="aktion" value="epgsearch_aktion"/>
+
+ </form>
+<?% END %?>
+
+<?% IF did_search %?>
+ <form action="<?% url %?>" method="get" name="FormName0">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="heading">
+ <tr>
+ <td class="col_title">
+ <h1><?% title %?></h1>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <?% IF matches.size() > 0 %?>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="list" id="content">
+ <!--
+ <tr class="heading">
+ <td class="col_duration"><h2><?% gettext('Duration') %?></h2></td>
+ <td class="col_center"><h2><?% gettext('Title') %?></h2></td>
+ <td class="col_channel"><h2><?% gettext('Channel') %?></h2></td>
+ <td class="col_folder"><h2><?% gettext('Stored in') %?></h2></td>
+ </tr>
+ -->
+ <?% FOREACH matches;
+ IF olddate != date;
+ olddate = date; %?>
+ <tr class="newday">
+ <td colspan="4"><span class="date_long"><?% date %?></span></td>
+ </tr>
+ <?% END %?>
+ <tr class="<?% IF loop.count % 2 == 0 %?>row_even<?% ELSE %?>row_odd<?% END %?>">
+ <td class="col_duration">
+ <span class="time_duration"><span class="time_start"><?% start %?></span> - <span class="time_stop"><?% stop %?></span></span>
+ </td>
+ <td class="col_center">
+ <div class="epg_title">
+ <?% IF infurl %?>
+ <a href="javascript:popup('<?% infurl %?>');" title="<?% gettext('More Information') %?>">
+ <?% END %?>
+ <?% title %?>
+ <?% IF infurl %?>
+ </a>
+ <?% END %?>
+ </div>
+ <?% IF subtitle %?>
+ <div class="epg_subtitle"><?% subtitle %?></div>
+ <?% ELSE %?>
+ <div class="epg_subtitle">&nbsp;</div>
+ <?% END %?>
+ </td>
+ <td class="col_channel">
+ <div class="channel_name"><a href="<?% proglink %?>" title="<?% gettext('Channels') %?>"><?% channel %?></a></div>
+ </td>
+ <td class="col_folder">
+ <?% folder %?>
+ </td>
+ </tr>
+ <?% END %?>
+ </table>
+ <?% ELSE %?>
+ <div class="warning"><?% gettext('No matches found!') %?></div>
+ <?% END %?>
+<?% END %?>
+</body>
+
+</html>
diff --git a/template/default/epgsearch_new.html b/template/default/epgsearch_new.html
new file mode 100644
index 0000000..cfc917b
--- /dev/null
+++ b/template/default/epgsearch_new.html
@@ -0,0 +1,571 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html id="scroller">
+
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>"/>
+ <title>VDRAdmin-AM - <?% IF newtimer %?><?% gettext('Define New Search') %?><?% ELSE %?><?% gettext('Edit Search') %?><?% END %?></title>
+ <link href="style.css" rel="stylesheet" media="screen" type="text/css"/>
+ <?% IF usercss %?>
+ <link href="user.css" rel="stylesheet" media="screen" type="text/css"/>
+ <?% END %?>
+ <script type="text/javascript" language="JavaScript1.2" src="library.js"></script>
+ <script type="text/javascript" language="JavaScript1.2">
+ <!--
+ function initGUI()
+ {
+ if (document.getElementById("hide_results"))
+ document.getElementById("hide_results").style.display = "block";
+ changedSearchMode(document.getElementById("search_mode"));
+ changedUseChannel(document.getElementById("use_channel"));
+<?% IF extepg.size() > 0 %?>
+ changedUseExtEpg(document.getElementById("use_extepg"));
+<?% END %?>
+ changedUseTime(document.getElementById("use_time"));
+ changedUseDuration(document.getElementById("use_duration"));
+ changedUseDays(document.getElementById("use_days"));
+ changedUseBlacklists(document.getElementById("use_blacklists"));
+ changedAction(document.getElementById("select_action"));
+ changedHasAction(document.getElementById("has_action"));
+ changedAvoidRepeats(document.getElementById("avoid_repeats"));
+ }
+
+ function changedSearchMode(mySelect)
+ {
+ document.getElementById("fuzzy_tolerance").style.display = (mySelect.options[mySelect.selectedIndex].value == 5 ? "block" : "none");
+ }
+
+ function changedUseChannel(mySelect)
+ {
+ switch (mySelect.options[mySelect.selectedIndex].value)
+ {
+ case "0":
+ case "3":
+ document.getElementById("channel_range").style.display = "none";
+ document.getElementById("channel_group").style.display = "none";
+ break;
+
+ case "1":
+ document.getElementById("channel_range").style.display = "block";
+ document.getElementById("channel_group").style.display = "none";
+ break;
+
+ case "2":
+ document.getElementById("channel_range").style.display = "none";
+ document.getElementById("channel_group").style.display = "block";
+ break;
+ }
+ }
+
+ function changedUseExtEpg(myCheckbox)
+ {
+ document.getElementById("use_extepg_settings").style.display = (myCheckbox.checked ? "block" : "none");
+ }
+
+ function changedUseTime(myCheckbox)
+ {
+ document.getElementById("use_time_settings").style.display = (myCheckbox.checked ? "block" : "none");
+ }
+
+ function changedUseDuration(myCheckbox)
+ {
+ document.getElementById("use_duration_settings").style.display = (myCheckbox.checked ? "block" : "none");
+ }
+
+ function changedUseDays(myCheckbox)
+ {
+ document.getElementById("use_days_settings").style.display = (myCheckbox.checked ? "block" : "none");
+ }
+
+ function changedUseBlacklists(mySelect)
+ {
+ document.getElementById("select_blacklists").style.display = (mySelect.options[mySelect.selectedIndex].value == 1 ? "block" : "none");
+ }
+
+ function changedHasAction(myCheckbox)
+ {
+ if (myCheckbox.checked)
+ {
+ document.getElementById("set_action").style.display = "inline";
+ changedAction(document.getElementById("select_action"));
+ }
+ else
+ {
+ document.getElementById("set_action").style.display = "none";
+ document.getElementById("action_record_settings").style.display = "none";
+ document.getElementById("action_switch_settings").style.display = "none";
+ }
+ }
+
+ function changedAction(mySelect)
+ {
+ switch (mySelect.options[mySelect.selectedIndex].value)
+ {
+ case "0":
+ document.getElementById("action_record_settings").style.display = "block";
+ document.getElementById("action_switch_settings").style.display = "none";
+ break;
+
+ case "1":
+ document.getElementById("action_record_settings").style.display = "none";
+ document.getElementById("action_switch_settings").style.display = "none";
+ break;
+
+ case "2":
+ document.getElementById("action_record_settings").style.display = "none";
+ document.getElementById("action_switch_settings").style.display = "block";
+ break;
+ }
+ }
+
+ function changedAvoidRepeats(myCheckbox)
+ {
+ document.getElementById("avoid_repeats_settings").style.display = (myCheckbox.checked ? "block" : "none");
+ }
+
+ function checkSearchPattern()
+ {
+ if (document.getElementById("pattern").value.length > 3)
+ return true;
+
+ if ( !document.getElementById("use_title").checked
+ && !document.getElementById("use_subtitle").checked
+ && !document.getElementById("use_descr").checked)
+ return true;
+
+ return confirm('<?% gettext('Small search pattern.\nDo you really want to use it?') %?>');
+ }
+
+ function hideResults()
+ {
+ document.getElementById("results").style.display = "none";
+ }
+ //-->
+ </script>
+</head>
+
+<body id="epgsearch_new" onload="javascript:initGUI()">
+ <form action="<?% url %?>" method="get" name="FormName">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="heading">
+ <tr>
+ <td class="col_title">
+ <h1><?% IF do_edit %?><?% gettext('Edit Search') %?><?% ELSE %?><?% gettext('Add New Search') %?><?% END %?></h1>
+ </td>
+<?% IF help_url %?>
+ <td class="col_help">
+ <a href="javascript:open_help('<?% help_url %?>');"><img src="bilder/help.png" border="0" alt="help" title="<?% gettext('Help') %?>"/></a>
+ </td>
+<?% END %?>
+ </tr>
+ </table>
+
+ <div id="content">
+<?% IF did_search %?>
+ <?% IF matches %?>
+ <div id="results">
+ <input type="button" name="hide_results" value="<?% gettext('Hide results') %?>" onclick="javascript:hideResults()" id="hide_results" style="display:none;"/>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="list">
+ <?% FOREACH matches;
+ IF olddate != date;
+ olddate = date; %?>
+ <tr class="newday">
+ <td colspan="4"><span class="date_long"><?% date %?></span></td>
+ </tr>
+ <?% END %?>
+ <tr class="<?% IF loop.count % 2 == 0 %?>row_even<?% ELSE %?>row_odd<?% END %?>">
+ <td class="col_duration">
+ <span class="time_duration"><span class="time_start"><?% start %?></span> - <span class="time_stop"><?% stop %?></span></span>
+ </td>
+ <td class="col_center">
+ <div class="epg_title">
+ <?% IF infurl %?>
+ <a href="javascript:popup('<?% infurl %?>');" title="<?% gettext('More Information') %?>">
+ <?% END %?>
+ <?% title %?>
+ <?% IF infurl %?>
+ </a>
+ <?% END %?>
+ </div>
+ <?% IF subtitle %?>
+ <div class="epg_subtitle"><?% subtitle %?></div>
+ <?% ELSE %?>
+ <div class="epg_subtitle">&nbsp;</div>
+ <?% END %?>
+ </td>
+ <td class="col_channel">
+ <div class="channel_name"><?% channel %?></div>
+ </td>
+ <td class="col_folder">
+ <?% folder %?>
+ </td>
+ </tr>
+ <?% END %?>
+ </table>
+ <?% ELSE %?>
+ <div class="warning"><?% gettext('No matches found!') %?></div>
+ <?% END %?>
+ <br />
+ </div>
+<?% END %?>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="newday">
+ <td colspan="2"><?% gettext('Settings') %?></td>
+ </tr>
+ <?% tr_class = "row_odd" %?>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label"><h5><?% gettext('Search Term:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="pattern" id="pattern" value="<?% epgsearch.pattern %?>" size="40" />
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Search Mode:') %?></h5></td>
+ <td class="col_value">
+ <select onchange="javascript:changedSearchMode(this)" id="search_mode" name="mode">
+ <option value="0" <?% IF epgsearch.mode == 0 %?>selected="selected"<?% END %?>><?% gettext('phrase') %?></option>
+ <option value="1" <?% IF epgsearch.mode == 1 %?>selected="selected"<?% END %?>><?% gettext('all words') %?></option>
+ <option value="2" <?% IF epgsearch.mode == 2 %?>selected="selected"<?% END %?>><?% gettext('at least one word') %?></option>
+ <option value="3" <?% IF epgsearch.mode == 3 %?>selected="selected"<?% END %?>><?% gettext('match exactly') %?></option>
+ <option value="4" <?% IF epgsearch.mode == 4 %?>selected="selected"<?% END %?>><?% gettext('regular expression') %?></option>
+ <option value="5" <?% IF epgsearch.mode == 5 %?>selected="selected"<?% END %?>><?% gettext('fuzzy') %?></option>
+ </select>
+ <div id="fuzzy_tolerance">
+ <?% gettext('Tolerance for "fuzzy":') %?>
+ <input type="text" name="fuzzy_tolerance" size="2" value="<?% epgsearch.fuzzy_tolerance %?>" />
+ </div>
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label"><h5><?% gettext('Match Case:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="matchcase" value="1" <?% IF epgsearch.matchcase %?>checked="checked"<?% END %?> />
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Search in:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_title" value="1" id="use_title" <?% IF epgsearch.use_title %?>checked="checked"<?% END %?> /><label for="use_title"><?% gettext('Title') %?></label>
+ <input type="checkbox" name="use_subtitle" value="1" id="use_subtitle" <?% IF epgsearch.use_subtitle %?>checked="checked"<?% END %?> /><label for="use_subtitle"><?% gettext('Subtitle') %?></label>
+ <input type="checkbox" name="use_descr" value="1" id="use_descr" <?% IF epgsearch.use_descr %?>checked="checked"<?% END %?> /><label for="use_descr"><?% gettext('Description') %?></label>
+ </td>
+ </tr>
+<?% IF extepg.size() > 0 %?>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use extended EPG info:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_extepg" value="1" id="use_extepg" <?% IF epgsearch.use_extepg %?>checked="checked"<?% END %?> onclick="javascript:changedUseExtEpg(this)" /><br/>
+ <div id="use_extepg_settings">
+ <?% FOREACH ext = extepg %?>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><?% ext.title %?></td>
+ </tr>
+ <tr>
+ <td>
+ <input type="text" value="<?% ext.data_text %?>" size="10" name="extepg_<?% ext.id %?>_data_text"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select size="3" multiple="multiple" style="<?% IF ext.data.size() == 0 %?>visibility:hidden;<?% END %?>" name="extepg_<?% ext.id %?>_data">
+ <?% IF ext.data.size() > 0 %?>
+ <?% FOREACH v = ext.data %?>
+ <option value="<?% v.name | html %?>" <?% IF v.sel %?>selected="selected"<?% END %?>><?% v.name | html %?></option>
+ <?% END %?>
+ <?% ELSE %?>
+ <option/>
+ <?% END %?>
+ </select>
+ </td>
+ </tr>
+ </table>
+ <?% END %?>
+ </div>
+ </td>
+ </tr>
+<?% END %?>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use Channel:') %?></h5></td>
+ <td class="col_value">
+ <select onchange="javascript:changedUseChannel(this)" id="use_channel" name="use_channel">
+ <option value="0" <?% IF epgsearch.use_channel == 0 %?>selected="selected"<?% END %?>><?% gettext('no') %?></option>
+ <option value="1" <?% IF epgsearch.use_channel == 1 %?>selected="selected"<?% END %?>><?% gettext('interval') %?></option>
+ <option value="2" <?% IF epgsearch.use_channel == 2 %?>selected="selected"<?% END %?>><?% gettext('channel group') %?></option>
+ <option value="3" <?% IF epgsearch.use_channel == 3 %?>selected="selected"<?% END %?>><?% gettext('only FTA') %?></option>
+ </select>
+ <div id="channel_range">
+ <?% gettext('Range:') %?>
+ <select name="channel_from">
+<?% FOREACH channels %?>
+ <option value="<?% uniq_id %?>" <?% IF uniq_id == epgsearch.channel_from %?>selected="selected"<?% END %?>><?% name | html %?></option>
+<?% END %?>
+ </select>
+ -
+ <select name="channel_to">
+<?% FOREACH channels %?>
+ <option value="<?% uniq_id %?>" <?% IF uniq_id == epgsearch.channel_to %?>selected="selected"<?% END %?>><?% name | html %?></option>
+<?% END %?>
+ </select>
+ </div>
+ <div id="channel_group">
+ <?% gettext('Channel Group:') %?>
+ <select name="channel_group">
+ <?% FOREACH group = ch_groups %?>
+ <option value="<?% group.id %?>" <?% IF group.sel %?>selected="selected"<?% END %?>><?% group.name | html %?></option>
+ <?% END %?>
+ </select>
+ </div>
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use Time:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_time" value="1" <?% IF epgsearch.use_time %?>checked="checked"<?% END %?> onclick="javascript:changedUseTime(this)" id="use_time" />
+ <div id="use_time_settings">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="col_label"><h5><?% gettext('Start After:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="time_start" value="<?% epgsearch.time_start %?>" size="5" maxlength="5" />
+ &nbsp;<?% gettext('o\'clock') %?>
+ </td>
+ </tr>
+ <tr>
+ <td class="col_label"><h5><?% gettext('Start Before:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="time_stop" value="<?% epgsearch.time_stop %?>" size="5" maxlength="5" />
+ &nbsp;<?% gettext('o\'clock') %?>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use Duration:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_duration" value="1" <?% IF epgsearch.use_duration %?>checked="checked"<?% END %?> onclick="javascript:changedUseDuration(this)" id="use_duration" />
+ <div id="use_duration_settings">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="col_label"><h5><?% gettext('Min. Duration:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="min_duration" value="<?% epgsearch.min_duration %?>" size="5" maxlength="5" />
+ &nbsp;(<?% gettext('hh:mm') %?>)
+ </td>
+ </tr>
+ <tr>
+ <td class="col_label"><h5><?% gettext('Max. Duration:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="max_duration" value="<?% epgsearch.max_duration %?>" size="5" maxlength="5" />
+ &nbsp;(<?% gettext('hh:mm') %?>)
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use Day of Week:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_days" value="1" id="use_days" <?% IF epgsearch.use_days %?>checked="checked"<?% END %?> onclick="javascript:changedUseDays(this)" />
+ <div id="use_days_settings">
+ <input type="checkbox" name="monday" value="1" id="monday" <?% IF epgsearch.monday %?>checked="checked"<?% END %?> /><label for="monday"><?% gettext('Monday') %?></label>
+ <input type="checkbox" name="tuesday" value="1" id="tuesday" <?% IF epgsearch.tuesday %?>checked="checked"<?% END %?> /><label for="tuesday"><?% gettext('Tuesday') %?></label>
+ <input type="checkbox" name="wednesday" value="1" id="wednesday" <?% IF epgsearch.wednesday %?>checked="checked"<?% END %?> /><label for="wednesday"><?% gettext('Wednesday') %?></label>
+ <input type="checkbox" name="thursday" value="1" id="thursday" <?% IF epgsearch.thursday %?>checked="checked"<?% END %?> /><label for="thursday"><?% gettext('Thursday') %?></label>
+ <input type="checkbox" name="friday" value="1" id="friday" <?% IF epgsearch.friday %?>checked="checked"<?% END %?> /><label for="friday"><?% gettext('Friday') %?></label>
+ <input type="checkbox" name="saturday" value="1" id="saturday" <?% IF epgsearch.saturday %?>checked="checked"<?% END %?> /><label for="saturday"><?% gettext('Saturday') %?></label>
+ <input type="checkbox" name="sunday" value="1" id="sunday" <?% IF epgsearch.sunday %?>checked="checked"<?% END %?> /><label for="sunday"><?% gettext('Sunday') %?></label>
+ </div>
+ </td>
+ </tr>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label" valign="top"><h5><?% gettext('Use Blacklists:') %?></h5></td>
+ <td class="col_value">
+ <select onchange="javascript:changedUseBlacklists(this)" id="use_blacklists" name="use_blacklists">
+ <option value="0" <?% IF epgsearch.use_blacklists == 0 %?> selected="selected"<?% END %?>><?% gettext('no') %?></option>
+ <option value="1" <?% IF epgsearch.use_blacklists == 1 %?> selected="selected"<?% END %?>><?% gettext('selection') %?></option>
+ <option value="2" <?% IF epgsearch.use_blacklists == 2 %?> selected="selected"<?% END %?>><?% gettext('all') %?></option>
+ </select>
+ <div id="select_blacklists">
+ <select size="5" multiple="multiple" name="sel_blacklists">
+ <?% FOREACH bl = blacklists %?>
+ <option value="<?% bl.id %?>" <?% IF bl.sel %?>selected="selected"<?% END %?>><?% bl.pattern | html %?></option>
+ <?% END %?>
+ </select>
+ </div>
+ </td>
+ </tr>
+<?% IF epgs_settings.ShowFavoritesMenu %?>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label"><h5><?% gettext('Use in Favorites Menu:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_for_fav" value="1" <?% IF epgsearch.use_for_fav %?>checked="checked"<?% END %?> />
+ </td>
+ </tr>
+<?% END %?>
+ <tr class="<?% tr_class %?>">
+ <?% tr_class = (tr_class == "row_odd" ? "row_even" : "row_odd") %?>
+ <td class="col_label"><h5><?% gettext('Use as Search Timer:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="has_action" value="1" <?% IF epgsearch.has_action %?>checked="checked"<?% END %?> onclick="javascript:changedHasAction(this)" id="has_action" />
+ <span id="set_action">
+ <select onchange="javascript:changedAction(this)" id="select_action" name="action">
+ <option value="0" <?% IF epgsearch.action == 0 %?>selected="selected"<?% END %?>><?% gettext('record') %?></option>
+ <option value="1" <?% IF epgsearch.action == 1 %?>selected="selected"<?% END %?>><?% gettext('announce only') %?></option>
+ <option value="2" <?% IF epgsearch.action == 2 %?>selected="selected"<?% END %?>><?% gettext('switch only') %?></option>
+ </select>
+ </span>
+ </td>
+ </tr>
+ </table>
+
+ <div id="action_record_settings">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="heading">
+ <td colspan="2"><h2><?% gettext('Settings for action "record"') %?></h2></td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label"><h5><?% gettext('Series Recording:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="is_series" value="1" id="is_series" <?% IF epgsearch.is_series %?>checked="checked"<?% END %?> />
+ </td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Directory:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="directory" value="<?% epgsearch.directory %?>" size="40" />
+ </td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label"><h5><?% gettext('Delete Recordings After ... Days:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="delete_after" value="<?% epgsearch.delete_after %?>" size="3" />
+ &nbsp;&nbsp;<h5><?% gettext('Keep ... Recordings:') %?></h5>
+ <input type="text" name="keep_recordings" value="<?% epgsearch.keep_recordings %?>" size="3" />
+ </td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Pause, when ... recordings exist:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="pause" value="<?% epgsearch.pause %?>" size="3" />
+ </td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label" valign="top"><h5><?% gettext('Avoid Repeats:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="avoid_repeats" value="1" <?% IF epgsearch.avoid_repeats %?>checked="checked"<?% END %?> onclick="javascript:changedAvoidRepeats(this)" id="avoid_repeats" />
+ <div id="avoid_repeats_settings">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="col_label"><h5><?% gettext('Allowed Repeats:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="allowed_repeats" value="<?% epgsearch.allowed_repeats %?>" size="3" id="allowed_repeats"/>
+ &nbsp;&nbsp;<h5><?% gettext('Only Repeats Within ... Days:') %?></h5>
+ <input type="text" name="repeats_in_days" value="<?% epgsearch.repeats_in_days %?>" size="3" />
+ </td>
+ </tr>
+ <tr>
+ <td class="col_label" valign="top"><h5><?% gettext('Compare:') %?></h5></td>
+ <td class="col_value">
+ <div>
+ <input type="checkbox" name="comp_title" value="1" id="comp_title" <?% IF epgsearch.comp_title %?>checked="checked"<?% END %?> /><label for="comp_title"><?% gettext('Title') %?></label>
+ <input type="checkbox" name="comp_subtitle" value="1" id="comp_subtitle" <?% IF epgsearch.comp_subtitle %?>checked="checked"<?% END %?> /><label for="comp_subtitle"><?% gettext('Subtitle') %?></label>
+ <input type="checkbox" name="comp_descr" value="1" id="comp_descr" <?% IF epgsearch.comp_descr %?>checked="checked"<?% END %?> /><label for="comp_descr"><?% gettext('Description') %?></label>
+ </div>
+ <div>
+ <?% FOREACH ext = extepg %?>
+ <span>
+ <?% fullid = "comp_extepg_${ext.id}" %?>
+ <input type="checkbox" name="<?% fullid %?>" value="1" id="<?% fullid %?>" <?% IF epgsearch.$fullid %?>checked="checked"<?% END %?> /><label for="<?% fullid %?>"><?% ext.title %?></label>
+ </span>
+ <?% END %?>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Priority:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="prio" value="<?% epgsearch.prio %?>" size="2" maxlength="2" />
+ </td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label"><h5><?% gettext('Lifetime:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="lft" value="<?% epgsearch.lft %?>" size="2" maxlength="2" />
+ </td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('Time Margin at Start:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="bstart" value="<?% epgsearch.bstart %?>" size="2" maxlength="2" /> <?% gettext('minutes') %?>
+ </td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label"><h5><?% gettext('Time Margin at Stop:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="bstop" value="<?% epgsearch.bstop %?>" size="2" maxlength="2" /> <?% gettext('minutes') %?>
+ </td>
+ </tr>
+ <tr class="row_even">
+ <td class="col_label"><h5><?% gettext('VPS:') %?></h5></td>
+ <td class="col_value">
+ <input type="checkbox" name="use_vps" value="1" id="use_vps" <?% IF epgsearch.use_vps %?>checked="checked"<?% END %?> />
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="action_switch_settings">
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
+ <tr class="heading">
+ <td colspan="2"><h2><?% gettext('Settings for action "switch only"') %?></h2></td>
+ </tr>
+ <tr class="row_odd">
+ <td class="col_label"><h5><?% gettext('Switch ... Minutes Before Start:') %?></h5></td>
+ <td class="col_value">
+ <input type="text" name="switch_before" value="<?% epgsearch.switch_before %?>" size="2" maxlength="2" /> <?% gettext('minutes') %?>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="buttons">
+ <tr>
+ <!--
+ <td align="left">
+ <input type="submit" class="submit" name="template" value="<?% gettext('Save as template') %?>" />
+ </td>
+ -->
+ <td align="right">
+ <input type="submit" class="submit" name="save" value="<?% gettext('Save') %?>" onclick="return checkSearchPattern();" />
+ <input type="submit" class="submit" name="single_test" value="<?% gettext('Run') %?>" onclick="return checkSearchPattern();" />
+ <input type="submit" class="submit" name="exit" value="<?% gettext('Cancel') %?>" />
+ </td>
+ </tr>
+ </table>
+ <input type="hidden" name="aktion" value="epgsearch_aktion" />
+ <?% IF do_edit %?>
+ <input type="hidden" name="id" value="<?% epgsearch.id %?>" />
+ <?% END %?>
+ <input type="hidden" name="unused" value="<?% epgsearch.unused %?>" />
+ </form>
+</body>
+
+</html>
diff --git a/template/default/error.html b/template/default/error.html
index 6e45956..f704759 100644
--- a/template/default/error.html
+++ b/template/default/error.html
@@ -13,9 +13,7 @@
<body id="error">
<div align="center">
- <img src="bilder/sauerei.gif" height="230" width="177" border="0" alt="" />
- <br/>
- <h2><?% error %?></h2>
+ <div class="error"><?% error %?></div>
</div>
</body>
diff --git a/template/default/help_at_timer_list.html b/template/default/help_at_timer_list.html
index 129d286..ebbd880 100644
--- a/template/default/help_at_timer_list.html
+++ b/template/default/help_at_timer_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/help_at_timer_new.html b/template/default/help_at_timer_new.html
index 794c9d5..6e1d88c 100644
--- a/template/default/help_at_timer_new.html
+++ b/template/default/help_at_timer_new.html
@@ -5,7 +5,7 @@
* the HISTORY of macfly's patch
-->
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -42,7 +42,7 @@
<dt><?% gettext('Ends Before:') %?></dt>
<dd><?% gettext('A broadcast must end before the time entered here to match. The first text field is for "hour", the second for "minute".') %?></dd>
<dt><?% gettext('Override Start/Stop Margins:') %?></dt>
- <dd><?% gettext('Set this option to "yes" if all timers programed by this AutoTimer should have individual start/stop margins and enter the values in the next two text boxes.') %?>
+ <dd><?% gettext('Set this option to "yes" if all timers programed by this AutoTimer should have individual start/stop margins and enter the values in the next two text boxes.') %?></dd>
<dt><?% gettext('Time Margin at Start:') %?></dt>
<dd><?% gettext('The number of minutes VDRAdmin-AM subtracts from the broadcasts start time found in the EPG.') %?></dd>
<dt><?% gettext('Time Margin at Stop:') %?></dt>
diff --git a/template/default/help_config.html b/template/default/help_config.html
index 675935b..5bc6163 100644
--- a/template/default/help_config.html
+++ b/template/default/help_config.html
@@ -2,7 +2,7 @@
<!-- This help is partly taken from the VDR man page, Copyright (c) by Klaus Schmidinger -->
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -108,7 +108,7 @@
<dt><?% gettext('Mail server:') %?></dt>
<dd><?% gettext('The outgoing mail server.') %?></dd>
<dt><?% gettext('SMTPAuth user:') %?></dt>
- <dd><?% gettext('If you need to authenticate yourself at the outgoing mail server, you have to supply the username and the password below. Leaving this field empty will disable SMTPAuth.') %?>
+ <dd><?% gettext('If you need to authenticate yourself at the outgoing mail server, you have to supply the username and the password below. Leaving this field empty will disable SMTPAuth.') %?></dd>
<dt><?% gettext('SMTPAuth password:') %?></dt>
<dd><?% gettext('The password for the SMTPAuth user.') %?></dd>
<dt><?% gettext('Tooltips:') %?></dt>
diff --git a/template/default/help_rec_list.html b/template/default/help_rec_list.html
index ba8d0c7..b5fb008 100644
--- a/template/default/help_rec_list.html
+++ b/template/default/help_rec_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/help_timer_list.html b/template/default/help_timer_list.html
index 7d8e11c..08762da 100644
--- a/template/default/help_timer_list.html
+++ b/template/default/help_timer_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/help_timer_new.html b/template/default/help_timer_new.html
index c6c85cb..046eba9 100644
--- a/template/default/help_timer_new.html
+++ b/template/default/help_timer_new.html
@@ -2,7 +2,7 @@
<!-- This help is partly taken from the VDR man page, Copyright (c) by Klaus Schmidinger -->
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/index.html b/template/default/index.html
index a88f62b..30f0a72 100644
--- a/template/default/index.html
+++ b/template/default/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
@@ -13,8 +13,8 @@
</head>
<frameset border="0" cols="155,*" frameborder="no" framespacing="0">
- <frame name="nav" noresize src="navigation.html" />
- <frame name="main" noresize src="<?% loginpage %?>" />
+ <frame name="nav" noresize="noresize" src="navigation.html" />
+ <frame name="main" noresize="noresize" src="<?% loginpage %?>" />
<noframes>
<body>
diff --git a/template/default/library.js b/template/default/library.js
index 67b36fb..bc4ccc0 100644
--- a/template/default/library.js
+++ b/template/default/library.js
@@ -15,15 +15,9 @@ function change(message, suffix) {
if(check) window.location.href=suffix;
}
-function mdel_old(message) {
+function mdel(but, message) {
check=confirm(message);
- if(check) document.FormName.submit();
-}
-
-function mdel(message) {
- check=confirm(message);
-// if(check) document.FormName.submit();
- return check;
+ if(check) but.form.submit();
}
function callurl( url ) {
diff --git a/template/default/navigation.html b/template/default/navigation.html
index e6cd932..7ef88be 100644
--- a/template/default/navigation.html
+++ b/template/default/navigation.html
@@ -45,6 +45,11 @@
<a href="vdradmin.pl?aktion=at_timer_list" target="main"><?% gettext('AutoTimer') %?></a>
</div>
<?% END %?>
+<?% IF features.EPGSEARCH %?>
+ <div class="navi" id="epgsearch_list">
+ <a href="vdradmin.pl?aktion=epgsearch_list" target="main"><?% gettext('EPG Search') %?></a>
+ </div>
+<?% END %?>
<div class="navi" id="rec_list">
<a href="vdradmin.pl?aktion=rec_list" target="main"><?% gettext('Recordings') %?></a>
</div>
@@ -66,7 +71,7 @@
<form action="vdradmin.pl" method="get" name="FormName" target="main" class="search">
<input type="text" name="search" /><br />
- <input type="submit" name="submit" value="<?% gettext('Search') %?>" /
+ <input type="submit" name="submit" value="<?% gettext('Search') %?>" />
<input type="hidden" name="aktion" value="prog_summary" />
</form>
</div>
diff --git a/template/default/prog_list.html b/template/default/prog_list.html
index b8308fe..083b15f 100644
--- a/template/default/prog_list.html
+++ b/template/default/prog_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/prog_list2.html b/template/default/prog_list2.html
index 0a15582..fa36f7f 100644
--- a/template/default/prog_list2.html
+++ b/template/default/prog_list2.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -27,7 +27,7 @@
<td class="col_title">
<h1><?% title %?></h1>
<?% gettext('starting at') %?>
- <input type="text" size="5" maxlength="5" value="<?% now %?>" name="time"/>
+ <input type="text" size="5" maxlength="5" value="<?% now %?>" name="time"/>&nbsp;
<?% gettext('o\'clock') %?>
</td>
<td class="col_navi">
@@ -36,7 +36,7 @@
<select name="days" size="1" onchange="window.open(this.options[this.selectedIndex].value,'main')"> <?% FOREACH d = days %?>
<option value="<?% d.id %?>" <?% IF d.sel %?>selected="selected"<?% END %?>><?% d.name %?></option>
<?% END %?>
- </select>
+ </select>&nbsp;
<?% IF nextdayurl %?><a href="<?% nextdayurl %?>"><img src="bilder/pfeile_nachrechts.png" border="0" alt="" /></a><?% ELSE %?><img src="bilder/pfeile_nachrechts_soft.png" border="0" alt="" /><?% END %?>
<?% END %?>
</td>
diff --git a/template/default/prog_summary.html b/template/default/prog_summary.html
index 5ace9b7..74031ed 100644
--- a/template/default/prog_summary.html
+++ b/template/default/prog_summary.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="refresh" content="600; URL=vdradmin.pl?aktion=prog_summary" />
diff --git a/template/default/prog_summary2.html b/template/default/prog_summary2.html
index 2532023..e572a09 100644
--- a/template/default/prog_summary2.html
+++ b/template/default/prog_summary2.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="refresh" content="600; URL=vdradmin.pl?aktion=prog_summary" />
diff --git a/template/default/prog_timeline.html b/template/default/prog_timeline.html
index 2fc51b8..d48d6e5 100644
--- a/template/default/prog_timeline.html
+++ b/template/default/prog_timeline.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="refresh" content="600; URL=vdradmin.pl?aktion=prog_timeline" />
@@ -83,7 +83,7 @@
{
if (redraw_w != GetWindowW() || redraw_h != GetWindowH())
{
- Go('<?% nowurl %?>&time=<?% date.format(now_sec, '%H:%M') %?>');
+ Go('<?% nowurl %?>&amp;time=<?% date.format(now_sec, '%H:%M') %?>');
}
}
@@ -132,7 +132,7 @@
<?%
FOREACH show = shows2.${name};
%?>
- events[<?% counter %?>] = AddEvent(<?% counter %?>, <?% show.vdr_id %?>, <?% show.anchor %?>, <?% show.start %?>, <?% show.stop %?>, "<?% show.title %?>", <?% show.timer %?>, <?% show.summary ? 1 : 0 %?>);
+ events[<?% counter %?>] = AddEvent(<?% counter %?>, <?% show.vdr_id %?>, <?% show.anchor %?>, <?% show.start %?>, <?% show.stop %?>, "<?% show.title | html %?>", <?% show.timer %?>, <?% show.summary ? 1 : 0 %?>);
<?%
counter = counter + 1;
END;
@@ -156,7 +156,7 @@
</td>
<td class="col_other">
<?% gettext('What\'s on:') %?>&nbsp;
- <select name="Auswahl" class="submit" onChange="Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)" width="100">
+ <select name="Auswahl" class="submit" onchange="Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)">
<?% select_now = (now == date.format(date.now, '%H:%M')) %?>
<script type="text/javascript" language="JavaScript1.2">
BuildOption("", 0, "-");
diff --git a/template/default/rec_edit.html b/template/default/rec_edit.html
index cf1e6ca..bb18671 100644
--- a/template/default/rec_edit.html
+++ b/template/default/rec_edit.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/rec_list.html b/template/default/rec_list.html
index eb657ca..ab4905c 100644
--- a/template/default/rec_list.html
+++ b/template/default/rec_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -93,15 +93,9 @@
</td>
<td class="col_time <?% IF rec.sortbytime %?>selected<?% END %?>">
<span class="time"><?% rec.time %?></span>
- <span class="new">
- <?% IF rec.isfolder %?>
- <?% gettext('New') %?>
- <?% ELSE %?>
- <?% IF rec.new %?>
- <?% gettext('New') %?>
- <?% END %?>
- <?% END %?>
- </span>
+ <?% IF rec.isfolder || rec.new %?>
+ <span class="new"><?% gettext('New') %?></span>
+ <?% END %?>
</td>
<td class="col_name <?% IF rec.sortbyname %?>selected<?% END %?>">
<?% IF rec.isfolder %?>
@@ -151,8 +145,9 @@
</td>
<?% END %?>
<td align="right">
- <input type="submit" class="submit" name="rec_delete" value="<?% gettext('Delete Selected Recordings') %?>" onclick="return mdel('<?% gettext('Delete all selected recordings?') %?>');" />
+ <input type="submit" class="submit" name="rec_delete" value="<?% gettext('Delete Selected Recordings') %?>" onclick="return mdel(this, '<?% gettext('Delete all selected recordings?') %?>');" />
</td>
+ </tr>
</table>
<input type="hidden" name="aktion" value="rec_delete" />
</form>
diff --git a/template/default/style.css b/template/default/style.css
index 30ca69f..0bcc6ff 100644
--- a/template/default/style.css
+++ b/template/default/style.css
@@ -1,5 +1,17 @@
+/* ugly MSIE6/7 hacks */
+/* always show vertical scroller to avoid horizontal scrolling on some pages */
+* html#scroller {
+ overflow-y: scroll;
+}
+/* avoid too small inputs/selects */
+*+html #epgsearch_new #use_extepg_settings table,
+* html #epgsearch_new #use_extepg_settings table {
+ width: 30%;
+}
+/* END OF ugly MSIE hacks */
+
* {
- font-family: Verdana, Arial, Geneva, Helvetica, sans-serif;
+ font-family: Bitstream Vera Sans, Verdana, Arial, Geneva, Helvetica, sans-serif;
}
#rc,
@@ -45,6 +57,7 @@ select {
img {
border: 0;
vertical-align: middle;
+ display: inline;
}
/*
.submit {
@@ -150,8 +163,8 @@ body.help .heading {
display: table-row;
}
-.row_odd
-.row_even,
+.row_odd td,
+.row_even td,
.heading {
height: 17px;
}
@@ -194,11 +207,6 @@ body.help .heading {
white-space: nowrap;
}
-.row_odd,
-.row_even {
- height: 25px;
-}
-
.col_channels {
text-align: right;
padding: 10px;
@@ -249,6 +257,9 @@ body.help .heading {
text-align: center;
width: 20px;
}
+.heading .action {
+ background-color: white;
+}
/* Summary */
#prog_summary .group {
@@ -310,6 +321,10 @@ body.help .heading {
padding: 2px 2px;
}
+#action_record_settings,
+#action_switch_settings {
+ margin-top: 1em;
+}
.newday {
height: 17px;
background-color: #6d96a9;
@@ -331,12 +346,16 @@ body.help .heading {
}
#prog_list .col_buttons,
#rec_list .col_buttons,
+#epgsearch_list .col_buttons,
#prog_summary2 .col_buttons {
width: 120px;
text-align: right;
padding-right: 3px;
white-space: nowrap;
}
+#prog_summary2 table.percent td {
+ height: 8px;
+}
#prog_summary2 table.percent {
height: 8px;
width: 80px;
@@ -523,6 +542,7 @@ body.help .heading {
margin-top: 0.6em;
}
#timer_list .blackline {
+ height: 1px;
background-color: black;
}
#timer_list .color_ok {
@@ -537,7 +557,7 @@ body.help .heading {
#timer_list .color_inactive {
background-color: #858585;
}
-#timer_list #prgtable {
+#timer_list .prgtable {
border-left-color: #000000;
border-right-color: #000000;
}
@@ -560,6 +580,29 @@ body.help .heading {
padding: 0px;
}
+#epgsearch_new #use_extepg_settings {
+ white-space: normal;
+ vertical-align: top;
+}
+#epgsearch_new #use_extepg_settings table {
+ padding: 0 5px 5px 0;
+ display: inline;
+ float: left;
+ vertical-align: top;
+ height: 100%;
+}
+#epgsearch_new #use_extepg_settings table select,
+#epgsearch_new #use_extepg_settings table input {
+ width: 100%;
+}
+#epgsearch_new #avoid_repeats_settings div {
+ white-space: normal;
+}
+#epgsearch_new #avoid_repeats_settings span {
+ float: left;
+ padding-right: 1em;
+}
+
#content {
margin-top: 0.6em;
}
@@ -588,31 +631,6 @@ body.help .heading {
#config .col_label {
width: 50%;
}
-.tabs td {
- padding: 0;
- margin: 0;
- background-color: transparent;
- border-bottom: 2px solid #6d96a9;
-}
-.tab_selected a {
- color: white;
- margin: 1px 3px;
-}
-.tab_unselected a {
- color: black;
- margin: 1px 3px;
-}
-.tab_selected {
- border-right: 1px solid #6d96a9;
- background-color: #6d96a9;
- color: white;
- font-weight: bold;
-}
-.tab_unselected {
- border-right: 1px solid #6d96a9;
- background-color: white;
- color: black;
-}
#about .col_label {
width: 20%;
}
@@ -755,9 +773,6 @@ select.channels {
#navigation input {
width: 140px;
}
-#navigation #epgsearch_list a {
- color: green;
-}
/* message boxes */
.warning h1 {
diff --git a/template/default/timer_list.html b/template/default/timer_list.html
index a251da8..a5147a4 100644
--- a/template/default/timer_list.html
+++ b/template/default/timer_list.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -13,7 +13,7 @@
<script type="text/javascript" language="JavaScript1.2" src="infobox.js"></script>
<?% END %?>
<style type="text/css">
- #prgtable { border-left-width:1px; border-left-style:solid; border-right-width:1px; border-right-style:solid; }
+ .prgtable { border-left-width:1px; border-left-style:solid; border-right-width:1px; border-right-style:solid; }
</style>
</head>
@@ -147,12 +147,12 @@
END;
IF ende - pos < 2;
%?>
- <td class="<?% td_class %?>"><span <?% IF config.TM_TT_TIMELINE %?>onMouseOver="tip('VDR-<?% sendung.id %?>'); return true;" onMouseOut="untip(); return true;"<?% END %?>><img src="bilder/spacer.gif" width="<?% ende - pos %?>" height="20" border="0" alt="" /></span></td>
+ <td class="<?% td_class %?>"><span <?% IF config.TM_TT_TIMELINE %?>onmouseover="tip('VDR-<?% sendung.id %?>'); return true;" onmouseout="untip(); return true;"<?% END %?>><img src="bilder/spacer.gif" width="<?% ende - pos %?>" height="20" border="0" alt="" /></span></td>
<?%
ELSE;
%?>
- <td class="<?% td_class %?>" id="prgtable"><span <?% IF config.TM_TT_TIMELINE %?>onMouseOver="tip('VDR-<?% sendung.id %?>'); return true;" onMouseOut="untip(); return true;"<?% END %?>><img src="bilder/spacer.gif" width="<?% ende - pos - 2 %?>" height="20" border="0" alt="" /></span></td>
+ <td class="<?% td_class %?> prgtable"><span <?% IF config.TM_TT_TIMELINE %?>onmouseover="tip('VDR-<?% sendung.id %?>'); return true;" onmouseout="untip(); return true;"<?% END %?>><img src="bilder/spacer.gif" width="<?% ende - pos - 2 %?>" height="20" border="0" alt="" /></span></td>
<?%
END;
@@ -311,7 +311,7 @@
<div><?% timer.stop %?></div>
</td>
<td class="col_name <?% IF timer.sortbyname %?>selected<?% END %?>">
- <div <?% IF config.TM_TT_LIST %?>onMouseOver="tip('VDR-<?% timer.id %?>'); return true;" onMouseOut="untip(); return true;"<?% END %?>>
+ <div <?% IF config.TM_TT_LIST %?>onmouseover="tip('VDR-<?% timer.id %?>'); return true;" onmouseout="untip(); return true;"<?% END %?>>
<?% IF timer.recording %?><img align="middle" src="bilder/rec.gif" border="0" alt="" />&nbsp;<?% END %?>
<?% IF timer.infurl %?>
<a href="javascript:popup('<?% timer.infurl %?>');"><?% timer.title %?></a>
@@ -341,7 +341,7 @@
&nbsp;<?% gettext('selected timers') %?>
</td>
<td align="right">
- <input type="submit" class="submit" name="timer_delete" value="<?% gettext('Delete Selected Timers') %?>" onclick="return mdel('<?% gettext('Delete all selected timers?') %?>');" />
+ <input type="submit" class="submit" name="timer_delete" value="<?% gettext('Delete Selected Timers') %?>" onclick="return mdel(this, '<?% gettext('Delete all selected timers?') %?>');" />
</td>
</tr>
</table>
diff --git a/template/default/timer_new.html b/template/default/timer_new.html
index e6b0cbe..3d200aa 100644
--- a/template/default/timer_new.html
+++ b/template/default/timer_new.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
diff --git a/template/default/tv.html b/template/default/tv.html
index 5eb2dae..8b85826 100644
--- a/template/default/tv.html
+++ b/template/default/tv.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<title>VDRAdmin-AM - <?% gettext('TV') %?> (<?% host %?>)</title>
@@ -67,7 +67,7 @@
</script>
</head>
-<body onLoad="window.focus();WebcamUpdate()" id="tv">
+<body onload="window.focus();WebcamUpdate()" id="tv">
<form action="<?% url %?>" method="get" name="liveform">
<?% UNLESS tv_only %?>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="heading">
@@ -75,7 +75,7 @@
<td class="col_title"><h1><?% gettext('TV') %?></h1></td>
<td class="col_other">
<h5><?% gettext('Interval:') %?></h5>
- <select name="Seconds" class="submit" onChange="v_changeInterval(this.options[this.selectedIndex].value)">
+ <select name="Seconds" class="submit" onchange="v_changeInterval(this.options[this.selectedIndex].value)">
<option value="0"><?% gettext('off') %?></option>
<option value="1" <?% IF interval == 1 %?>selected="selected"<?% END %?>> 1 <?% gettext('sec.') %?></option>
<option value="2" <?% IF interval == 2 %?>selected="selected"<?% END %?>> 2 <?% gettext('sec.') %?></option>
@@ -85,14 +85,14 @@
<option value="30" <?% IF interval == 30 %?>selected="selected"<?% END %?>>30 <?% gettext('sec.') %?></option>
<option value="60" <?% IF interval == 60 %?>selected="selected"<?% END %?>>60 <?% gettext('sec.') %?></option>
</select>
- <input type="button" class="submit" name="livebild" value='<?% gettext('G') %?>' title="<?% gettext('Grab the picture!') %?>" onClick="WebcamUpdate()" />
+ <input type="button" class="submit" name="livebild" value='<?% gettext('G') %?>' title="<?% gettext('Grab the picture!') %?>" onclick="WebcamUpdate()" />
&nbsp;&nbsp;<h5><?% gettext('Size:') %?></h5>
- <select name="Size" class="submit" onChange="v_changeSize(this.options[this.selectedIndex].value)">
+ <select name="Size" class="submit" onchange="v_changeSize(this.options[this.selectedIndex].value)">
<option value="full" <?% IF size == 'full' %?>selected="selected"<?% END %?>>1:1</option>
<option value="half" <?% IF size == 'half' %?>selected="selected"<?% END %?>>1:2</option>
<option value="quarter" <?% IF size == 'quarter' %?>selected="selected"<?% END %?>>1:4</option>
</select>
- <input type="button" class="submit" name="livebild" value='<?% gettext('G') %?>' title="<?% gettext('Grab the picture!') %?>" onClick="WebcamUpdate()" />
+ <input type="button" class="submit" name="livebild" value='<?% gettext('G') %?>' title="<?% gettext('Grab the picture!') %?>" onclick="WebcamUpdate()" />
</td>
<td align="right"><?% UNLESS new_win %?>[<a class="submit" href="javascript:tv_open();"><?% gettext('Open in separate window') %?></a>]&nbsp;&nbsp;<?% END %?></td>
</tr>
diff --git a/template/default/vdr_cmds.html b/template/default/vdr_cmds.html
index edf6365..8038d9f 100644
--- a/template/default/vdr_cmds.html
+++ b/template/default/vdr_cmds.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
+<html id="scroller">
<head>
<meta http-equiv="content-type" content="text/html;charset=<?% gettext('ISO-8859-1') %?>" />
@@ -62,7 +62,8 @@
</form>
<?% IF show_output.size() > 0 %?>
- <table width="100%" border="0" cellspacing="0" cellpadding="0" id="content" class="group">
+ <br />
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="group">
<tr class="heading">
<td><h2><?% gettext('Output') %?></h2></td>
</tr>
diff --git a/vdradmind.pl b/vdradmind.pl
index ccc1fe8..d4d99df 100755
--- a/vdradmind.pl
+++ b/vdradmind.pl
@@ -28,7 +28,7 @@
require 5.004;
-my $VERSION = "3.4.7";
+my $VERSION = "3.5.0beta";
my $BASENAME;
my $EXENAME;
@@ -151,6 +151,7 @@ $CONFIG{TIMES} = "18:00, 20:00, 21:00, 22:00";
$CONFIG{TL_TOOLTIP} = 1;
#
+$CONFIG{AT_OFFER} = 0;
$CONFIG{AT_FUNC} = 1;
$CONFIG{AT_TIMEOUT} = 120;
$CONFIG{AT_LIFETIME} = 99;
@@ -158,18 +159,21 @@ $CONFIG{AT_PRIORITY} = 99;
$CONFIG{AT_MARGIN_BEGIN} = 10;
$CONFIG{AT_MARGIN_END} = 10;
$CONFIG{AT_TOOLTIP} = 1;
-$CONFIG{AT_SORTBY};
-$CONFIG{AT_DESC};
+$CONFIG{AT_SORTBY} = "pattern";
+$CONFIG{AT_DESC} = 0;
#
+$CONFIG{ES_SORTBY} = "pattern";
+$CONFIG{ES_DESC} = 0;
+
$CONFIG{TM_LIFETIME} = 99;
$CONFIG{TM_PRIORITY} = 99;
$CONFIG{TM_MARGIN_BEGIN} = 10;
$CONFIG{TM_MARGIN_END} = 10;
$CONFIG{TM_TT_TIMELINE} = 1;
$CONFIG{TM_TT_LIST} = 1;
-$CONFIG{TM_SORTBY};
-$CONFIG{TM_DESC};
+$CONFIG{TM_SORTBY} = "day";
+$CONFIG{TM_DESC} = 0;
#$CONFIG{TM_ADD_SUMMARY} = 0;
#
@@ -214,8 +218,8 @@ $CONFIG{TV_INTERVAL} = "5";
$CONFIG{TV_SIZE} = "half";
$CONFIG{REC_MIMETYPE} = "video/x-mpegurl";
$CONFIG{REC_EXT} = "m3u";
-$CONFIG{REC_SORTBY};
-$CONFIG{REC_DESC};
+$CONFIG{REC_SORTBY} = "name";
+$CONFIG{REC_DESC} = 0;
#
$CONFIG{PS_VIEW} = "ext";
@@ -228,10 +232,12 @@ my %FEATURES;
$FEATURES{STREAMDEV} = 0;
$FEATURES{REC_RENAME} = 0;
$FEATURES{AUTOTIMER} = 0;
+my %EPGSEARCH_SETTINGS;
my $SERVERVERSION = "vdradmind/$VERSION";
my $VDRVERSION = 0; # Numeric VDR version, e.g. 10344
my $VDRVERSION_HR; # Human readable VDR version, e.g. 1.3.44
+my $EPGSEARCH_VERSION = 0; # Numeric epgsearch plugin version, e.g. 918
my %ERROR_MESSAGE;
my ($TEMPLATEDIR, $CONFFILE, $LOGFILE, $PIDFILE, $AT_FILENAME, $DONE_FILENAME, $BL_FILENAME, $ETCDIR, $USER_CSS);
@@ -435,7 +441,7 @@ my ($Socket) =
Reuse => 1
);
die("can't start server: $!\n") if (!$Socket);
-$Socket->timeout($CONFIG{AT_TIMEOUT} * 60) if ($CONFIG{AT_FUNC});
+$Socket->timeout($CONFIG{AT_TIMEOUT} * 60) if ($CONFIG{AT_FUNC} && $FEATURES{AUTOTIMER});
$CONFIG{CACHE_LASTUPDATE} = 0;
$CONFIG{CACHE_REC_LASTUPDATE} = 0;
@@ -443,11 +449,11 @@ $CONFIG{CACHE_REC_LASTUPDATE} = 0;
# Mainloop
##
my ($Client, $MyURL, $Referer, $Request, $Query, $Guest);
-my @GUEST_USER = qw(prog_detail prog_list prog_list2 prog_timeline timer_list at_timer_list
+my @GUEST_USER = qw(prog_detail prog_list prog_list2 prog_timeline timer_list at_timer_list epgsearch_list
prog_summary rec_list rec_detail show_top toolbar show_help about);
my @TRUSTED_USER = (
- @GUEST_USER, qw(at_timer_edit at_timer_new at_timer_save at_timer_test
- at_timer_delete timer_new_form timer_add timer_delete timer_toggle rec_delete rec_rename rec_edit
+ @GUEST_USER, qw(at_timer_edit at_timer_new at_timer_save at_timer_test at_timer_delete
+ epgsearch_edit epgsearch_save epgsearch_delete epgsearch_toggle timer_new_form timer_add timer_delete timer_toggle rec_delete rec_rename rec_edit
config prog_switch rc_show rc_hitk grab_picture at_timer_toggle tv_show tv_switch
live_stream rec_stream rec_play rec_cut force_update vdr_cmds)
);
@@ -534,6 +540,13 @@ while (true) {
} elsif ($real_aktion eq "timer_aktion") {
$real_aktion = "timer_delete" if ($q->param("timer_delete"));
$real_aktion = "timer_toggle" if ($q->param("timer_active") || $q->param("timer_inactive"));
+ } elsif ($real_aktion eq "epgsearch_aktion") {
+ $real_aktion = "epgsearch_save";
+ $real_aktion = "epgsearch_delete" if ($q->param("delete"));
+ $real_aktion = "epgsearch_edit" if ($q->param("single_test"));
+ $real_aktion = "epgsearch_list" if ($q->param("execute"));
+ $real_aktion = "epgsearch_list" if ($q->param("favorites"));
+ $real_aktion = "epgsearch_list" if ($q->param("exit"));
}
my @ALLOWED_FUNCTIONS;
@@ -665,7 +678,8 @@ sub ChanTree {
service_id => $service_id,
nid => $nid,
tid => $tid,
- rid => $rid
+ rid => $rid,
+ uniq_id => $source . "-" . $nid . "-" . ($nid || $tid ? $tid : $frequency) . "-" . $service_id
}
);
}
@@ -721,6 +735,24 @@ sub get_channelid_from_vdrid {
}
}
+sub get_name_from_uniqid {
+ my $uniq_id = shift;
+ if ($uniq_id) {
+
+ # Kanalliste nach identischer vdr_id durchsuchen
+ my @C = grep($_->{uniq_id} eq $uniq_id, @CHAN);
+# foreach (@CHAN) {
+# printf("(%s) ($uniq_id)\n", $_->{uniq_id});
+# return $_->{name} if ($_->{uniq_id} eq $uniq_id);
+# }
+
+ # Es darf nach Spec nur eine Übereinstimmung geben
+ if (scalar(@C) == 1) {
+ return $C[0]->{name};
+ }
+ }
+}
+
sub get_name_from_vdrid {
my $vdr_id = shift;
if ($vdr_id) {
@@ -1219,7 +1251,7 @@ sub BlackList_Read {
}
sub AutoTimer {
- return if (!$CONFIG{AT_FUNC});
+ return if (!$CONFIG{AT_FUNC} || !$FEATURES{AUTOTIMER});
Log(LOG_AT, "Auto Timer: Scanning for events...");
my ($search, $start, $stop) = @_;
my @at_matches;
@@ -1684,8 +1716,10 @@ sub AT_ProgTimer {
Log(LOG_FATALERROR, "Failed to send email! Please contact the author.");
}
} elsif ($CONFIG{AT_SENDMAIL} == 1) {
- print("Missing Perl module Net::SMTP.\nAutoTimer email notification disabled.\n");
- Log(LOG_FATALERROR, "Missing Perl module Net::SMTP. AutoTimer email notification disabled.");
+ if (!$can_use_net_smtp) {
+ print("Missing Perl module Net::SMTP.\nAutoTimer email notification disabled.\n");
+ Log(LOG_FATALERROR, "Missing Perl module Net::SMTP. AutoTimer email notification disabled.");
+ }
if ($CONFIG{MAIL_AUTH_USER} ne "" && !$can_use_smtpauth) {
print("Missing Perl module Authen::SASL and/or Digest::HMAC_MD5.\nAutoTimer email notification disabled.\n");
Log(LOG_FATALERROR, "Missing Perl module Authen::SASL and/or Digest::HMAC_MD5. AutoTimer email notification disabled.");
@@ -1804,6 +1838,7 @@ sub CheckTimers {
# check for each event how probable it is matching the old timer
if (scalar(@eventlist) > 0) {
my $origlen = ($timer->{stop} - $timer->{bstop} * 60) - ($timer->{start} + $timer->{bstart} * 60);
+ next unless($origlen);
my $maxwight = 0;
$event = $eventlist[0];
@@ -1861,6 +1896,621 @@ sub CheckTimers {
}
#############################################################################
+# epgsearch
+#############################################################################
+sub epgsearch_list {
+ return if (UptoDate());
+
+ if ($EPGSEARCH_VERSION < 918) {
+ HTMLError("Your version of epgsearch plugin is too old! You need at least v0.9.18!");
+ return
+ }
+
+ $CONFIG{ES_DESC} = ($q->param("desc") ? 1 : 0) if (defined($q->param("desc")));
+ $CONFIG{ES_SORTBY} = $q->param("sortby") if (defined($q->param("sortby")));
+ $CONFIG{ES_SORTBY} = "pattern" if (!$CONFIG{ES_SORTBY});
+
+ my @matches;
+ my $do_test = $q->param("execute");
+
+ if ($do_test) {
+ my $id = $q->param("id");
+ unless (defined $id) {
+ for ($q->param) {
+ if (/xxxx_(.*)/) {
+ $id .= "|" if (defined $id);
+ $id .= $1;
+ }
+ }
+ }
+
+ if (defined $id) {
+ @matches = EpgSearchQuery("plug epgsearch qrys $id");
+ }
+ } else {
+ $do_test = $q->param("favorites");
+ @matches = EpgSearchQuery("plug epgsearch qryf") if ($do_test);
+ }
+
+ my @searches;
+ for (ParseEpgSearch(undef)) {
+ $_->{modurl} = $MyURL . "?aktion=epgsearch_edit&amp;id=" . $_->{id};
+ $_->{delurl} = $MyURL . "?aktion=epgsearch_delete&amp;id=" . $_->{id};
+ $_->{findurl} = $MyURL . "?aktion=epgsearch_aktion&amp;execute=1&amp;id=" . $_->{id};
+ $_->{toggleurl} = sprintf("%s?aktion=epgsearch_toggle&amp;active=%s&amp;id=%s", $MyURL, $_->{has_action}, $_->{id});
+ push(@searches, $_);
+ }
+
+ if ($CONFIG{ES_SORTBY} eq "active") {
+ if ($CONFIG{ES_DESC}) {
+ @searches = sort({ $b->{has_action} <=> $a->{has_action} } @searches);
+ } else {
+ @searches = sort({ $a->{has_action} <=> $b->{has_action} } @searches);
+ }
+ } elsif ($CONFIG{ES_SORTBY} eq "action") {
+ if ($CONFIG{ES_DESC}) {
+ @searches = sort({ lc($b->{action_text}) cmp lc($a->{action_text}) } @searches);
+ } else {
+ @searches = sort({ lc($a->{action_text}) cmp lc($b->{action_text}) } @searches);
+ }
+ } elsif ($CONFIG{ES_SORTBY} eq "pattern") {
+ if ($CONFIG{ES_DESC}) {
+ @searches = sort({ lc($b->{pattern}) cmp lc($a->{pattern}) } @searches);
+ } else {
+ @searches = sort({ lc($a->{pattern}) cmp lc($b->{pattern}) } @searches);
+ }
+ }
+
+ my $toggle_desc = ($CONFIG{ES_DESC} ? 0 : 1);
+
+ my $vars = { usercss => $UserCSS,
+ url => $MyURL,
+ sortbypatternurl => "$MyURL?aktion=epgsearch_list&amp;sortby=pattern&amp;desc=" . (($CONFIG{ES_SORTBY} eq "pattern") ? $toggle_desc : $CONFIG{ES_DESC}),
+ sortbyactiveurl => "$MyURL?aktion=epgsearch_list&amp;sortby=active&amp;desc=" . (($CONFIG{ES_SORTBY} eq "active") ? $toggle_desc : $CONFIG{ES_DESC}),
+ sortbyactionurl => "$MyURL?aktion=epgsearch_list&amp;sortby=action&amp;desc=" . (($CONFIG{ES_SORTBY} eq "action") ? $toggle_desc : $CONFIG{ES_DESC}),
+ desc => $CONFIG{ES_DESC} ? "desc" : "asc",
+ sortbypattern => ($CONFIG{ES_SORTBY} eq "pattern") ? 1 : 0,
+ sortbyactive => ($CONFIG{ES_SORTBY} eq "active") ? 1 : 0,
+ sortbyaction => ($CONFIG{ES_SORTBY} eq "action") ? 1 : 0,
+ searches => \@searches,
+ did_search => $do_test,
+ title => $do_test ? ($q->param("favorites") ? "Your favorites" : "Search results") : undef,
+ matches => (@matches ? \@matches : undef)
+ };
+ return showTemplate("epgsearch_list.html", $vars);
+}
+
+sub epgsearch_edit {
+ my $id = $q->param("id");
+ my $do_test = $q->param("single_test");
+
+ my $search;
+ my @blacklists;
+ my @ch_groups;
+ my @matches;
+ my @sel_bl;
+
+ if ($do_test) {
+ # test search
+ $search = $q->Vars();
+ @sel_bl = $q->param("sel_blacklists");
+ @matches = EpgSearchQuery("plug epgsearch qrys 0:" . epgsearch_Param2Line());
+ } elsif (defined $id) {
+ # edit search
+ my @temp = ParseEpgSearch($id);
+ $search = pop @temp;
+ @sel_bl = split(/\|/, $search->{sel_blacklists});
+ } else {
+ # new search
+ $search->{use_title} = 1;
+ $search->{use_subtitle} = 1;
+ $search->{use_descr} = 1;
+ $search->{comp_title} = 1;
+ $search->{comp_subtitle} = 1;
+ $search->{comp_descr} = 1;
+ }
+
+ if (@sel_bl) {
+ for my $bl (ParseEpgSearchBlacklists(undef)) {
+ for (@sel_bl) {
+ if ($bl->{id} == $_) {
+ $bl->{sel} = 1;
+ last;
+ }
+ }
+ push(@blacklists, $bl);
+ }
+ } else {
+ @blacklists = ParseEpgSearchBlacklists(undef);
+ }
+
+ if ($search->{use_channels} == 2) {
+ for my $cg (ParseEpgSearchChanGroups(undef)) {
+ $cg->{sel} = 1 if ($cg->{id} == $search->{channels}) ;
+ push(@ch_groups, $cg);
+ }
+ } else {
+ @ch_groups = ParseEpgSearchChanGroups(undef);
+ }
+
+ my @extepg = ParseEpgSearchExtEpgInfos($search->{extepg_infos});
+ if ($search->{comp_extepg_info}) {
+ foreach (@extepg) {
+ if ($search->{comp_extepg_info} & (1 << ($_->{id} - 1))) {
+ $search->{"comp_extepg_" . $_->{id}} = 1;
+ }
+ }
+ }
+
+ epgsearch_getSettings();
+
+ my $vars = { usercss => $UserCSS,
+ url => $MyURL,
+ epgsearch => $search,
+ channels => \@CHAN,
+ blacklists => \@blacklists,
+ ch_groups => \@ch_groups,
+ did_search => $do_test,
+ matches => (@matches ? \@matches : undef),
+ do_edit => (defined $id ? "1" : undef),
+ extepg => \@extepg,
+ epgs_settings => \%EPGSEARCH_SETTINGS
+ };
+ return showTemplate("epgsearch_new.html", $vars);
+}
+
+sub ParseEpgSearch {
+ my $id = shift;
+
+ my @temp;
+ for (SendCMD("plug epgsearch lsts $id")) {
+ chomp;
+ next if (length($_) == 0);
+ last if (/^no searches defined$/);
+
+ push(@temp, ExtractEpgSearchConf($_));
+ }
+
+ return @temp;
+}
+
+sub ParseEpgSearchBlacklists {
+ my $id = shift;
+
+ my @temp;
+ for (SendCMD("plug epgsearch lstb $id")) {
+ chomp;
+ next if (length($_) == 0);
+ last if (/^no blacklists defined$/);
+
+ push(@temp, ExtractEpgSearchConf($_));
+ }
+
+ return @temp;
+}
+
+sub ParseEpgSearchChanGroups {
+ my $id = shift;
+
+ my @temp;
+ for (SendCMD("plug epgsearch lstc $id")) {
+ chomp;
+ next if (length($_) == 0);
+ last if (/^no channel groups defined$/);
+
+ my ($name, $channels) = split(/\|/, $_, 2);
+ push(@temp, {
+ id => $name,
+ name => $name,
+ channels => $channels
+ }
+ );
+ }
+
+ return @temp;
+}
+
+sub ParseEpgSearchExtEpgInfos {
+ my @temp = split(/\|/, shift);
+ my %sel;
+ foreach (@temp) {
+ my ($id, $val) = split(/#/);
+ $val =~ s/\!\^colon\^\!/\:/g;
+ $val =~ s/\!\^pipe\^\!/\|/g;
+ $sel{$id} = $val;
+ }
+
+ my @return;
+ for (SendCMD("plug epgsearch lste")) {
+ chomp;
+ next if (length($_) == 0);
+ last if (/^no EPG categories defined$/);
+
+ my ($id, $name, $title, $values, $searchmode) = split(/\|/, $_, 5);
+ my @val;
+ my $selected;
+ foreach (split(/, /, $values)) {
+ my $value = $_;
+ my @res = grep(/^$value$/, split(/, /, $sel{$id}));
+ $selected = 1 if (@res);
+ push(@val, { name => $value,
+ sel => (@res) ? 1 : undef
+ }
+ );
+ }
+ push(@return, {
+ id => $id,
+ name => $name,
+ title => $title,
+ data => \@val,
+ searchmode => $searchmode,
+ data_text => $selected ? undef : $sel{$id}
+ }
+ );
+ }
+
+ return @return;
+}
+
+sub EpgSearchQuery {
+ my $cmd = shift;
+ my $ref = shift;
+ return unless($cmd);
+
+#print("EpgSearchQuery: $cmd\n");
+ my @result;
+ for (SendCMD($cmd)) {
+ chomp;
+ next if (length($_) == 0);
+ last if(/^no results$/);
+# Suchtimer-ID : Event-ID : Title : Subtitle : Event-Begin : Event-Ende :
+# Kanalnummer : Timer-Start : Timer-Ende : Timer-File : hat/bekommt Timer
+ my ($es_id, $event_id, $title, $subtitle, $estart, $estop, $chan, $tstart, $tstop, $tdir, $has_timer) = split(/:/);
+ if ($title) {
+ $title =~ s/\|/:/g;
+ $title =~ s/\!\^pipe\^\!/\|/g;
+ }
+ if ($subtitle) {
+ $subtitle =~ s/\|/:/g;
+ $subtitle =~ s/\!\^pipe\^\!/\|/g;
+ }
+ if ($tdir) {
+ $tdir =~ s/\|/:/g;
+ $tdir =~ s/\!\^pipe\^\!/\|/g;
+ }
+
+ push(@result, { title => $title,
+ subtitle => $subtitle,
+ date => my_strftime("%A, %x", $estart),
+ start => my_strftime("%H:%M", $estart),
+ stop => my_strftime("%H:%M", $estop),
+ channel => get_name_from_uniqid($chan),
+ folder => $has_timer ? $tdir : gettext("--- no timer ---"),
+ infurl => $event_id ? sprintf("%s?aktion=prog_detail&amp;epg_id=%s&amp;channel_id=%s&amp;referer=%s", $MyURL, $event_id, $chan, $ref) : undef,
+ proglink => sprintf("%s?aktion=prog_list&amp;channel_id=%s", $MyURL, $chan)
+ }
+ );
+ }
+ return @result;
+}
+
+sub ExtractEpgSearchConf {
+ my $timer;
+ ($timer->{id}, # 1 - unique search timer id
+ $timer->{pattern}, # 2 - the search term
+ $timer->{use_time}, # 3 - use time? 0/1
+ $timer->{time_start}, # 4 - start time in HHMM
+ $timer->{time_stop}, # 5 - stop time in HHMM
+ $timer->{use_channel}, # 6 - use channel? 0 = no, 1 = Intervall, 2 = Channel group, 3 = FTA only
+ $timer->{channels}, # 7 - if 'use channel' = 1 then channel id[|channel id] in vdr format,
+ # one entry or min/max entry separated with |, if 'use channel' = 2
+ # then the channel group name
+ $timer->{matchcase}, # 8 - match case? 0/1
+ $timer->{mode}, # 9 - search mode:
+ # 0 - the whole term must appear as substring
+ # 1 - all single terms (delimiters are blank,',', ';', '|' or '~')
+ # must exist as substrings.
+ # 2 - at least one term (delimiters are blank, ',', ';', '|' or '~')
+ # must exist as substring.
+ # 3 - matches exactly
+ # 4 - regular expression
+ $timer->{use_title}, #10 - use title? 0/1
+ $timer->{use_subtitle}, #11 - use subtitle? 0/1
+ $timer->{use_descr}, #12 - use description? 0/1
+ $timer->{use_duration}, #13 - use duration? 0/1
+ $timer->{min_duration}, #14 - min duration in minutes
+ $timer->{max_duration}, #15 - max duration in minutes
+ $timer->{has_action}, #16 - use as search timer? 0/1
+ $timer->{use_days}, #17 - use day of week? 0/1
+ $timer->{which_days}, #18 - day of week (0 = sunday, 1 = monday...)
+ $timer->{is_series}, #19 - use series recording? 0/1
+ $timer->{directory}, #20 - directory for recording
+ $timer->{prio}, #21 - priority of recording
+ $timer->{lft}, #22 - lifetime of recording
+ $timer->{bstart}, #23 - time margin for start in minutes
+ $timer->{bstop}, #24 - time margin for stop in minutes
+ $timer->{use_vps}, #25 - use VPS? 0/1
+ $timer->{action}, #26 - action:
+ # 0 = create a timer
+ # 1 = announce only via OSD (no timer)
+ # 2 = switch only (no timer)
+ $timer->{use_extepg}, #27 - use extended EPG info? 0/1 #TODO
+ $timer->{extepg_infos}, #28 - extended EPG info values. This entry has the following format #TODO
+ # (delimiter is '|' for each category, '#' separates id and value):
+ # 1 - the id of the extended EPG info category as specified in
+ # epgsearchcats.conf
+ # 2 - the value of the extended EPG info category
+ # (a ':' will be tranlated to "!^colon^!", e.g. in "16:9")
+ $timer->{avoid_repeats}, #29 - avoid repeats? 0/1
+ $timer->{allowed_repeats}, #30 - allowed repeats
+ $timer->{comp_title}, #31 - compare title when testing for a repeat? 0/1
+ $timer->{comp_subtitle}, #32 - compare subtitle when testing for a repeat? 0/1
+ $timer->{comp_descr}, #33 - compare description when testing for a repeat? 0/1
+ $timer->{comp_extepg_info}, #34 - compare extended EPG info when testing for a repeat? #TODO
+ # This entry is a bit field of the category ids.
+ $timer->{repeats_in_days}, #35 - accepts repeats only within x days
+ $timer->{delete_after}, #36 - delete a recording automatically after x days
+ $timer->{keep_recordings}, #37 - but keep this number of recordings anyway
+ $timer->{switch_before}, #38 - minutes before switch (if action = 2)
+ $timer->{pause}, #39 - pause if x recordings already exist
+ $timer->{use_blacklists}, #40 - blacklist usage mode (0 none, 1 selection, 2 all)
+ $timer->{sel_blacklists}, #41 - selected blacklist IDs separated with '|'
+ $timer->{fuzzy_tolerance}, #42 - fuzzy tolerance value for fuzzy searching
+ $timer->{use_for_fav}, #43 - use this search in favorites menu (0 no, 1 yes)
+ $timer->{unused}) = split(/:/, $_);
+
+ #format selected fields
+ $timer->{time_start} =~ s/(\d\d)(\d\d)/\1:\2/ if($timer->{time_start});
+ $timer->{time_stop} =~ s/(\d\d)(\d\d)/\1:\2/ if($timer->{time_stop});
+ $timer->{min_duration} =~ s/(\d\d)(\d\d)/\1:\2/ if($timer->{min_duration});
+ $timer->{max_duration} =~ s/(\d\d)(\d\d)/\1:\2/ if($timer->{max_duration});
+
+ if ($timer->{has_action}) {
+ if ($timer->{action} == 0) {
+ $timer->{action_text} = gettext("record");
+ } elsif ($timer->{action} == 1) {
+ $timer->{action_text} = gettext("announce only");
+ } elsif ($timer->{action} == 2) {
+ $timer->{action_text} = gettext("switch only");
+ } else {
+ $timer->{action_text} = gettext("unknown");
+ }
+ } else {
+ $timer->{action_text} = gettext("none");
+ }
+
+ if ($timer->{channels} && $timer->{use_channel} == 1) {
+ ($timer->{channel_from}, $timer->{channel_to}) = split(/\|/, $timer->{channels}, 2);
+ $timer->{channel_to} = $timer->{channel_from} unless ($timer->{channel_to});
+ $timer->{channel_from_name} = get_name_from_uniqid($timer->{channel_from});
+ $timer->{channel_to_name} = get_name_from_uniqid($timer->{channel_to});
+ #TODO: links to channels
+ }
+
+ if ($timer->{use_days}) {
+ if ($timer->{which_days} >= 0) {
+ $timer->{sunday} = 1 if ($timer->{which_days} == 0);
+ $timer->{monday} = 1 if ($timer->{which_days} == 1);
+ $timer->{tuesday} = 1 if ($timer->{which_days} == 2);
+ $timer->{wednesday} = 1 if ($timer->{which_days} == 3);
+ $timer->{thursday} = 1 if ($timer->{which_days} == 4);
+ $timer->{friday} = 1 if ($timer->{which_days} == 5);
+ $timer->{saturday} = 1 if ($timer->{which_days} == 6);
+ } else {
+ my $which_days = -$timer->{which_days};
+ $timer->{sunday} = 1 if ($which_days & 1);
+ $timer->{monday} = 1 if ($which_days & 2);
+ $timer->{tuesday} = 1 if ($which_days & 4);
+ $timer->{wednesday} = 1 if ($which_days & 8);
+ $timer->{thursday} = 1 if ($which_days & 16);
+ $timer->{friday} = 1 if ($which_days & 32);
+ $timer->{saturday} = 1 if ($which_days & 64);
+ }
+ }
+
+ if ($timer->{pattern}) {
+ $timer->{pattern} =~ s/\|/:/g;
+ $timer->{pattern} =~ s/\!\^pipe\^\!/\|/g;
+ }
+
+ if ($timer->{directory}) {
+ $timer->{directory} =~ s/\|/:/g;
+ $timer->{directory} =~ s/\!\^pipe\^\!/\|/g;
+ }
+ return $timer;
+}
+
+sub validTime {
+ my $t = shift;
+ return unless ($t);
+ my ($h, $m) = split(/:/, $t);
+ $h = "0" . $h if (length($h) == 1);
+ if (length($h) > 2) { #TODO: $m defined?
+ $m = substr($h, -2);
+ $h = substr($h, 0, -2);
+ }
+ return sprintf("%02d%02d", $h, $m);
+}
+
+sub epgsearch_Param2Line {
+ my $weekdays_bits = 0;
+ my $weekdays = 0;
+ my $had_weekday = 0;
+
+ if ($q->param("use_days")) {
+ if ($q->param("sunday")) {
+ $had_weekday++;
+ $weekdays_bits |= 1;
+ $weekdays = 0;
+ }
+ if ($q->param("monday")) {
+ $had_weekday++;
+ $weekdays_bits |= 2;
+ $weekdays = 1;
+ }
+ if ($q->param("tuesday")) {
+ $had_weekday++;
+ $weekdays_bits |= 4;
+ $weekdays = 2;
+ }
+ if ($q->param("wednesday")) {
+ $had_weekday++;
+ $weekdays_bits |= 8;
+ $weekdays = 3;
+ }
+ if ($q->param("thursday")) {
+ $had_weekday++;
+ $weekdays_bits |= 16;
+ $weekdays = 4;
+ }
+ if ($q->param("friday")) {
+ $had_weekday++;
+ $weekdays_bits |= 32;
+ $weekdays = 5;
+ }
+ if ($q->param("saturday")) {
+ $had_weekday++;
+ $weekdays_bits |= 64;
+ $weekdays = 6;
+ }
+ $weekdays_bits = - $weekdays_bits;
+ }
+
+ my $time_start = validTime($q->param("time_start"));
+ my $time_stop = validTime($q->param("time_stop"));
+ my $min_duration = validTime($q->param("min_duration"));
+ my $max_duration = validTime($q->param("max_duration"));
+
+ my $use_channel = $q->param("use_channel");
+ my $channels;
+ if ($use_channel == 1) {
+ $channels = $q->param("channel_from") . "|" . $q->param("channel_to");
+ } elsif ($use_channel == 2) {
+ $channels = $q->param("channel_group");
+ }
+
+ my $sel_blacklists;
+ for ($q->param("sel_blacklists")) {
+ $sel_blacklists .= "|" if (defined($sel_blacklists));
+ $sel_blacklists .= $_;
+ }
+
+ my $pattern = $q->param("pattern");
+ if ($pattern) {
+ $pattern =~ s/\|/\!\^pipe\^\!/g;
+ $pattern =~ s/:/\|/g;
+ }
+
+ my $directory = $q->param("directory");
+ if ($directory) {
+ $directory =~ s/\|/\!\^pipe\^\!/g;
+ $directory =~ s/:/\|/g;
+ }
+
+ my $extepg_info;
+ for ($q->param) {
+ if (/extepg_([0-9]+)_data_text/) {
+ my $e_id = $1;
+ $extepg_info .= "|" if ($extepg_info);
+ my $data = join(", ", $q->param("extepg_" . $e_id . "_data"));
+ $data =~ s/:/\!\^colon\^\!/g;
+ $data =~ s/\|/\!\^pipe\^\!/g;
+ $extepg_info .= sprintf("%s#%s", $e_id, $data);
+ my $data_text = $q->param("extepg_" . $e_id . "_data_text");
+ if ($data_text) {
+ $extepg_info .= ", " if ($data);
+ $data_text =~ s/:/\!\^colon\^\!/g;
+ $data_text =~ s/\|/\!\^pipe\^\!/g;
+ $extepg_info .= $data_text;
+ }
+ }
+ }
+
+ my $cmd = $pattern . ":"
+ . ($q->param("use_time") ? "1" : "0") . ":"
+ . $time_start . ":"
+ . $time_stop . ":"
+ . $use_channel . ":"
+ . $channels . ":"
+ . ($q->param("matchcase") ? "1" : "0") . ":"
+ . $q->param("mode") . ":"
+ . ($q->param("use_title") ? "1" : "0") . ":"
+ . ($q->param("use_subtitle") ? "1" : "0") . ":"
+ . ($q->param("use_descr") ? "1" : "0") . ":"
+ . ($q->param("use_duration") ? "1" : "0") . ":"
+ . $min_duration . ":"
+ . $max_duration . ":"
+ . ($q->param("has_action") ? "1" : "0") . ":"
+ . ($q->param("use_days") ? "1" : "0") . ":"
+ . ($had_weekday > 1 ? $weekdays_bits : $weekdays) . ":"
+ . ($q->param("is_series") ? "1" : "0") . ":"
+ . $directory . ":"
+ . $q->param("prio") . ":"
+ . $q->param("lft") . ":"
+ . $q->param("bstart") . ":"
+ . $q->param("bstop") . ":"
+ . ($q->param("use_vps") ? "1" : "0") . ":"
+ . $q->param("action") . ":"
+ . ($q->param("use_extepg") ? "1" : "0") . ":"
+ . $extepg_info . ":"
+ . ($q->param("avoid_repeats") ? "1" : "0") . ":"
+ . $q->param("allowed_repeats") . ":"
+ . ($q->param("comp_title") ? "1" : "0") . ":"
+ . ($q->param("comp_subtitle") ? "1" : "0") . ":"
+ . ($q->param("comp_descr") ? "1" : "0") . ":"
+ . ($q->param("comp_extepg_info") ? "1" : "0") . ":" #TODO
+ . $q->param("repeats_in_days") . ":"
+ . $q->param("delete_after") . ":"
+ . $q->param("keep_recordings") . ":"
+ . $q->param("switch_before") . ":"
+ . $q->param("pause") . ":"
+ . $q->param("use_blacklists") . ":"
+ . $sel_blacklists . ":"
+ . $q->param("fuzzy_tolerance") . ":"
+ . ($q->param("use_for_fav") ? "1" : "0");
+
+ $cmd .= ":" . $q->param("unused") if ($q->param("unused"));
+#print("CMD: $cmd\n");
+ return $cmd;
+}
+
+sub epgsearch_save {
+ my $cmd = (defined $q->param("id") ? "EDIS " . $q->param("id")
+ : "NEWS 0")
+ . ":" . epgsearch_Param2Line();
+ SendCMD("plug epgsearch " . $cmd);
+ return (headerForward("$MyURL?aktion=epgsearch_list"));
+}
+
+sub epgsearch_delete {
+ my $id = $q->param("id");
+ if (defined $id) {
+ SendCMD("plug epgsearch dels $id");
+ } else {
+ for ($q->param) {
+ SendCMD("plug epgsearch dels $1") if (/xxxx_(.*)/);
+ }
+ }
+ return (headerForward("$MyURL?aktion=epgsearch_list"));
+}
+
+sub epgsearch_toggle {
+ my $id = $q->param("id");
+ if (defined $id) {
+ SendCMD(sprintf("plug epgsearch mods %s %s", $id, $q->param("active") ? "off" : "on"));
+ }
+ return (headerForward("$MyURL?aktion=epgsearch_list"));
+}
+
+sub epgsearch_getSettings {
+ for (SendCMD("plug epgsearch setp")) {
+ chomp;
+ next if (length($_) == 0);
+ $EPGSEARCH_SETTINGS{$1} = $2 if (/^([^:]*): (.*)/);
+ }
+}
+
+#############################################################################
# regulary timers
#############################################################################
sub my_mktime {
@@ -2283,7 +2933,23 @@ sub ValidConfig {
$CONFIG{REC_MIMETYPE} = "video/x-mpegurl" if (!$CONFIG{REC_MIMETYPE});
$CONFIG{REC_EXT} = "m3u" if (!$CONFIG{REC_EXT});
- $FEATURES{AUTOTIMER} = $CONFIG{AT_FUNC};
+ if ($CONFIG{AT_OFFER} == 2) {
+ # User wants to use AutoTimer
+ $FEATURES{AUTOTIMER} = 1;
+ } elsif ($CONFIG{AT_OFFER} == 1) {
+ # User doesn't want AutoTimer
+ $FEATURES{AUTOTIMER} = 0;
+ } else {
+ # No decition made yet
+ if (-s $AT_FILENAME && $CONFIG{AT_FUNC}) {
+ $FEATURES{AUTOTIMER} = 1;
+ $CONFIG{AT_OFFER} = 2;
+ } else {
+ $CONFIG{AT_FUNC} = 0;
+ $FEATURES{AUTOTIMER} = 0;
+ $CONFIG{AT_OFFER} = 1;
+ }
+ }
}
sub ReadConfig {
@@ -2439,6 +3105,9 @@ sub prog_detail {
my ($channel_name, $title, $subtitle, $vps, $video, $audio, $start, $stop, $text, @epgimages);
+ if ($q->param("channel_id")) {
+ $vdr_id = get_vdrid_from_channelid($q->param("channel_id"));
+ }
if ($vdr_id && $epg_id) {
for (@{ $EPG{$vdr_id} }) {
@@ -2519,6 +3188,10 @@ sub prog_list {
my ($vdr_id, $dummy);
($vdr_id, $dummy) = split("#", $q->param("vdr_id"), 2) if ($q->param("vdr_id"));
+ if ($q->param("channel_id")) {
+ $vdr_id = get_vdrid_from_channelid($q->param("channel_id"));
+ }
+
my $myself = Encode_Referer($MyURL . "?" . $Query);
#
@@ -3363,6 +4036,7 @@ sub live_stream {
} else {
$ip = $CONFIG{VDR_HOST};
}
+ chomp($ip);
$data = "http://$ip:$CONFIG{ST_STREAMDEV_PORT}/$channel";
return (header("200", $CONFIG{TV_MIMETYPE}, $data));
}
@@ -4818,15 +5492,8 @@ sub show_help {
# information
#############################################################################
sub about {
- my $missing_features = "RENR" unless ($FEATURES{REC_RENAME});
- unless ($FEATURES{STREAMDEV}) {
- $missing_features .= ", " if ($missing_features);
- $missing_features .= "streamdev-client plugin";
- }
-
my $vars = { vdrversion => $VDRVERSION_HR,
- myversion => $VERSION,
- missing_features => $missing_features
+ myversion => $VERSION
};
return showTemplate("about.html", $vars);
}
@@ -5042,6 +5709,10 @@ sub getSupportedFeatures {
if ($VDRVERSION >= 10331) {
command($this, "plug");
while ($_ = readoneline($this)) {
+ if ($_ =~ /^epgsearch v(\d+)\.(\d+)\.(\d+)/) {
+ $FEATURES{EPGSEARCH} = 1;
+ $EPGSEARCH_VERSION = ($1 * 10000 + $2 * 100 + $3);
+ }
if ($_ =~ /^streamdev-server/) {
$FEATURES{STREAMDEV} = 1;
}