diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2007-12-28 10:15:45 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2007-12-28 10:15:45 +0000 |
| commit | 8d11e5ef702eb4e7a0448eb43d39f28c9670954e (patch) | |
| tree | 2c1ba3792fd5fac7e542be571d30fa695ed59435 | |
| parent | e4597ce3619f3d7772436d02d1674c28f4c03a16 (diff) | |
| download | xxv-8d11e5ef702eb4e7a0448eb43d39f28c9670954e.tar.gz xxv-8d11e5ef702eb4e7a0448eb43d39f28c9670954e.tar.bz2 | |
* New modul: MOVETIMER - This modul move timers between channels.
* rlist.tmpl : Fix typo
| -rw-r--r-- | contrib/export-data.sql | 1 | ||||
| -rw-r--r-- | contrib/import-data.sql | 2 | ||||
| -rwxr-xr-x | contrib/update-xxv | 2 | ||||
| -rw-r--r-- | contrib/upgrade-xxv-db.sql | 17 | ||||
| -rw-r--r-- | lib/XXV/MODULES/MOVETIMER.pm | 599 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 6 | ||||
| -rw-r--r-- | locale/Makefile | 1 | ||||
| -rw-r--r-- | locale/de.po | 248 | ||||
| -rw-r--r-- | locale/de/LC_MESSAGES/xxv.mo | bin | 68409 -> 71143 bytes |
9 files changed, 817 insertions, 59 deletions
diff --git a/contrib/export-data.sql b/contrib/export-data.sql index 3154497..6cd0afa 100644 --- a/contrib/export-data.sql +++ b/contrib/export-data.sql @@ -7,5 +7,6 @@ select * INTO OUTFILE '/tmp/chronicle.sav' from CHRONICLE; select * INTO OUTFILE '/tmp/medialib_actors.sav' from MEDIALIB_ACTORS; select * INTO OUTFILE '/tmp/medialib_videodata.sav' from MEDIALIB_VIDEODATA; select * INTO OUTFILE '/tmp/medialib_videogenre.sav' from MEDIALIB_VIDEOGENRE; +select * INTO OUTFILE '/tmp/movetimer.sav' from MOVETIMER; select * INTO OUTFILE '/tmp/user.sav' from USER; diff --git a/contrib/import-data.sql b/contrib/import-data.sql index 003ff05..e98ca95 100644 --- a/contrib/import-data.sql +++ b/contrib/import-data.sql @@ -7,6 +7,7 @@ DELETE from CHRONICLE; DELETE from MEDIALIB_ACTORS; DELETE from MEDIALIB_VIDEODATA; DELETE from MEDIALIB_VIDEOGENRE; +DELETE from MOVETIMER; DELETE from USER; load data infile '/tmp/autotimer.sav' into table AUTOTIMER; @@ -14,5 +15,6 @@ load data infile '/tmp/chronicle.sav' into table CHRONICLE; load data infile '/tmp/medialib_actors.sav' into table MEDIALIB_ACTORS; load data infile '/tmp/medialib_videodata.sav' into table MEDIALIB_VIDEODATA; load data infile '/tmp/medialib_videogenre.sav' into table MEDIALIB_VIDEOGENRE; +load data infile '/tmp/movetimer.sav' into table MOVETIMER; load data infile '/tmp/user.sav' into table USER; diff --git a/contrib/update-xxv b/contrib/update-xxv index 9fdd01c..59fd18d 100755 --- a/contrib/update-xxv +++ b/contrib/update-xxv @@ -22,7 +22,7 @@ actualVersion=26 # Specify tables to export before and import after update # -tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE USER' +tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE MOVETIMER USER' showTitle() { diff --git a/contrib/upgrade-xxv-db.sql b/contrib/upgrade-xxv-db.sql index bd39e29..785a5a5 100644 --- a/contrib/upgrade-xxv-db.sql +++ b/contrib/upgrade-xxv-db.sql @@ -127,6 +127,21 @@ CREATE TABLE `MEDIALIB_VIDEOGENRE` ( ); -- +-- Table structure for table `MOVETIMER` +-- + +DROP TABLE IF EXISTS `MOVETIMER`; +CREATE TABLE `MOVETIMER` ( + `id` int(10) unsigned NOT NULL auto_increment, + `source` varchar(64) NOT NULL, + `destination` varchar(64) NOT NULL, + `move` enum('y','n','collision') default 'collision', + `original` enum('move','keep','copy') default 'move', + PRIMARY KEY (`id`), + UNIQUE KEY `source` (`source`) +); + +-- -- Table structure for table `USER` -- @@ -150,4 +165,4 @@ CREATE TABLE `USER` ( /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2007-11-24 14:27:24 +-- Dump completed on 2007-12-28 10:05:06 diff --git a/lib/XXV/MODULES/MOVETIMER.pm b/lib/XXV/MODULES/MOVETIMER.pm new file mode 100644 index 0000000..5f9ded0 --- /dev/null +++ b/lib/XXV/MODULES/MOVETIMER.pm @@ -0,0 +1,599 @@ +package XXV::MODULES::MOVETIMER; + +use strict; +use Tools; +use Locale::gettext; + +# This module method must exist for XXV +# ------------------ +sub module { +# ------------------ + my $self = shift || return error('No object defined!'); + my $args = { + Name => 'MOVETIMER', + Prereq => { + # 'Perl::Module' => 'Description', + }, + Description => gettext('This modul move timers between channels.'), + Version => (split(/ /, '$Revision$'))[1], + Date => (split(/ /, '$Date$'))[1], + Author => 'Andreas Brachold', + LastAuthor => (split(/ /, '$Author$'))[1], + Preferences => { + active => { + description => gettext('Activate this service'), + default => 'n', + type => 'confirm', + required => gettext('This is required!'), + }, + }, + Commands => { + movetimer => { + description => gettext("Manual move timer between channels"), + short => 'mt', + callback => sub{ $self->movetimer(@_) }, + Level => 'user', + DenyClass => 'tedit', + }, + movetimerlist => { + description => gettext("List rules to move timer between channels"), + short => 'mtl', + callback => sub{ $self->movetimerlist(@_) }, + Level => 'user', + DenyClass => 'tedit', + }, + movetimercreate => { + description => gettext("Create rule to move timer between channels"), + short => 'mtc', + callback => sub{ $self->movetimercreate(@_) }, + Level => 'user', + DenyClass => 'tedit', + }, + movetimerdelete => { + description => gettext("Delete rule to move timer between channels"), + short => 'mtd', + callback => sub{ $self->movetimerdelete(@_) }, + Level => 'user', + DenyClass => 'tedit', + }, + movetimeredit => { + description => gettext("Edit rule to move timer between channels"), + short => 'mte', + callback => sub{ $self->movetimeredit(@_) }, + Level => 'user', + DenyClass => 'tedit', + }, + }, + }; + return $args; +} + +# ------------------ +sub new { +# ------------------ + my($class, %attr) = @_; + my $self = {}; + bless($self, $class); + + # paths + $self->{paths} = delete $attr{'-paths'}; + + # who am I + $self->{MOD} = $self->module; + + # all configvalues to $self without parents (important for ConfigModule) + map { + $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_}; + $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_}); + } keys %{$self->{MOD}->{Preferences}}; + + # Try to use the Requirments + map { + eval "use $_"; + return panic("\nCouldn't load modul: $_\nPlease install this modul on your system:\nperl -MCPAN -e 'install $_'") if($@); + } keys %{$self->{MOD}->{Prereq}}; + + # read the DB Handle + $self->{dbh} = delete $attr{'-dbh'}; + + # run as background process + #$self->{background} = delete $attr{'-background'}; + + # The Initprocess + my $erg = $self->_init or return error('Problem to initialize modul!'); + + return $self; +} + +# ------------------ +sub _init { +# ------------------ + my $self = shift || return error('No object defined!'); + + unless($self->{dbh}) { + panic("Session to database is'nt connected"); + return 0; + } + + my $version = main::getDBVersion(); + if(!tableUpdated($self->{dbh},'MOVETIMER',$version,0)) { + return 0; + } + + # Look for table or create this table + $self->{dbh}->do(qq| + CREATE TABLE IF NOT EXISTS MOVETIMER ( + id int unsigned auto_increment NOT NULL, + source varchar(64) NOT NULL, + destination varchar(64) NOT NULL, + move enum('y', 'n', 'collision') default 'collision', + original enum('move', 'keep', 'copy') default 'move', + PRIMARY KEY (id), + UNIQUE KEY (source) + ) COMMENT = '$version' + |); + + main::after(sub{ + + $self->{svdrp} = main::getModule('SVDRP'); + unless($self->{svdrp}) { + panic ("Couldn't get modul SVDRP"); + return 0; + } + + my $m = main::getModule('TIMERS'); + $m->updated(sub{ + return 0 if($self->{active} ne 'y'); + + lg 'Start timer callback to move timer!'; + return $self->movetimer(); + + }); + return 1; + }, "MOVETIMER: Install callback at move timer ...", 95); + + return 1; +} + +# ------------------ +sub movetimer { +# ------------------ + my $self = shift || return error('No object defined!'); + my $watcher = shift; + my $console = shift; + my $id = shift; + + my $modT = main::getModule('TIMERS') || return; + + my $sth = $self->{dbh}->prepare( +q| + select + t.Id as Id, + IF(t.Status & 1,'y','n') as Activ, + IF(t.Status & 4,'y','n') as VPS, + t.Status as Status, + t.ChannelID as ChannelID, + t.File as File, + t.aux as aux, + t.Day as Day, + t.Start as Start, + t.Stop as Stop, + t.Priority as Priority, + t.Lifetime as Lifetime, + t.Collision as Collision, + IF(t.Status & 1 and NOW() between t.NextStartTime and t.NextStopTime,1,0) as Running + from TIMERS as t,MOVETIMER as m + where + m.source = t.channelid + and m.move != 'm' + and t.Status & 1 +|); + + if(!$sth->execute()) { + return error sprintf("Couldn't execute query: %s.",$sth->errstr); + } + my $timer = $sth->fetchall_hashref('Id'); + return unless($timer); + + $sth = $self->{dbh}->prepare("select * from MOVETIMER where move != 'n'"); + if(!$sth->execute()) { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + $console->err(sprintf(gettext("Couldn't query rules to move timer from database!"))) + if($console); + } + my $rules = $sth->fetchall_hashref('id'); + return unless($rules); + + my $bChange = 0; + foreach my $tid (keys %$timer) { + + my $data = $timer->{$tid}; + + foreach my $id (sort keys %$rules) { + + my $rule = $rules->{$id}; + + if($data->{ChannelID} eq $rule->{source}) { + + # Move timer if collision present + if($rule->{move} eq 'collision') { + # None Collision present + last unless($data->{Collision}); + # Search maximum priority of collision + my $maxPrio = 1; + foreach my $tc (split(',', $data->{Collision})) { + my $col = (split(':', $tc))[1]; + $maxPrio = $col + if($col > $maxPrio); + } + # dont solve collision until lesser own Priority + last if($maxPrio < $data->{Priority}); + } + + debug sprintf("Move timer %d (%s) at %s : from %s to %s", + $data->{Id}, + $data->{File}, + $data->{Day}, + $rule->{source}, + $rule->{destination}); + + if($rule->{original} eq 'keep' ) { + + # Keep original timer but disable him + $data->{Activ} = 'n'; + $self->modifyTimer($data,$tid); + + # Create new timer + $data->{Activ} = 'y'; + $data->{ChannelID} = $rule->{destination}; + $self->modifyTimer($data,0); + + } elsif($rule->{original} eq 'copy' ) { + + # Copy to new timer + $data->{Activ} = 'y'; + $data->{ChannelID} = $rule->{destination}; + $self->modifyTimer($data,0); + + } else { + + # Edit timer direct + $data->{ChannelID} = $rule->{destination}; + $self->modifyTimer($data,$tid); + + } + + last; + } + } + } + if($self->{svdrp}->queue_cmds('COUNT')) { + my $erg = $self->{svdrp}->queue_cmds("CALL"); # deqeue commands + $console->msg($erg, $self->{svdrp}->err) + if(ref $console); + + $modT->readData($watcher, $console) + } else { + $console->msg(gettext("There none timer to move.")) + if(ref $console); + } + return 1; +} + + +# ------------------ +sub modifyTimer { +# ------------------ + my $self = shift || return error('No object defined!'); + my $data = shift || return error('No data defined!'); + my $id = shift || 0; + + my $status = ($data->{Activ} eq 'y' ? 1 : 0); + $status |= ($data->{VPS} eq 'y' ? 4 : 0); + + $data->{File} =~ s/:/|/g; + $data->{File} =~ s/(\r|\n)//sig; + + $self->{svdrp}->queue_cmds( + sprintf("%s %s:%s:%s:%s:%s:%s:%s:%s:%s", + $id ? "modt $id" : "newt", + $status, + $data->{ChannelID}, + $data->{Day}, + $data->{Start}, + $data->{Stop}, + int($data->{Priority}), + int($data->{Lifetime}), + $data->{File}, + ($data->{aux} || '') + ) + ); +} + +# ------------------ +# Name: movetimercreate +# Descr: create rule to move timer. +# Usage: $self->movetimercreate($watcher, $console, [$userdata]); +# ------------------ +sub movetimercreate { + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $id = shift || 0; + my $data = shift || 0; + + $self->movetimeredit($watcher, $console, $id, $data); +} + +# ------------------ +# Name: movetimeredit +# Descr: edit rule to move timer. +# Usage: $self->movetimeredit($watcher, $console, [$id], [$userdata]); +# ------------------ +sub movetimeredit { + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $id = shift || 0; + my $data = shift || 0; + + my $modC = main::getModule('CHANNELS'); + + my $rule; + if($id and not ref $data) { + my $sth = $self->{dbh}->prepare("select * from MOVETIMER where id = ?"); + $sth->execute($id) + or return $console->err(sprintf(gettext("Rule to move timer with ID '%s' does not exist in the database!"),$id)); + $rule = $sth->fetchrow_hashref(); + + } elsif (ref $data eq 'HASH') { + $rule = $data; + } + + my $con = $console->typ eq "CONSOLE"; + my $questions = [ + 'id' => { + typ => 'hidden', + def => $rule->{id} || 0, + }, + 'source' => { + typ => 'list', + def => $con ? $modC->ChannelToPos($rule->{source}) : $rule->{source}, + choices => $con ? $modC->ChannelArray('Name') : $modC->ChannelIDArray('Name'), + msg => gettext('Which channel should used as source?'), + req => gettext("This is required!"), + check => sub{ + my $value = shift || return; + + if(my $name = $modC->ChannelToName($value)) { + $data->{source} = $value; + return $value; + } elsif(my $ch = $modC->PosToChannel($value) || $modC->NameToChannel($value) ) { + $data->{source} = $value; + return $ch; + } elsif( ! $modC->NameToChannel($value)) { + return undef, sprintf(gettext("This channel '%s' does not exist!"),$value); + } else { + return undef, gettext("This is required!"); + } + }, + }, + 'destination' => { + typ => 'list', + def => $con ? $modC->ChannelToPos($rule->{destination}) : $rule->{destination}, + choices => $con ? $modC->ChannelArray('Name') : $modC->ChannelIDArray('Name'), + msg => gettext('Which channel should used as destination?'), + req => gettext("This is required!"), + check => sub{ + my $value = shift || return; + + if(my $name = $modC->ChannelToName($value)) { + $data->{destination} = $value; + return $value; + } elsif(my $ch = $modC->PosToChannel($value) || $modC->NameToChannel($value) ) { + $data->{destination} = $value; + return $ch; + } elsif( ! $modC->NameToChannel($value)) { + return undef, sprintf(gettext("This channel '%s' does not exist!"),$value); + } else { + return undef, gettext("This is required!"); + } + }, + }, + 'move' => { + msg => gettext('When should use this rule'), + def => $rule->{move} || 'collision', + typ => 'list', + choices => sub { + my $erg = $self->_move_rules(); + map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; + return @$erg; + }, + }, + 'original' => { + msg => gettext('How should timer handled, if changed'), + def => $rule->{original} || 'move', + typ => 'list', + choices => sub { + my $erg = $self->_original_timer_rules(); + map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; + return @$erg; + }, + }, + ]; + + # Ask Questions + $data = $console->question(($id ? gettext('Edit rule to move timer') + : gettext('Create a new rule to move timer')), $questions, $data); + + if(ref $data eq 'HASH') { + $self->_insert($console, $data); + + $data->{id} = $self->{dbh}->selectrow_arrayref('SELECT max(id)+1 FROM MOVETIMER')->[0] + if(not $data->{id}); + + $console->message(gettext('Rule to move timer saved!')); + debug sprintf('%s rule to move timer is saved%s', + ($id ? 'New' : 'Changed'), + ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" ) + ); + + $self->movetimer($watcher, $console, $data->{id}); + + $console->redirect({url => '?cmd=movetimerlist', wait => 1}) + if($console->typ eq 'HTML'); + } + return 1; +} + +# ------------------ +sub _insert { +# ------------------ + my $self = shift || return error('No object defined!'); + my $console = shift || return error('No console defined!'); + my $data = shift || return; + + my $sth; + if(ref $data eq 'HASH') { + my ($names, $vals, $kenn); + map { + push(@$names, $_); + push(@$vals, $data->{$_}), + push(@$kenn, '?'), + } sort keys %$data; + + my $sql = sprintf("REPLACE INTO MOVETIMER (%s) VALUES (%s)", + join(', ', @$names), + join(', ', @$kenn), + ); + $sth = $self->{dbh}->prepare( $sql ); + if(!$sth->execute(@$vals)) { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + $console->err(sprintf(gettext("Couldn't insert rule move timer in database!"))); + return 0; + } + } else { + $sth = $self->{dbh}->prepare('REPLACE INTO MOVETIMER VALUES (?,?,?,?,?)'); + if(!$sth->execute(@$data)) { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + $console->err(sprintf(gettext("Couldn't insert rule move timer in database!"))); + return 0; + } + } + return 1; +} + +# ------------------ +# Name: movetimerdelete +# Descr: Routine to delete move timer rule. +# Usage: $self->movetimerdelete($watcher, $console, $id); +# ------------------ +sub movetimerdelete { + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use movetimerdelete 'id'")); + + my @rules = reverse sort{ $a <=> $b } split(/[^0-9]/, $id); + + my $sql = sprintf('DELETE FROM MOVETIMER where id in (%s)', join(',' => ('?') x @rules)); + my $sth = $self->{dbh}->prepare($sql); + if(!$sth->execute(@rules)) { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + $console->err(sprintf(gettext("Rule to move timer with ID '%s' does not exist in the database!"),$id)); + return 0; + } + + $console->message(sprintf gettext("Rule to move timer %s is deleted."), join(',', @rules)); + debug sprintf('Rule to move timer with id "%s" is deleted%s', + join(',', @rules), + ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" ) + ); + $console->redirect({url => '?cmd=movetimerlist', wait => 1}) + if($console->typ eq 'HTML'); +} + +# ------------------ +# Name: movetimerlist +# Descr: List Rules to move timer in a table display. +# Usage: $self->movetimerlist($watcher, $console); +# ------------------ +sub movetimerlist { + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + + my %f = ( + 'id' => gettext('Service'), + 'source' => gettext('Source'), + 'destination' => gettext('Destination'), + 'move' => gettext('Move timer'), + 'original' => gettext('Change original timer'), + ); + + my $sql = qq| + select + id as \'$f{'id'}\', + source as \'$f{'source'}\', + destination as \'$f{'destination'}\', + move as \'$f{'move'}\', + original as \'$f{'original'}\' + from + MOVETIMER + order by + id + |; + + my $fields = fields($self->{dbh}, $sql); + my $erg = $self->{dbh}->selectall_arrayref($sql); + + my %m; + my %d; + my $mr = $self->_move_rules(); + foreach my $mrr (@{$mr}) { + $m{$mrr->[0]} = $mrr->[1]; + } + + my $dr = $self->_original_timer_rules(); + foreach my $drr (@{$dr}) { + $d{$drr->[0]} = $drr->[1]; + } + + my $modC = main::getModule('CHANNELS'); + map { + $_->[1] = $modC->ChannelToName($_->[1]); + $_->[2] = $modC->ChannelToName($_->[2]); + $_->[3] = $m{$_->[3]}; + $_->[4] = $d{$_->[4]}; + } @$erg; + + unshift(@$erg, $fields); + + $console->table($erg); +} + +# ------------------ +sub _move_rules { +# ------------------ + my $self = shift || return error('No object defined!'); + + return [ + [ 'y', gettext('Allways') ], + [ 'n', gettext('Newer') ], + [ 'collision', gettext('If collision detected') ], + ]; +} + +# ------------------ +sub _original_timer_rules { +# ------------------ + my $self = shift || return error('No object defined!'); + + return [ + [ 'move', gettext('Move timer') ], + [ 'keep', gettext('Keep inactiv original timer') ], + [ 'copy', gettext('Copy original timer') ], + ]; +} + +1; diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index 5efb211..b66fbe3 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -201,14 +201,14 @@ sub module { my $title = sprintf(gettext("Recording deleted: %s"), $epg->{title}); - my $description = ""; + my $description = ''; if($epg->{subtitle}) { $description .= sprintf(gettext("Subtitle: %s"), $epg->{subtitle}); - $description .= '\r\n'; + $description .= "\r\n"; } if($epg->{description}) { $description .= sprintf(gettext("Description: %s"), $epg->{description}); - $description .= '\r\n'; + # $description .= "\r\n"; } main::getModule('REPORT')->news($title, $description, "display", $record->{eventid}, $event->{Level}); diff --git a/locale/Makefile b/locale/Makefile index f9ab799..49468a9 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -25,6 +25,7 @@ MODULES = ../lib/XXV/MODULES/AUTOTIMER.pm \ ../lib/XXV/MODULES/INTERFACE.pm \ ../lib/XXV/MODULES/LOGREAD.pm \ ../lib/XXV/MODULES/MEDIALIB.pm \ + ../lib/XXV/MODULES/MOVETIMER.pm \ ../lib/XXV/MODULES/MUSIC.pm \ ../lib/XXV/MODULES/RECORDS.pm \ ../lib/XXV/MODULES/REMOTE.pm \ diff --git a/locale/de.po b/locale/de.po index 87ccc9e..ec08141 100644 --- a/locale/de.po +++ b/locale/de.po @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #-------------------- -#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:687 ../lib/XXV/MODULES/CHANNELS.pm:713 ../lib/XXV/MODULES/CHANNELS.pm:726 ../lib/XXV/MODULES/CHANNELS.pm:765 ../lib/XXV/MODULES/CHANNELS.pm:791 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/HTTPD.pm:58 ../lib/XXV/MODULES/HTTPD.pm:64 ../lib/XXV/MODULES/HTTPD.pm:70 ../lib/XXV/MODULES/HTTPD.pm:76 ../lib/XXV/MODULES/HTTPD.pm:82 ../lib/XXV/MODULES/HTTPD.pm:89 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1792 ../lib/XXV/MODULES/RECORDS.pm:1806 ../lib/XXV/MODULES/RECORDS.pm:1820 ../lib/XXV/MODULES/RECORDS.pm:1839 ../lib/XXV/MODULES/RECORDS.pm:2389 ../lib/XXV/MODULES/RECORDS.pm:2401 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:641 ../lib/XXV/MODULES/TIMERS.pm:654 ../lib/XXV/MODULES/TIMERS.pm:674 ../lib/XXV/MODULES/TIMERS.pm:770 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60 +#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:687 ../lib/XXV/MODULES/CHANNELS.pm:713 ../lib/XXV/MODULES/CHANNELS.pm:726 ../lib/XXV/MODULES/CHANNELS.pm:765 ../lib/XXV/MODULES/CHANNELS.pm:791 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/HTTPD.pm:58 ../lib/XXV/MODULES/HTTPD.pm:64 ../lib/XXV/MODULES/HTTPD.pm:70 ../lib/XXV/MODULES/HTTPD.pm:76 ../lib/XXV/MODULES/HTTPD.pm:82 ../lib/XXV/MODULES/HTTPD.pm:89 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MOVETIMER.pm:27 ../lib/XXV/MODULES/MOVETIMER.pm:364 ../lib/XXV/MODULES/MOVETIMER.pm:377 ../lib/XXV/MODULES/MOVETIMER.pm:386 ../lib/XXV/MODULES/MOVETIMER.pm:399 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1793 ../lib/XXV/MODULES/RECORDS.pm:1807 ../lib/XXV/MODULES/RECORDS.pm:1821 ../lib/XXV/MODULES/RECORDS.pm:1840 ../lib/XXV/MODULES/RECORDS.pm:2390 ../lib/XXV/MODULES/RECORDS.pm:2402 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:641 ../lib/XXV/MODULES/TIMERS.pm:654 ../lib/XXV/MODULES/TIMERS.pm:674 ../lib/XXV/MODULES/TIMERS.pm:770 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60 msgid "This is required!" msgstr "Das ist erforderlich!" @@ -277,12 +277,12 @@ msgid "Percent" msgstr "Prozent" #-------------------- -#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:1830 ../lib/XXV/MODULES/TIMERS.pm:1137 +#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:1831 ../lib/XXV/MODULES/TIMERS.pm:1137 msgid "Channel" msgstr "Kanal" #-------------------- -#: ../html/display.tmpl:27 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:847 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1476 ../lib/XXV/MODULES/RECORDS.pm:1551 ../lib/XXV/MODULES/TIMERS.pm:1134 ../lib/XXV/MODULES/USER.pm:525 +#: ../html/display.tmpl:27 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:847 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/MOVETIMER.pm:527 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1477 ../lib/XXV/MODULES/RECORDS.pm:1552 ../lib/XXV/MODULES/TIMERS.pm:1134 ../lib/XXV/MODULES/USER.pm:525 msgid "Service" msgstr "Service" @@ -312,7 +312,7 @@ msgid "Search with OFDb" msgstr "Suche mit OFDb" #-------------------- -#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1844 ../lib/XXV/MODULES/TIMERS.pm:783 ../lib/XXV/OUTPUT/Console.pm:169 +#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1845 ../lib/XXV/MODULES/TIMERS.pm:783 ../lib/XXV/OUTPUT/Console.pm:169 msgid "Description" msgstr "Beschreibung" @@ -644,7 +644,7 @@ msgid "Save" msgstr "Speichern" #-------------------- -#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1477 ../lib/XXV/MODULES/RECORDS.pm:1552 ../lib/XXV/MODULES/TIMERS.pm:1140 +#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1478 ../lib/XXV/MODULES/RECORDS.pm:1553 ../lib/XXV/MODULES/TIMERS.pm:1140 msgid "Title" msgstr "Titel" @@ -654,7 +654,7 @@ msgid "Search at" msgstr "Suche bei" #-------------------- -#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../html/rlist.tmpl:242 ../html/rsearch.tmpl:242 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:638 ../lib/XXV/MODULES/CHRONICLE.pm:167 ../lib/XXV/MODULES/CHRONICLE.pm:206 ../lib/XXV/MODULES/EPG.pm:748 ../lib/XXV/MODULES/MEDIALIB.pm:1301 ../lib/XXV/MODULES/RECORDS.pm:1478 ../lib/XXV/MODULES/RECORDS.pm:1553 +#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../html/rlist.tmpl:242 ../html/rsearch.tmpl:242 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:638 ../lib/XXV/MODULES/CHRONICLE.pm:167 ../lib/XXV/MODULES/CHRONICLE.pm:206 ../lib/XXV/MODULES/EPG.pm:748 ../lib/XXV/MODULES/MEDIALIB.pm:1301 ../lib/XXV/MODULES/RECORDS.pm:1479 ../lib/XXV/MODULES/RECORDS.pm:1554 msgid "Subtitle" msgstr "Serientitel" @@ -944,7 +944,7 @@ msgid "Priority" msgstr "Priorität" #-------------------- -#: ../html/rdisplay.tmpl:63 ../html/rlist.tmpl:103 ../html/rlist.tmpl:244 ../html/rsearch.tmpl:103 ../html/rsearch.tmpl:244 ../lib/XXV/MODULES/RECORDS.pm:1479 ../lib/XXV/MODULES/RECORDS.pm:1554 +#: ../html/rdisplay.tmpl:63 ../html/rlist.tmpl:103 ../html/rlist.tmpl:244 ../html/rsearch.tmpl:103 ../html/rsearch.tmpl:244 ../lib/XXV/MODULES/RECORDS.pm:1480 ../lib/XXV/MODULES/RECORDS.pm:1555 msgid "Duration" msgstr "Dauer" @@ -969,7 +969,7 @@ msgid "Cut recording" msgstr "Aufnahme schneiden" #-------------------- -#: ../html/rdisplay.tmpl:84 ../lib/XXV/MODULES/RECORDS.pm:1862 +#: ../html/rdisplay.tmpl:84 ../lib/XXV/MODULES/RECORDS.pm:1863 msgid "Edit recording" msgstr "Aufnahme bearbeiten" @@ -1436,7 +1436,7 @@ msgid "Autotimer has programmed %d new timer(s) since last report to %s" msgstr "Autotimer hat %d neuen Timer programmiert, seit letztem Report an %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:25 ../lib/XXV/MODULES/EVENTS.pm:31 ../lib/XXV/MODULES/HTTPD.pm:55 ../lib/XXV/MODULES/INTERFACE.pm:30 ../lib/XXV/MODULES/LOGREAD.pm:29 ../lib/XXV/MODULES/MEDIALIB.pm:31 ../lib/XXV/MODULES/MUSIC.pm:37 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:27 ../lib/XXV/MODULES/ROBOT.pm:26 ../lib/XXV/MODULES/SHARE.pm:50 ../lib/XXV/MODULES/STATUS.pm:29 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:40 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:67 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:31 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:25 ../lib/XXV/MODULES/EVENTS.pm:31 ../lib/XXV/MODULES/HTTPD.pm:55 ../lib/XXV/MODULES/INTERFACE.pm:30 ../lib/XXV/MODULES/LOGREAD.pm:29 ../lib/XXV/MODULES/MEDIALIB.pm:31 ../lib/XXV/MODULES/MOVETIMER.pm:24 ../lib/XXV/MODULES/MUSIC.pm:37 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:27 ../lib/XXV/MODULES/ROBOT.pm:26 ../lib/XXV/MODULES/SHARE.pm:50 ../lib/XXV/MODULES/STATUS.pm:29 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:40 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:67 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:31 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27 msgid "Activate this service" msgstr "Aktiviere diesen Dienst" @@ -1666,7 +1666,7 @@ msgid "Buffer time in minutes before the scheduled start of a recording" msgstr "Pufferzeit in Minuten, vor dem zeitlichen Anfang der Aufnahme." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:669 ../lib/XXV/MODULES/CHANNELS.pm:700 ../lib/XXV/MODULES/CHANNELS.pm:739 ../lib/XXV/MODULES/CHANNELS.pm:752 ../lib/XXV/MODULES/CHANNELS.pm:778 ../lib/XXV/MODULES/CHANNELS.pm:804 ../lib/XXV/MODULES/CHANNELS.pm:817 ../lib/XXV/MODULES/CHANNELS.pm:830 ../lib/XXV/MODULES/CHANNELS.pm:843 ../lib/XXV/MODULES/RECORDS.pm:1803 ../lib/XXV/MODULES/RECORDS.pm:1817 ../lib/XXV/MODULES/TIMERS.pm:747 ../lib/XXV/MODULES/TIMERS.pm:763 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:669 ../lib/XXV/MODULES/CHANNELS.pm:700 ../lib/XXV/MODULES/CHANNELS.pm:739 ../lib/XXV/MODULES/CHANNELS.pm:752 ../lib/XXV/MODULES/CHANNELS.pm:778 ../lib/XXV/MODULES/CHANNELS.pm:804 ../lib/XXV/MODULES/CHANNELS.pm:817 ../lib/XXV/MODULES/CHANNELS.pm:830 ../lib/XXV/MODULES/CHANNELS.pm:843 ../lib/XXV/MODULES/RECORDS.pm:1804 ../lib/XXV/MODULES/RECORDS.pm:1818 ../lib/XXV/MODULES/TIMERS.pm:747 ../lib/XXV/MODULES/TIMERS.pm:763 msgid "Value incorrect!" msgstr "Der Wert ist nicht korrekt!" @@ -1686,7 +1686,7 @@ msgid "Start autotimer search." msgstr "Autotimersuche durchführen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1810 ../lib/XXV/MODULES/TIMERS.pm:737 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1811 ../lib/XXV/MODULES/TIMERS.pm:737 msgid "Priority (%d ... %d)" msgstr "Priorität (%d ... %d)" @@ -1696,7 +1696,7 @@ msgid "Sorry, but the maximum priority is limited to %d!" msgstr "Entschuldigung, aber die maximale Priorität ist auf %d begrenzt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1796 ../lib/XXV/MODULES/TIMERS.pm:753 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1797 ../lib/XXV/MODULES/TIMERS.pm:753 msgid "Lifetime (%d ... %d)" msgstr "Lebenszeit (%d ... %d)" @@ -2625,6 +2625,151 @@ msgid "Create new media" msgstr "Erstelle neues Medium" #-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:17 +msgid "This modul move timers between channels." +msgstr "Diese Modul verschiebt Timer zwischen Kanälen." + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:201 +msgid "Couldn't query rules to move timer from database!" +msgstr "Konnte Regel zum Verschieben der Timer nicht aus der Datenbank abfragen!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:277 +msgid "There none timer to move." +msgstr "Es wurden keine Timer verschoben." + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:32 +msgid "Manual move timer between channels" +msgstr "Manuelles Verschieben der Timer zwischen den Kanälen" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:346 ../lib/XXV/MODULES/MOVETIMER.pm:503 +msgid "Rule to move timer with ID '%s' does not exist in the database!" +msgstr "Regel zum Verschieben der Timer mit ID '%s' exisitert nicht in der Datenbank!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:363 +msgid "Which channel should used as source?" +msgstr "Welcher Kanal soll als Quelle verwendet werden?" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:375 ../lib/XXV/MODULES/MOVETIMER.pm:397 ../lib/XXV/MODULES/RECORDS.pm:1838 ../lib/XXV/MODULES/TIMERS.pm:652 +msgid "This channel '%s' does not exist!" +msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:385 +msgid "Which channel should used as destination?" +msgstr "Welcher Kanal soll als Ziel verwendet werden?" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:39 +msgid "List rules to move timer between channels" +msgstr "Zeige Regel zum Verschieben von Timer zwischen Kanälen" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:404 +msgid "When should use this rule" +msgstr "Wann soll die Regel verwendet werden" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:414 +msgid "How should timer handled, if changed" +msgstr "Wie sollen Timer behandelt bei Änderungen behandelt werden" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:426 +msgid "Edit rule to move timer" +msgstr "Regel zum Verschieben von Timern bearbeiten" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:427 +msgid "Create a new rule to move timer" +msgstr "Erzeuge eine neue Regel zum Verschieben von Timern" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:435 +msgid "Rule to move timer saved!" +msgstr "Regel zum Verschieben von Timern gespeichert!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:46 +msgid "Create rule to move timer between channels" +msgstr "Erzeuge eine neue Regel zum Verschieben von Timern zwischen Kanälen" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:472 ../lib/XXV/MODULES/MOVETIMER.pm:479 +msgid "Couldn't insert rule move timer in database!" +msgstr "Regel zum Verschieben von Timern konnte nicht in Datenbank eingefügt werden!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:495 +msgid "Missing ID to select rules for deletion! Please use movetimerdelete 'id'" +msgstr "Benötige ID zum Auswählen der Regel für die Löschung! Bitte verwende movetimerdelete 'id'" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:507 +msgid "Rule to move timer %s is deleted." +msgstr "Regel zum Verschieben der Timer %s wurde gelöscht." + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:528 +msgid "Source" +msgstr "Quelle" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:529 +msgid "Destination" +msgstr "Ziel" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:53 +msgid "Delete rule to move timer between channels" +msgstr "Lösche Regel zum Verschieben von Timern zwischen Kanälen" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:530 ../lib/XXV/MODULES/MOVETIMER.pm:593 +msgid "Move timer" +msgstr "Verschiebe Timer" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:531 +msgid "Change original timer" +msgstr "Ändere original Timer" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:581 +msgid "Allways" +msgstr "Immer" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:582 +msgid "Newer" +msgstr "Niemals" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:583 +msgid "If collision detected" +msgstr "Wenn eine Kollision erkannt wurde" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:594 +msgid "Keep inactiv original timer" +msgstr "Behalte den inaktiven original Timer" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:595 +msgid "Copy original timer" +msgstr "Kopiere den original Timer" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:60 +msgid "Edit rule to move timer between channels" +msgstr "Bearbeite Regel zum Verschieben von Timern zwischen Kanälen" + +#-------------------- #: ../lib/XXV/MODULES/MUSIC.pm:102 msgid "Download album covers." msgstr "Plattenhüllen herunterladen." @@ -2805,17 +2950,17 @@ msgid "Delete recording 'rid'" msgstr "Aufnahme löschen 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1334 +#: ../lib/XXV/MODULES/RECORDS.pm:1335 msgid "No recording defined for display! Please use rdisplay 'rid'" msgstr "Keine Aufnahme zum Anzeigen definiert! Bitte verwende rdisplay 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1372 ../lib/XXV/MODULES/RECORDS.pm:1404 ../lib/XXV/MODULES/RECORDS.pm:1431 ../lib/XXV/MODULES/RECORDS.pm:1684 ../lib/XXV/MODULES/RECORDS.pm:1773 ../lib/XXV/MODULES/RECORDS.pm:2029 +#: ../lib/XXV/MODULES/RECORDS.pm:1373 ../lib/XXV/MODULES/RECORDS.pm:1405 ../lib/XXV/MODULES/RECORDS.pm:1432 ../lib/XXV/MODULES/RECORDS.pm:1685 ../lib/XXV/MODULES/RECORDS.pm:1774 ../lib/XXV/MODULES/RECORDS.pm:2030 msgid "Recording '%s' does not exist in the database!" msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1397 ../lib/XXV/MODULES/RECORDS.pm:1424 +#: ../lib/XXV/MODULES/RECORDS.pm:1398 ../lib/XXV/MODULES/RECORDS.pm:1425 msgid "No recording defined for playback! Please use rplay 'rid'." msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" @@ -2835,7 +2980,7 @@ msgid "Play recording 'rid' in the VDR." msgstr "Spiele Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1617 +#: ../lib/XXV/MODULES/RECORDS.pm:1618 msgid "No recording defined for deletion! Please use rdelete 'id'." msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." @@ -2845,22 +2990,22 @@ msgid "Cut recording 'rid' in vdr" msgstr "Schneide Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1656 +#: ../lib/XXV/MODULES/RECORDS.pm:1657 msgid "Are you sure to delete this recording?" msgstr "Wollen sie wirklich diese Aufnahme löschen?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1690 +#: ../lib/XXV/MODULES/RECORDS.pm:1691 msgid "Recording '%s' to delete" msgstr "Aufnahme '%s' wird gelöscht" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1725 +#: ../lib/XXV/MODULES/RECORDS.pm:1726 msgid "No recording to delete!" msgstr "Keine Aufnahme zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1751 +#: ../lib/XXV/MODULES/RECORDS.pm:1752 msgid "No recording defined for editing!" msgstr "Keine Aufnahme-ID zum Bearbeiten!" @@ -2870,67 +3015,62 @@ msgid "Create event entries if a recording has been deleted." msgstr "Erzeuge Eventeinträge, wenn eine Aufnahme gelöscht wurde." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1790 ../lib/XXV/MODULES/RECORDS.pm:2388 ../lib/XXV/MODULES/TIMERS.pm:768 +#: ../lib/XXV/MODULES/RECORDS.pm:1791 ../lib/XXV/MODULES/RECORDS.pm:2389 ../lib/XXV/MODULES/TIMERS.pm:768 msgid "Title of recording" msgstr "Titel der Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1827 +#: ../lib/XXV/MODULES/RECORDS.pm:1828 msgid "Undefined" msgstr "Unbestimmt" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1837 ../lib/XXV/MODULES/TIMERS.pm:652 -msgid "This channel '%s' does not exist!" -msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1848 +#: ../lib/XXV/MODULES/RECORDS.pm:1849 msgid "Video" msgstr "Video" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1852 +#: ../lib/XXV/MODULES/RECORDS.pm:1853 msgid "Audio" msgstr "Audio" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1857 +#: ../lib/XXV/MODULES/RECORDS.pm:1858 msgid "Cut marks" msgstr "Schnittmarken" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1888 ../lib/XXV/MODULES/RECORDS.pm:1895 +#: ../lib/XXV/MODULES/RECORDS.pm:1889 ../lib/XXV/MODULES/RECORDS.pm:1896 msgid "Couldn't write file '%s' : %s" msgstr "Konnte Datei '%s' nicht schreiben : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1914 ../lib/XXV/MODULES/RECORDS.pm:1932 +#: ../lib/XXV/MODULES/RECORDS.pm:1915 ../lib/XXV/MODULES/RECORDS.pm:1933 msgid "Recording: '%s', couldn't move to '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1928 +#: ../lib/XXV/MODULES/RECORDS.pm:1929 msgid "Recording: '%s', couldn't mkpath: '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1939 +#: ../lib/XXV/MODULES/RECORDS.pm:1940 msgid "Recording: '%s', couldn't remove '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1967 ../lib/XXV/MODULES/RECORDS.pm:1969 +#: ../lib/XXV/MODULES/RECORDS.pm:1968 ../lib/XXV/MODULES/RECORDS.pm:1970 msgid "Recording edited!" msgstr "Aufnahme wurde bearbeitet!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1977 +#: ../lib/XXV/MODULES/RECORDS.pm:1978 msgid "Recording was'nt changed!" msgstr "Aufnahme wurde nicht verändert!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2016 +#: ../lib/XXV/MODULES/RECORDS.pm:2017 msgid "No reccmds.conf on your system!" msgstr "Keine reccmds.conf auf dem System!" @@ -2940,32 +3080,32 @@ msgid "Recording deleted: %s" msgstr "Aufnahme gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2021 +#: ../lib/XXV/MODULES/RECORDS.pm:2022 msgid "Please use rconvert 'cmdid_rid'" msgstr "Bitte verwende rconvert 'cmdid_rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2028 +#: ../lib/XXV/MODULES/RECORDS.pm:2029 msgid "Couldn't find this command ID!" msgstr "Kann diese Kommando-ID nicht finden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2042 +#: ../lib/XXV/MODULES/RECORDS.pm:2043 msgid "Call %s '%s', standard error output :" msgstr "Aufruf %s '%s', Standardfehlerausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2045 +#: ../lib/XXV/MODULES/RECORDS.pm:2046 msgid "Call %s '%s', standard output :" msgstr "Aufruf %s '%s', Ausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2049 +#: ../lib/XXV/MODULES/RECORDS.pm:2050 msgid "Sorry! Couldn't call %s '%s'! %s" msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2053 +#: ../lib/XXV/MODULES/RECORDS.pm:2054 msgid "Back to recording list" msgstr "Zurück zur Aufnahmeliste" @@ -2975,37 +3115,37 @@ msgid "Subtitle: %s" msgstr "Serientitel: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2091 +#: ../lib/XXV/MODULES/RECORDS.pm:2092 msgid "%d new recordings since last report time %s" msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2383 +#: ../lib/XXV/MODULES/RECORDS.pm:2384 msgid "There none recoverable recordings!" msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2408 +#: ../lib/XXV/MODULES/RECORDS.pm:2409 msgid "Recover recording" msgstr "Aufnahme wiederherstellen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2414 +#: ../lib/XXV/MODULES/RECORDS.pm:2415 msgid "Can't recover recording, maybe was this in the meantime deleted!" msgstr "Aufnahme konnte nicht wiederhergestellt werden, möglicherweise wurde sie in der zwischenzeit gelöscht!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2423 +#: ../lib/XXV/MODULES/RECORDS.pm:2424 msgid "Recover recording, couldn't rename '%s' to %s : %s" msgstr "Wiederhergestellen der Aufnahme, konnte '%s' nicht in %s umbenennen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2435 ../lib/XXV/MODULES/RECORDS.pm:2437 +#: ../lib/XXV/MODULES/RECORDS.pm:2436 ../lib/XXV/MODULES/RECORDS.pm:2438 msgid "Recording recovered!" msgstr "Aufnahme wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2445 +#: ../lib/XXV/MODULES/RECORDS.pm:2446 msgid "None recording was'nt recovered!" msgstr "Keine Aufnahme wurde wiederhergestellt!" @@ -3050,7 +3190,7 @@ msgid "Update recording '%s'" msgstr "Aktualisiere Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:602 +#: ../lib/XXV/MODULES/RECORDS.pm:603 msgid "Analyze recording '%s'" msgstr "Untersuche Aufnahme '%s'" @@ -3070,17 +3210,17 @@ msgid "None" msgstr "Keines" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:704 +#: ../lib/XXV/MODULES/RECORDS.pm:705 msgid "Write %d recordings to the database." msgstr "Schreibe %d Aufnahmen in die Datenbank." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:706 +#: ../lib/XXV/MODULES/RECORDS.pm:707 msgid "Write %d recordings to the database. Couldn't assign %d recordings." msgstr "Schreibe nur %d Aufnahmen in die Datenbank. Kann %d Aufnahmen nicht zuordnen." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:743 ../lib/XXV/MODULES/RECORDS.pm:745 +#: ../lib/XXV/MODULES/RECORDS.pm:744 ../lib/XXV/MODULES/RECORDS.pm:746 msgid "Get information on recordings ..." msgstr "Hole Informationen über Aufnahmen ..." diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo Binary files differindex aba5c74..380d3d4 100644 --- a/locale/de/LC_MESSAGES/xxv.mo +++ b/locale/de/LC_MESSAGES/xxv.mo |
