diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-06-15 06:21:31 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-06-15 06:21:31 +0000 |
| commit | 0b70320be6c8a4e13e02c70f7644678157d703ee (patch) | |
| tree | ea16e3ce9a6b325c6d8287955158f406b4ba5d21 | |
| parent | 217af3aa226018610f812b2deb41dddd82203dc9 (diff) | |
| download | xxv-0b70320be6c8a4e13e02c70f7644678157d703ee.tar.gz xxv-0b70320be6c8a4e13e02c70f7644678157d703ee.tar.bz2 | |
* Remove linked templates [a,m,r,t]search.tmpl, widget selected now by console->setcall('tlist')
* Add modul to manage keywords withhin recordings
* Store AUX-parameter (autotimer id, keywords) inside timer now as xml struct
| -rwxr-xr-x | contrib/update-xxv | 4 | ||||
| -rw-r--r-- | contrib/upgrade-xxv-db.sql | 22 | ||||
| l--------- | html/asearch.tmpl | 1 | ||||
| -rw-r--r-- | html/rdisplay.tmpl | 19 | ||||
| l--------- | html/rsearch.tmpl | 1 | ||||
| l--------- | html/tsearch.tmpl | 1 | ||||
| -rw-r--r-- | lib/XXV/MODULES/AUTOTIMER.pm | 96 | ||||
| -rw-r--r-- | lib/XXV/MODULES/KEYWORDS.pm | 319 | ||||
| -rw-r--r-- | lib/XXV/MODULES/MUSIC.pm | 1 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 143 | ||||
| -rw-r--r-- | lib/XXV/MODULES/TIMERS.pm | 161 | ||||
| -rw-r--r-- | locale/Makefile | 1 | ||||
| -rw-r--r-- | locale/de.po | 893 | ||||
| -rw-r--r-- | locale/de/LC_MESSAGES/xxv.mo | bin | 78134 -> 79256 bytes |
14 files changed, 1154 insertions, 508 deletions
diff --git a/contrib/update-xxv b/contrib/update-xxv index ea90e49..b31388e 100755 --- a/contrib/update-xxv +++ b/contrib/update-xxv @@ -18,11 +18,11 @@ # Increment the version number each time the database changes! # -actualVersion=26 +actualVersion=29 # Specify tables to export before and import after update # -tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE MOVETIMER USER' +tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE MOVETIMER USER XMLTV' showTitle() { diff --git a/contrib/upgrade-xxv-db.sql b/contrib/upgrade-xxv-db.sql index 8a08c5e..ebcf781 100644 --- a/contrib/upgrade-xxv-db.sql +++ b/contrib/upgrade-xxv-db.sql @@ -2,7 +2,7 @@ -- -- Host: localhost Database: xxv -- ------------------------------------------------------ --- Server version 5.0.32-Debian_7etch3 +-- Server version 5.0.32-Debian_7etch5 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; @@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `AUTOTIMER` ( `startdate` datetime default NULL, `stopdate` datetime default NULL, `count` int(11) default NULL, + `keywords` text, PRIMARY KEY (`Id`) ); @@ -151,6 +152,23 @@ CREATE TABLE IF NOT EXISTS `USER` ( `MaxPriority` tinyint(2) default '0', PRIMARY KEY (`Id`) ); + +-- +-- Table structure for table `XMLTV` +-- + +CREATE TABLE IF NOT EXISTS `XMLTV` ( + `id` int(10) unsigned NOT NULL auto_increment, + `active` enum('y','n') default 'n', + `xmltvname` varchar(256) NOT NULL, + `channel` varchar(64) NOT NULL, + `template` enum('y','n') default 'n', + `updateinterval` enum('e','d','w') default 'e', + `source` text NOT NULL, + `updated` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + UNIQUE KEY `channel` (`channel`) +); /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -158,4 +176,4 @@ CREATE TABLE IF NOT EXISTS `USER` ( /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2008-02-03 9:07:46 +-- Dump completed on 2008-06-13 9:50:16 diff --git a/html/asearch.tmpl b/html/asearch.tmpl deleted file mode 120000 index 5671c2a..0000000 --- a/html/asearch.tmpl +++ /dev/null @@ -1 +0,0 @@ -alist.tmpl
\ No newline at end of file diff --git a/html/rdisplay.tmpl b/html/rdisplay.tmpl index 8ca6b93..0b35460 100644 --- a/html/rdisplay.tmpl +++ b/html/rdisplay.tmpl @@ -159,6 +159,25 @@ </td> </tr> <?% END %?> + <?% allowkeywords = allow('rk') %?> + <?% IF param.keywords.size > 0 %?> + <tr> + <td> </td> + <td> + <?% gettext('Keywords') %?> : + <?% FOREACH keyword = param.keywords %?> + <?% IF allowkeywords %?> + <a href="?cmd=rk&data=<?% keyword.0 %?>"> + <?% END %?> + <?% keyword.0 %?> + <?% IF allowkeywords %?> + </a> + <?% END %?> + + <?% END %?> + </td> + </tr> + <?% END %?> <tr> <td> </td> <td> diff --git a/html/rsearch.tmpl b/html/rsearch.tmpl deleted file mode 120000 index 2e6f4df..0000000 --- a/html/rsearch.tmpl +++ /dev/null @@ -1 +0,0 @@ -rlist.tmpl
\ No newline at end of file diff --git a/html/tsearch.tmpl b/html/tsearch.tmpl deleted file mode 120000 index d1d3655..0000000 --- a/html/tsearch.tmpl +++ /dev/null @@ -1 +0,0 @@ -tlist.tmpl
\ No newline at end of file diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm index ca43d20..5eb010f 100644 --- a/lib/XXV/MODULES/AUTOTIMER.pm +++ b/lib/XXV/MODULES/AUTOTIMER.pm @@ -15,6 +15,7 @@ sub module { Name => 'AUTOTIMER', Prereq => { 'Date::Manip' => 'date manipulation routines', + 'XML::Simple' => 'Easy API to maintain XML (esp config files)' }, Description => gettext('This module searches for EPG entries with user-defined text and creates new timers.'), Version => (split(/ /, '$Revision$'))[1], @@ -242,7 +243,7 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; - # who am I + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) @@ -263,8 +264,9 @@ sub new { # read the DB Handle $self->{dbh} = delete $attr{'-dbh'}; - # file - $self->{file} = $self->{config}->{file}; + $self->{xml} = XML::Simple->new( NumericEscape => ($self->{charset} eq 'UTF-8' ? 0 : 1) + ) + || return error("Can't create XML instance!"); # The Initprocess my $erg = $self->_init or return error('Problem to initialize module'); @@ -310,6 +312,7 @@ sub _init { startdate datetime default NULL, stopdate datetime default NULL, count int(11) default NULL, + keywords text, PRIMARY KEY (Id) ) COMMENT = '$version' |); @@ -446,22 +449,22 @@ sub _autotimerLookup { # Only search for one at? if(ref $console && $autotimerid) { $console->message(sprintf(gettext("Found %d entries for '%s' in EPG database."), scalar keys %$events, $a->{Search})); - foreach my $Id (sort keys %$events) { + foreach my $eventid (sort keys %$events) { - my $output = [ [gettext("Title"), $events->{$Id}->{title}] ]; - push(@$output, [gettext("Subtitle"), $events->{$Id}->{subtitle}]) - if($events->{$Id}->{subtitle}); - push(@$output, [gettext("Channel"), $events->{$Id}->{channelname}]); + my $output = [ [gettext("Title"), $events->{$eventid}->{title}] ]; + push(@$output, [gettext("Subtitle"), $events->{$eventid}->{subtitle}]) + if($events->{$eventid}->{subtitle}); + push(@$output, [gettext("Channel"), $events->{$eventid}->{channelname}]); - if($events->{$Id}->{vpsstart} and $a->{VPS} eq 'y' and $modT->{usevpstime} eq 'y') { - push(@$output, [gettext("Start"), datum($events->{$Id}->{vpsstart} )]); - push(@$output, [gettext("Stop"), datum($events->{$Id}->{vpsstop} )]); + if($events->{$eventid}->{vpsstart} and $a->{VPS} eq 'y' and $modT->{usevpstime} eq 'y') { + push(@$output, [gettext("Start"), datum($events->{$eventid}->{vpsstart} )]); + push(@$output, [gettext("Stop"), datum($events->{$eventid}->{vpsstop} )]); } else { - push(@$output, [gettext("Start"), datum($events->{$Id}->{starttime})]); - push(@$output, [gettext("Stop"), datum($events->{$Id}->{stoptime} )]); + push(@$output, [gettext("Start"), datum($events->{$eventid}->{starttime})]); + push(@$output, [gettext("Stop"), datum($events->{$eventid}->{stoptime} )]); } - push(@$output,[gettext("Description"), $events->{$Id}->{description}]) - if($events->{$Id}->{description}); + push(@$output,[gettext("Description"), $events->{$eventid}->{description}]) + if($events->{$eventid}->{description}); $console->table($output); }; } @@ -472,8 +475,8 @@ sub _autotimerLookup { # Every found and save this as timer my $c = 0; my $m = 0; - foreach my $Id (sort keys %$events) { - my $event = $events->{$Id}; + foreach my $eventid (sort keys %$events) { + my $event = $events->{$eventid}; $event->{activ} = 'y'; $event->{priority} = $a->{Priority}; @@ -501,10 +504,16 @@ sub _autotimerLookup { $event->{start} = sprintf("%02d%02d",$bhour,$bmin); $event->{stop} = sprintf("%02d%02d",$ehour,$emin); - $event->{file} = $obj->_placeholder($event, $a); + my $keywords; + ($event->{file},$keywords) = $obj->_placeholder($event, $a); # Add anchor for reidentify timer - $event->{aux} = sprintf('#~AT[%d]', $id); + my $args = { + 'autotimer' => $id, +# 'eventid' => $eventid + }; + $args->{'keywords'} = $keywords if($keywords); + $event->{aux} = $obj->{xml}->XMLout($args, RootName => 'xxv'); # Wished timer already exist with same data from autotimer ? next if($obj->_timerexists($event)); @@ -1006,6 +1015,11 @@ You can also fine tune your search : return undef, gettext('The day is incorrect or was in a wrong format!'); }, }, + 'keywords' => { + typ => 'string', + def => $epg->{keywords}, + msg => gettext('Add keywords to recording'), + }, ]; # Ask Questions @@ -1260,6 +1274,8 @@ sub list { $info->{sortable} = '1'; $info->{timers} = main::getModule('TIMERS')->getTimersByAutotimer(); } + + $console->setCall('alist'); $console->table($erg, $info ); } @@ -1554,24 +1570,26 @@ sub _placeholder { my $file; + my %at_details; + $at_details{'title'} = $data->{title}; + $at_details{'subtitle'} = $data->{subtitle} ? $data->{subtitle} : $data->{start}; + $at_details{'date'} = $data->{day}; + $at_details{'regie'} = $1 if $data->{description} =~ m/\|Director: (.*?)\|/; + $at_details{'category'} = $1 if $data->{description} =~ m/\|Category: (.*?)\|/; + $at_details{'genre'} = $1 if $data->{description} =~ m/\|Genre: (.*?)\|/; + $at_details{'year'} = $1 if $data->{description} =~ m/\|Year: (.*?)\|/; + $at_details{'country'} = $1 if $data->{description} =~ m/\|Country: (.*?)\|/; + $at_details{'originaltitle'} = $1 if $data->{description} =~ m/\|Originaltitle: (.*?)\|/; + $at_details{'fsk'} = $1 if $data->{description} =~ m/\|FSK: (.*?)\|/; + $at_details{'episode'} = $1 if $data->{description} =~ m/\|Episode: (.*?)\|/; + $at_details{'rating'} = $1 if $data->{description} =~ m/\|Rating: (.*?)\|/; + $at_details{'cast'} = $1 if $data->{description} =~ m/\|Cast: (.*?)\|/; + if ($at->{Dir}) { my $title = $at->{Dir}; if($title =~ /.*%.*%.*/sig) { - my %at_details; - $at_details{'title'} = $data->{title}; - $at_details{'subtitle'} = $data->{subtitle} ? $data->{subtitle} : $data->{start}; - $at_details{'date'} = $data->{day}; - $at_details{'regie'} = $1 if $data->{description} =~ m/\|Director: (.*?)\|/; - $at_details{'category'} = $1 if $data->{description} =~ m/\|Category: (.*?)\|/; - $at_details{'genre'} = $1 if $data->{description} =~ m/\|Genre: (.*?)\|/; - $at_details{'year'} = $1 if $data->{description} =~ m/\|Year: (.*?)\|/; - $at_details{'country'} = $1 if $data->{description} =~ m/\|Country: (.*?)\|/; - $at_details{'originaltitle'} = $1 if $data->{description} =~ m/\|Originaltitle: (.*?)\|/; - $at_details{'fsk'} = $1 if $data->{description} =~ m/\|FSK: (.*?)\|/; - $at_details{'episode'} = $1 if $data->{description} =~ m/\|Episode: (.*?)\|/; - $at_details{'rating'} = $1 if $data->{description} =~ m/\|Rating: (.*?)\|/; - $title =~ s/%([\w_-]+)%/$at_details{lc($1)}/sieg; - $file = $title; + $title =~ s/%([\w_-]+)%/$at_details{lc($1)}/sieg; + $file = $title; } else { # Classic mode DIR~TITLE~SUBTILE if($data->{subtitle}) { $file = sprintf('%s~%s~%s', $at->{Dir}, $data->{title},$data->{subtitle}); @@ -1585,12 +1603,20 @@ sub _placeholder { $file = $data->{title}; } + my $keywords; + if ($at->{keywords}) { + $keywords = $at->{keywords}; + if($keywords =~ /.*%.*%.*/sig) { + $keywords =~ s/%([\w_-]+)%/$at_details{lc($1)}/sieg; + } + } + # sind irgendweche Tags verwendet worden, die leer waren und die doppelte Verzeichnisse erzeugten? $file =~s#~+#~#g; $file =~s#^~##g; $file =~s#~$##g; - return $file; + return ($file,$keywords); } # ------------------ diff --git a/lib/XXV/MODULES/KEYWORDS.pm b/lib/XXV/MODULES/KEYWORDS.pm new file mode 100644 index 0000000..c1c5d1a --- /dev/null +++ b/lib/XXV/MODULES/KEYWORDS.pm @@ -0,0 +1,319 @@ +package XXV::MODULES::KEYWORDS; + +use strict; +use Tools; + +# ------------------ +sub module { +# ------------------ + my $self = shift || return error('No object defined!'); + + my $args = { + Name => 'KEYWORDS', + Prereq => { +# 'XML::Simple' => 'Easy API to maintain XML (esp config files)' + }, + Description => gettext('This module manages keywords and tag within timer and recordings.'), + Version => (split(/ /, '$Revision: 1332 $'))[1], + Date => (split(/ /, '$Date: 2008-05-24 09:05:56 +0200 (Sa, 24 Mai 2008) $'))[1], + Author => 'anbr', + LastAuthor => (split(/ /, '$Author: anbr $'))[1], +# Status => sub{ $self->status(@_) }, + Preferences => { + active => { + description => gettext('Activate this service'), + default => 'y', + type => 'confirm', + required => gettext('This is required!'), + }, + }, + Commands => { + tkeywords => { + description => gettext("Search timers 'keywords'"), + short => 'tk', + callback => sub{ $self->timer_keywords(@_) }, + DenyClass => 'tlist', + }, + tsuggestkeywords => { + hidden => 'yes', + callback => sub{ $self->suggest('timer',@_) }, + DenyClass => 'tlist', + }, + rkeywords => { + description => gettext("Search recordings 'keywords'"), + short => 'rk', + callback => sub{ $self->recording_keywords(@_) }, + DenyClass => 'rlist', + }, + rsuggestkeywords => { + hidden => 'yes', + callback => sub{ $self->suggest('recording',@_) }, + DenyClass => 'rlist', + } + } + }; + return $args; +} + +# ------------------ +sub new { +# ------------------ + my($class, %attr) = @_; + my $self = {}; + bless($self, $class); + + $self->{charset} = delete $attr{'-charset'}; + if($self->{charset} eq 'UTF-8'){ + eval 'use utf8'; + } + + # 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 $_"; + if($@) { + my $m = (split(/ /, $_))[0]; + return panic("\nCouldn't load perl module: $m\nPlease install this module on your system:\nperl -MCPAN -e 'install $m'"); + } + } keys %{$self->{MOD}->{Prereq}}; + + # read the DB Handle + $self->{dbh} = delete $attr{'-dbh'}; + + #$self->{xml} = XML::Simple->new( NumericEscape => ($self->{charset} eq 'UTF-8' ? 0 : 1)) + # || return error("Can't create XML instance!"); + + # 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 = 29; # Must be increment if rows of table changed + # this tables hasen't handmade user data, + # therefore old table could dropped if updated rows + if(!tableUpdated($self->{dbh},'KEYWORDS',$version,1)) { + return 0; + } + + # Look for table or create this table + $self->{dbh}->do(qq| + CREATE TABLE IF NOT EXISTS KEYWORDS ( + id int(11) NOT NULL auto_increment, + md5 varchar(32) NOT NULL, + keyword varchar(128) NOT NULL, + rank tinyint NOT NULL, + total tinyint NOT NULL, + source enum('recording', 'timer'), + PRIMARY KEY (id), + UNIQUE KEY (md5,keyword) + ) COMMENT = '$version' + |); + + + + 1; +} + +# ------------------ +sub insert { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + my $id = shift || return undef; + my $keywords = shift || return undef; + + return unless($self->{active} eq 'y'); + + my $sth = $self->{dbh}->prepare(qq|REPLACE INTO KEYWORDS(md5, keyword, rank, total, source ) VALUES (?,?,?,?,?)|); + my @words = split(/[,;\r\n]/, $keywords); + my $total = scalar @words; + my $rank = $total + 1; + foreach my $w (@words) { + $rank --; + $w =~ s/^\s+//; # no leading white space + $w =~ s/\s+$//; # no trailing white space + next unless($w); + if(!$sth->execute($id,$w,$rank,$total,$type)) { + error sprintf("Couldn't insert keyword!: '%s' !",$w); + return undef; + } + } + return 1; +} + +# ------------------ +sub remove { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + my $md5 = shift || return undef; + + return unless($self->{active} eq 'y'); + + my $sql = sprintf('DELETE FROM KEYWORDS WHERE md5 IN (%s)', join(',' => ('?') x @$md5)); + my $sth = $self->{dbh}->prepare($sql); + $sth->execute(@$md5) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return 1; +} + +# ------------------ +sub removesource { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + + return unless($self->{active} eq 'y'); + + my $sth = $self->{dbh}->prepare('DELETE FROM KEYWORDS WHERE source = ?'); + $sth->execute($type) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return 1; +} + +# ------------------ +sub suggest { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $search = shift; + my $params = shift; + + if($search) { + my $sth = $self->{dbh}->prepare( +qq|SELECT SQL_CACHE keyword from KEYWORDS + WHERE source = ? + AND keyword LIKE ? + GROUP BY keyword + LIMIT 25|); + if(!$sth->execute($type, '%'.$search.'%')) { + error sprintf("Couldn't execute query: %s.",$sth->errstr); + } else { + my $result = $sth->fetchall_arrayref(); + $console->table($result) + if(ref $console && $result); + } + } + +} + +# ------------------ +sub list { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + my $md5 = shift; + + return (undef,0,0) unless($self->{active} eq 'y'); + + # Get keywords with highest ranking + my $list = $self->_list($type,$md5); + return (undef,0,0) unless($list and scalar @$list); + # Remember highest and lowest ranking for scaling + my $keywordmax = $list->[0]->[1]; + my $keywordmin = $list->[-1]->[1]; + # sort keyworks by name + my @keywords = sort {$a->[0] cmp $b->[0]} @$list; + + return (\@keywords,$keywordmax,$keywordmin); +} + +# ------------------ +sub _list { +# ------------------ + my $self = shift || return error('No object defined!'); + my $type = shift || return error('No type defined!'); + my $md5 = shift; + my $sth; + if($md5 and ref $md5 eq 'ARRAY') { + my $sql = sprintf(qq|SELECT SQL_CACHE keyword,sum(100/total*rank) as pos + FROM KEYWORDS + WHERE source = ? AND md5 IN (%s) + GROUP BY keyword + ORDER BY pos desc + LIMIT 20|, join(',' => ('?') x @$md5)); + unshift(@$md5,$type); + $sth = $self->{dbh}->prepare($sql); + $sth->execute(@$md5) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + } else { + my $sql = qq|SELECT SQL_CACHE keyword,sum(100/total*rank) as pos + FROM KEYWORDS + WHERE source = ? + GROUP BY keyword + ORDER BY pos desc + LIMIT 20|; + $sth = $self->{dbh}->prepare($sql); + $sth->execute($type) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + } + my $result = $sth->fetchall_arrayref(); + return $result; +} + +# ------------------ +sub timer_keywords { +# ------------------ + 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 $text = shift; + my $params = shift; + + my $tmod = main::getModule('TIMERS'); + unless($text) { + return $tmod->list($watcher,$console); + } + + my $term; + my $search; + my $query = buildsearch("k.keyword",$text); + $search = sprintf('AND ( %s ) AND ( t.id = k.md5 )', $query->{query}); + foreach(@{$query->{term}}) { push(@{$term},$_); } + + return $tmod->_list($watcher,$console,$search,$term,$params,', KEYWORDS as k'); +} + +# ------------------ +sub recording_keywords { +# ------------------ + 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 $text = shift; + my $params = shift; + + my $rmod = main::getModule('RECORDS'); + unless($text) { + return $rmod->list($watcher,$console); + } + + my $query = buildsearch("k.keyword",$text); + return $rmod->_search($watcher,$console,$query->{query}.' ) AND ( r.RecordMD5 = k.md5 ',$query->{term},$params,', KEYWORDS as k'); +} + +1; diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm index ae07897..7bee9c2 100644 --- a/lib/XXV/MODULES/MUSIC.pm +++ b/lib/XXV/MODULES/MUSIC.pm @@ -708,6 +708,7 @@ sub list { getCover => sub{ return $obj->_findcoverfromcache(@_, 'relative') }, }; + $console->setCall('mlist'); $console->table($erg, $params); } diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index 0fdd5b0..e551da5 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -23,7 +23,8 @@ sub module { Prereq => { 'Time::Local' => 'efficiently compute time from local and GMT time ', 'Digest::MD5 qw(md5_hex)' => 'Perl interface to the MD5 Algorithm', - 'Linux::Inotify2' => 'scalable directory/file change notification' + 'Linux::Inotify2' => 'scalable directory/file change notification', + 'XML::Simple' => 'Easy API to maintain XML (esp config files)' }, Description => gettext('This module manages recordings.'), Version => (split(/ /, '$Revision$'))[1], @@ -242,7 +243,7 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; - # who am I + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) @@ -263,13 +264,16 @@ sub new { # read the DB Handle $self->{dbh} = delete $attr{'-dbh'}; + $self->{xml} = XML::Simple->new( NumericEscape => ($self->{charset} eq 'UTF-8' ? 0 : 1)) + || return error("Can't create XML instance!"); + # define framerate PAL 25, NTSC 30 $self->{framerate} = Tools->FRAMESPERSECOND; # The Initprocess my $erg = $self->_init or return error('Problem to initialize modul!'); - return $self; + return $self; } # ------------------ @@ -282,7 +286,7 @@ sub _init { return 0; } - my $version = 28; # Must be increment if rows of table changed + my $version = 29; # Must be increment if rows of table changed # this tables hasen't handmade user data, # therefore old table could dropped if updated rows if(!tableUpdated($obj->{dbh},'RECORDS',$version,1)) { @@ -303,6 +307,7 @@ sub _init { Marks text, Type enum('TV', 'RADIO', 'UNKNOWN') default 'TV', preview text NOT NULL, + aux text, addtime timestamp, PRIMARY KEY (eventid), UNIQUE KEY (eventid) @@ -325,6 +330,11 @@ sub _init { return 0; } + $obj->{keywords} = main::getModule('KEYWORDS'); + unless($obj->{keywords}) { + return 0; + } + my $updatefile = sprintf("%s/.update",$obj->{videodir}); if( -r $updatefile) { my $inotify = new Linux::Inotify2 @@ -525,6 +535,7 @@ sub readData { unless(scalar @$vdata) { # Delete old Records $obj->{dbh}->do('DELETE FROM RECORDS'); + $obj->{keywords}->removesource('recording'); my $msg = gettext('No recordings available!'); con_err($console,$msg); @@ -567,6 +578,7 @@ sub readData { my $db_data; if($forceUpdate) { $obj->{dbh}->do('DELETE FROM RECORDS'); + $obj->{keywords}->removesource('recording'); } else { # read database for compare with vdr data my $sql = qq|SELECT SQL_CACHE r.eventid as eventid, r.RecordId as id, @@ -669,6 +681,9 @@ sub readData { if($obj->insert($info)) { push(@merkMD5,$info->{RecordMD5}); $insertedData++; + + $obj->{keywords}->insert('recording',$info->{RecordMD5},$info->{keywords}); + } else { push(@{$err},sprintf(gettext("Can't add recording '%s' into database!"),$info->{title})); } @@ -693,13 +708,14 @@ sub readData { my $sth = $obj->{dbh}->prepare($sql); $sth->execute(@todel) or return con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); + + $obj->{keywords}->remove('recording',\@todel); } my $removedData = $db_data ? scalar keys %$db_data : 0; debug sprintf 'Finish .. %d recordings inserted, %d recordings updated, %d recordings removed', $insertedData, $updatedState, $removedData; - error sprintf("Unsupported unit '%s' to calc free capacity",$freeUnit) unless($freeUnit eq 'MB'); # use store capacity and recordings length to calc free capacity $obj->{CapacityTotal} = $totalDuration; @@ -832,8 +848,8 @@ sub insert { my $sth = $obj->{dbh}->prepare( qq| REPLACE INTO RECORDS - (eventid, RecordId, RecordMD5, Path, Prio, Lifetime, State, FileSize, Marks, Type, preview, addtime ) - VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW()) + (eventid, RecordId, RecordMD5, Path, Prio, Lifetime, State, FileSize, Marks, Type, preview, aux, addtime ) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,NOW()) |); $attr->{Marks} = "" @@ -850,7 +866,8 @@ sub insert { $attr->{FileSize}, $attr->{Marks}, $attr->{Type}, - $attr->{preview} + $attr->{preview}, + $attr->{aux} ); } @@ -959,7 +976,9 @@ sub analyze { eventid => $event->{eventid}, Type => $info->{type} || 'UNKNOWN', State => $recattr->{state}, - FileSize => $info->{FileSize} + FileSize => $info->{FileSize}, + aux => $info->{aux}, + keywords => $info->{keywords} }; $ret->{Marks} = join(',', @{$info->{marks}}) if(ref $info->{marks} eq 'ARRAY'); @@ -1079,6 +1098,24 @@ sub readinfo { $info->{audio} .= "\n" if($info->{audio}); $info->{audio} .= $1; } + elsif($zeile =~ /^@\s+(.+)$/s) { + $info->{aux} = $1; + $info->{aux} =~ s/\|/\r\n/g; # pipe used from vdr as linebreak + $info->{aux} =~ s/^\s+//; # no leading white space + $info->{aux} =~ s/\s+$//; # no trailing white space + + if($info->{aux} && $info->{aux} =~ /^<.*/ ) { + my $args = $obj->{xml}->XMLin($info->{aux}, KeepRoot => 1 ); + if(defined $args + && defined $args->{'xxv'} ) { + my $root = $args->{'xxv'}; +# $info->{keywords} = int($root->{'autotimer'}) +# if(defined $root->{'autotimer'} ); + $info->{keywords} = $root->{'keywords'} + if(defined $root->{'keywords'} ); + } + } + } } } return $info; @@ -1149,6 +1186,12 @@ sub saveinfo { } undef $info->{audio}; } + } + elsif($zeile =~ /^@\s+(.+)/s) { + if(defined $info->{aux} && $info->{aux}) { + $out .= "@ ". $info->{aux} . "\n" if($info->{aux}); + undef $info->{aux}; + } } else { $out .= $zeile . "\n" if($zeile); } @@ -1179,6 +1222,9 @@ sub saveinfo { $out .= "X 2 ". $line . "\n" if($line); } } + if(defined $info->{aux} && $info->{aux}) { + $out .= "@ ". $info->{aux} . "\n" if($info->{aux}); + } return save_file($file, $out); } @@ -1478,8 +1524,11 @@ where $_ =~ s/\s*\:.*$//; } @reccmds; + my ($keywords,$keywordmax,$keywordmin) = $obj->{keywords}->list('recording',[ $erg->{'RecordId'} ]); + my $param = { reccmds => \@reccmds, + keywords => $keywords }; $console->table($erg,$param); } @@ -1667,10 +1716,19 @@ ORDER BY __IsRecording asc, my $fields = $sth->{'NAME'}; my $erg = $sth->fetchall_arrayref(); + my $keywords; + my $keywordmax; + my $keywordmin; + unless($console->typ eq 'AJAX') { + my $md5; map { + push(@$md5,$_->[0]); $_->[5] = datum($_->[5],'short'); } @$erg; + + ($keywords,$keywordmax,$keywordmin) = $obj->{keywords}->list('recording',$md5); + unshift(@$erg, $fields); } @@ -1681,6 +1739,9 @@ ORDER BY __IsRecording asc, total => $obj->{CapacityTotal}, free => $obj->{CapacityFree}, previewcommand => $obj->{previewlistthumbs}, + keywords => $keywords, + keywordsmax => $keywordmax, + keywordsmin => $keywordmin, rows => $rows }; return $console->table($erg, $param); @@ -1696,8 +1757,21 @@ sub search { my $params = shift; my $query = buildsearch("e.title,e.subtitle,e.description",$text); - my $search = $query->{query}; - my $term = $query->{term}; + return $obj->_search($watcher,$console,$query->{query},$query->{term},$params); +} + +# ------------------ +sub _search { +# ------------------ + my $obj = shift || return error('No object defined!'); + my $watcher = shift; + my $console = shift; + my $search = shift; + my $term = shift; + my $params = shift; + my $tables = shift || ''; + + my %f = ( 'RecordMD5' => gettext('Index'), @@ -1725,6 +1799,7 @@ SELECT SQL_CACHE FROM RECORDS as r, OLDEPG as e + $tables WHERE e.eventid = r.eventid AND ( $search ) @@ -1776,10 +1851,19 @@ ORDER BY my $fields = $sth->{'NAME'}; my $erg = $sth->fetchall_arrayref(); + my $keywords; + my $keywordmax; + my $keywordmin; + unless($console->typ eq 'AJAX') { + my $md5; map { + push(@$md5,$_->[0]); $_->[5] = datum($_->[5],'short'); } @$erg; + + ($keywords,$keywordmax,$keywordmin) = $obj->{keywords}->list('recording',$md5); + unshift(@$erg, $fields); } @@ -1790,8 +1874,13 @@ ORDER BY total => $obj->{CapacityTotal}, free => $obj->{CapacityFree}, previewcommand => $obj->{previewcommand}, + keywords => $keywords, + keywordsmax => $keywordmax, + keywordsmin => $keywordmin, rows => $rows }; + + $console->setCall('rlist'); return $console->table($erg, $param); } @@ -1894,6 +1983,7 @@ sub delete { $sth->execute(@{$md5delete}) or return con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); + $obj->{keywords}->remove('recording',$md5delete); } $obj->readData($watcher,$console,$waiter) @@ -2032,6 +2122,15 @@ WHERE msg => gettext("Description"), def => $status->{description} || '', }, + 'aux' => { + typ => 'hidden', + def => $status->{aux}, + }, + 'keywords' => { + typ => 'string', + msg => gettext('Keywords'), + def => $status->{keywords}, + }, 'video' => { typ => 'textfield', msg => gettext('Video'), @@ -2066,6 +2165,7 @@ WHERE if($data->{title} ne $rec->{title} or $data->{description} ne $status->{description} or $data->{channel} ne $status->{channel} + or $data->{keywords} ne $status->{keywords} or $data->{video} ne $status->{video} or $data->{audio} ne $status->{audio}) { @@ -2077,9 +2177,27 @@ WHERE $info->{title} = join('~',@t); } + my $root = {}; + if(exists $info->{aux}) { + $info->{aux} =~ s/(\r|\n)//sg; + if($info->{aux} && $info->{aux} =~ /^<.*/ ) { + my $args = $obj->{xml}->XMLin($info->{aux}, KeepRoot => 1 ); + if(defined $args + && defined $args->{'xxv'} ) { + $root = $args->{'xxv'}; + } + } + } + #$root->{'autotimer'} = $data->{autotimerid} if($data->{autotimerid}); + $root->{'keywords'} = $info->{keywords} if($info->{keywords}); + if($root && keys %$root) { + $info->{aux} = $obj->{xml}->XMLout($root, RootName => 'xxv'); + } + $obj->saveinfo($rec->{Path},$info) or return con_err($console,sprintf(gettext("Couldn't write file '%s' : %s"),$rec->{Path} . '/info.vdr',$!)); + $ChangeRecordingData = 1 if($data->{keywords} ne $status->{keywords}); $dropEPGEntry = 1; } @@ -2152,6 +2270,8 @@ WHERE my $sth = $obj->{dbh}->prepare('DELETE FROM RECORDS WHERE RecordMD5 = ?'); $sth->execute($recordid) or return con_err($console,sprintf("Couldn't execute query: %s.",$sth->errstr)); + + $obj->{keywords}->remove('recording',\[$recordid]); } if($dropEPGEntry || $ChangeRecordingData) { @@ -2690,4 +2810,5 @@ sub image { } return $console->datei(sprintf('%s/%s_shot/%s.jpg', $obj->{previewimages}, $recordid, $frame)); } + 1; diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm index a53afe6..e5b949d 100644 --- a/lib/XXV/MODULES/TIMERS.pm +++ b/lib/XXV/MODULES/TIMERS.pm @@ -13,6 +13,8 @@ sub module { Name => 'TIMERS', Prereq => { 'Date::Manip' => 'date manipulation routines', + 'Digest::MD5 qw(md5_hex)' => 'Perl interface to the MD5 Algorithm', + 'XML::Simple' => 'Easy API to maintain XML (esp config files)' }, Description => gettext('This module reads timers and saves it to the database.'), Version => (split(/ /, '$Revision$'))[1], @@ -73,7 +75,7 @@ sub module { tsearch => { description => gettext("Search timers 'text'"), short => 'ts', - callback => sub{ $obj->list(@_) }, + callback => sub{ $obj->search(@_) }, DenyClass => 'tlist', }, tupdate => { @@ -313,9 +315,9 @@ sub module { my $timer = getDataById($i, 'TIMERS', 'pos'); my $level = 1; - if($timer->{autotimerid} and ($timer->{flags} & 1)) { + if($timer->{autotimerid} and ($timer->{flags} && $timer->{flags} & 1)) { $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 2 : 3); - } elsif($timer->{flags} & 1) { + } elsif($timer->{flags} && $timer->{flags} & 1) { $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 4 : 5); } @@ -372,7 +374,7 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; - # who am I + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) @@ -393,6 +395,9 @@ sub new { # read the DB Handle $self->{dbh} = delete $attr{'-dbh'}; + $self->{xml} = XML::Simple->new( NumericEscape => ($self->{charset} eq 'UTF-8' ? 0 : 1)) + || return error("Can't create XML instance!"); + # The Initprocess my $erg = $self->_init or return error('Problem to initialize modul!'); @@ -409,7 +414,7 @@ sub _init { return 0; } - my $version = 28; # Must be increment if rows of table changed + my $version = 29; # Must be increment if rows of table changed # this tables hasen't handmade user data, # therefore old table could dropped if updated rows if(!tableUpdated($obj->{dbh},'TIMERS',$version,1)) { @@ -451,6 +456,10 @@ sub _init { panic ("Couldn't get modul SVDRP"); return 0; } + $obj->{keywords} = main::getModule('KEYWORDS'); + unless($obj->{keywords}) { + return 0; + } # merge source from channels to enum typ of used DVB cards like S19.2E,S19.2E,T $obj->{MOD}->{Preferences}->{DVBCardsTyp}->{default} = $obj->_buildDVBCardsTyp(); @@ -512,7 +521,24 @@ sub _saveTimer { $data->{flags} |= ($data->{vps} eq 'y' ? 4 : 0); $data->{file} =~ s/(\r|\n)//sg; - $data->{aux} =~ s/(\r|\n)//sg if(exists $data->{aux}); + + # Add anchor for reidentify timer + my $root = {}; + if(exists $data->{aux}) { + $data->{aux} =~ s/(\r|\n)//sg; + if($data->{aux} && $data->{aux} =~ /^<.*/ ) { + my $args = $obj->{xml}->XMLin($data->{aux}, KeepRoot => 1 ); + if(defined $args + && defined $args->{'xxv'} ) { + $root = $args->{'xxv'}; + } + } + } + #$root->{'autotimer'} = $data->{autotimerid} if($data->{autotimerid}); + $root->{'keywords'} = $data->{keywords} if($data->{keywords}); + if($root && keys %$root) { + $data->{aux} = $obj->{xml}->XMLout($root, RootName => 'xxv'); + } my $file = $data->{file}; $file =~ s/:/|/g; @@ -654,9 +680,22 @@ WHERE $timerData = $data; } - $timerData->{aux} =~ s/(\r|\n)//sig - if(defined $timerData->{aux}); - + if(defined $timerData->{aux}) { + $timerData->{aux} =~ s/(\r|\n)//sig; + + $timerData->{keywords} = ''; + if($timerData->{aux} && $timerData->{aux} =~ /^<.*/ ) { + my $args = $obj->{xml}->XMLin($timerData->{aux}, KeepRoot => 1 ); + if(defined $args + && defined $args->{'xxv'} ) { + my $root = $args->{'xxv'}; +# $aid = int($root->{'autotimer'}) +# if(defined $root->{'autotimer'} ); + $timerData->{keywords} = $root->{'keywords'} + if(defined $root->{'keywords'} ); + } + } + } my $modC = main::getModule('CHANNELS'); my $con = $console->typ eq "CONSOLE"; @@ -806,6 +845,11 @@ WHERE } }, }, + 'keywords' => { + typ => 'string', + def => $timerData->{keywords}, + msg => gettext('Add keywords to recording'), + }, 'aux' => { typ => 'hidden', def => $timerData->{aux}, @@ -1054,7 +1098,7 @@ sub toggleTimer { # ------------------ sub _insert { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $timer = shift || return; my $checked = shift || 0; @@ -1070,15 +1114,11 @@ sub _insert { $timer->{file} =~ s/\|/\:/g; # NextTime - my $nexttime = $obj->getNextTime( $timer->{day}, $timer->{start}, $timer->{stop} ) + my $nexttime = $self->getNextTime( $timer->{day}, $timer->{start}, $timer->{stop} ) or return error(sprintf("Couldn't get time from this timer: %d '%s' '%s' '%s'", $timer->{pos}, $timer->{day}, $timer->{start}, $timer->{stop})); - # AutotimerId - my $atxt = (split('~', $timer->{aux}))[-1]; - my $aid = $1 if(defined $atxt and $atxt =~ /AT\[(\d+)\]/); - # Search for event at EPG - my $e = $obj->_getNextEpgId( { + my $e = $self->_getNextEpgId( { pos => $timer->{pos}, flags => $timer->{flags}, channel => $timer->{channel}, @@ -1087,12 +1127,27 @@ sub _insert { stop => $nexttime->{stop}, }); - my $sth = $obj->{dbh}->prepare( + # Tags + my $aid; + my $keywords; + if($timer->{aux} && $timer->{aux} =~ /^<.*/ ) { + my $args = $self->{xml}->XMLin($timer->{aux}, KeepRoot => 1 ); + if(defined $args + && defined $args->{'xxv'} ) { + my $root = $args->{'xxv'}; + $aid = int($root->{'autotimer'}) + if(defined $root->{'autotimer'} ); + $keywords = $root->{'keywords'} + if(defined $root->{'keywords'} ); + } + } + my $sth = $self->{dbh}->prepare( q|REPLACE INTO TIMERS VALUES - (MD5(CONCAT(?,?,?)),?,?,?,?,?,?,?,?,?,?,FROM_UNIXTIME(?), FROM_UNIXTIME(?),0,?,?,?,?,?,NOW()) + (?,?,?,?,?,?,?,?,?,?,?,FROM_UNIXTIME(?), FROM_UNIXTIME(?),0,?,?,?,?,?,NOW()) |); + my $id = md5_hex($timer->{channel} . $nexttime->{start} . $nexttime->{stop} ); $sth->execute( - $timer->{channel},$nexttime->{start},$nexttime->{stop}, + $id, $timer->{pos}, $timer->{flags}, $timer->{channel}, @@ -1111,8 +1166,9 @@ q|REPLACE INTO TIMERS VALUES $aid, $checked ) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); -} + $self->{keywords}->insert('timer',$id,$keywords); +} # Read data # ------------------ @@ -1129,6 +1185,7 @@ sub _readData { my $oldTimers = &getDataByTable('TIMERS'); $obj->{dbh}->do('DELETE FROM TIMERS'); + $obj->{keywords}->removesource('timer'); # read from svdrp my $tlist = $obj->{svdrp}->command('lstt'); @@ -1165,6 +1222,7 @@ sub _readData { # Get new timers by User if($oldTimers or exists $obj->{changedTimer}) { + my $timers = $obj->getNewTimers($oldTimers); foreach my $timerdata (@$timers) { event sprintf('New timer "%s" with id: "%d"', $timerdata->{file}, $timerdata->{pos}); @@ -1219,26 +1277,56 @@ sub updated { } } } + # ------------------ sub list { # ------------------ my $obj = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); my $console = shift || return error('No console defined!'); - my $text = shift || ''; + my $id = shift; + my $params = shift; my $term; - my $search = ''; - if($text and $text =~ /^[0-9a-f,_ ]+$/ and length($text) >= 32 ) { - my @timers = split(/[^0-9a-f]/, $text); + my $search; + if($id and $id =~ /^[0-9a-f,_ ]+$/ and length($id) >= 32 ) { + my @timers = split(/[^0-9a-f]/, $id); $search = sprintf(" AND t.id in (%s)",join(',' => ('?') x @timers)); foreach(@timers) { push(@{$term},$_); } - } elsif($text) { - my $query = buildsearch("t.file,(SELECT description FROM EPG as e WHERE t.eventid = e.eventid LIMIT 1)",$text); - $search = sprintf('AND ( %s )', $query->{query}); - foreach(@{$query->{term}}) { push(@{$term},$_); } } + return $obj->_list($watcher,$console,$search,$term,$params); +} + +# ------------------ +sub search { +# ------------------ + my $obj = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $text = shift || return $obj->list($watcher,$console); + my $params = shift; + + my $term; + my $search; + my $query = buildsearch("t.file,(SELECT description FROM EPG as e WHERE t.eventid = e.eventid LIMIT 1)",$text); + $search = sprintf('AND ( %s )', $query->{query}); + foreach(@{$query->{term}}) { push(@{$term},$_); } + + return $obj->_list($watcher,$console,$search,$term,$params); +} + +# ------------------ +sub _list { +# ------------------ + my $obj = shift || return error('No object defined!'); + my $watcher = shift; + my $console = shift; + my $search = shift || ''; + my $term = shift; + my $params = shift; + my $table = shift || ''; + my %f = ( 'id' => gettext('Service'), 'flags' => gettext('Status'), @@ -1273,6 +1361,7 @@ SELECT SQL_CACHE FROM TIMERS as t, CHANNELS as c + $table WHERE t.stoptime > NOW() AND t.channel = c.Id @@ -1312,20 +1401,33 @@ ORDER BY my $fields = $sth->{'NAME'}; my $erg = $sth->fetchall_arrayref(); + + my $keywords; + my $keywordmax; + my $keywordmin; + unless($console->typ eq 'AJAX') { + my $md5; map { + push(@$md5,$_->[0]); $_->[4] = datum($_->[4],'weekday'); } @$erg; + ($keywords,$keywordmax,$keywordmin) = $obj->{keywords}->list('timer',$md5); + unshift(@$erg, $fields); } my @DVBCARDS = split(',',$obj->{DVBCardsTyp}); my $cards = scalar @DVBCARDS; + $console->setCall('tlist'); $console->table($erg, { cards => $cards, capacity => main::getModule('RECORDS')->{CapacityFree}, + keywords => $keywords, + keywordsmax => $keywordmax, + keywordsmin => $keywordmin, rows => $rows }); } @@ -2064,6 +2166,3 @@ sub suggest { } 1; - - -1; diff --git a/locale/Makefile b/locale/Makefile index 0c2c232..fd1fa1f 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -24,6 +24,7 @@ MODULES = ../lib/XXV/MODULES/AUTOTIMER.pm \ ../lib/XXV/MODULES/HTTPD.pm \ ../lib/XXV/MODULES/INTERFACE.pm \ ../lib/XXV/MODULES/LOGREAD.pm \ + ../lib/XXV/MODULES/KEYWORDS.pm \ ../lib/XXV/MODULES/MEDIALIB.pm \ ../lib/XXV/MODULES/MOVETIMER.pm \ ../lib/XXV/MODULES/MUSIC.pm \ diff --git a/locale/de.po b/locale/de.po index 7dd6635..3ad8b91 100644 --- a/locale/de.po +++ b/locale/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: XXV 1.3\n" "POT-Creation-Date: 2005-01-12 18:55\n" -"PO-Revision-Date: 2008-05-15 17:10+0200\n" +"PO-Revision-Date: 2008-06-14 08:07+0200\n" "Last-Translator: Andreas Brachold <anbr at users.berlios.de>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" @@ -59,7 +59,7 @@ msgid "Data source for the connection to the database" msgstr "Name der Datenquelle für die Verbindung zur Datenbank" #-------------------- -#: ../bin/xxvd:718 ../bin/xxvd:724 ../bin/xxvd:730 ../bin/xxvd:745 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:705 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHANNELS.pm:792 ../lib/XXV/MODULES/CHANNELS.pm:818 ../lib/XXV/MODULES/CHANNELS.pm:831 ../lib/XXV/MODULES/CHANNELS.pm:870 ../lib/XXV/MODULES/CHANNELS.pm:896 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:33 ../lib/XXV/MODULES/EPG.pm:39 ../lib/XXV/MODULES/EPG.pm:45 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:29 ../lib/XXV/MODULES/GRAB.pm:43 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:93 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MEDIALIB.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:56 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:389 ../lib/XXV/MODULES/MOVETIMER.pm:402 ../lib/XXV/MODULES/MOVETIMER.pm:411 ../lib/XXV/MODULES/MOVETIMER.pm:424 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:1979 ../lib/XXV/MODULES/RECORDS.pm:1993 ../lib/XXV/MODULES/RECORDS.pm:2007 ../lib/XXV/MODULES/RECORDS.pm:2026 ../lib/XXV/MODULES/RECORDS.pm:2551 ../lib/XXV/MODULES/RECORDS.pm:2563 ../lib/XXV/MODULES/RECORDS.pm:39 ../lib/XXV/MODULES/RECORDS.pm:45 ../lib/XXV/MODULES/RECORDS.pm:51 ../lib/XXV/MODULES/RECORDS.pm:57 ../lib/XXV/MODULES/RECORDS.pm:63 ../lib/XXV/MODULES/RECORDS.pm:75 ../lib/XXV/MODULES/RECORDS.pm:91 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:29 ../lib/XXV/MODULES/REPORT.pm:45 ../lib/XXV/MODULES/ROBOT.pm:28 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STATUS.pm:48 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/STREAM.pm:42 ../lib/XXV/MODULES/STREAM.pm:63 ../lib/XXV/MODULES/STREAM.pm:76 ../lib/XXV/MODULES/STREAM.pm:82 ../lib/XXV/MODULES/STREAM.pm:96 ../lib/XXV/MODULES/SVDRP.pm:29 ../lib/XXV/MODULES/SVDRP.pm:35 ../lib/XXV/MODULES/SVDRP.pm:41 ../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:28 ../lib/XXV/MODULES/TIMERS.pm:681 ../lib/XXV/MODULES/TIMERS.pm:688 ../lib/XXV/MODULES/TIMERS.pm:691 ../lib/XXV/MODULES/TIMERS.pm:716 ../lib/XXV/MODULES/USER.pm:275 ../lib/XXV/MODULES/USER.pm:367 ../lib/XXV/MODULES/USER.pm:373 ../lib/XXV/MODULES/USER.pm:398 ../lib/XXV/MODULES/USER.pm:67 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:506 ../lib/XXV/MODULES/XMLTV.pm:519 ../lib/XXV/MODULES/XMLTV.pm:532 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:116 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:122 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:128 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:68 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:98 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:106 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:63 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:81 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:95 ../lib/XXV/OUTPUT/NEWS/RSS.pm:32 ../lib/XXV/OUTPUT/NEWS/RSS.pm:62 ../lib/XXV/OUTPUT/NEWS/VDR.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:59 +#: ../bin/xxvd:718 ../bin/xxvd:724 ../bin/xxvd:730 ../bin/xxvd:745 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:714 ../lib/XXV/MODULES/CHANNELS.pm:1005 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHANNELS.pm:901 ../lib/XXV/MODULES/CHANNELS.pm:927 ../lib/XXV/MODULES/CHANNELS.pm:940 ../lib/XXV/MODULES/CHANNELS.pm:979 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:33 ../lib/XXV/MODULES/EPG.pm:39 ../lib/XXV/MODULES/EPG.pm:45 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:29 ../lib/XXV/MODULES/GRAB.pm:43 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:93 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/KEYWORDS.pm:27 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MEDIALIB.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:56 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:389 ../lib/XXV/MODULES/MOVETIMER.pm:402 ../lib/XXV/MODULES/MOVETIMER.pm:411 ../lib/XXV/MODULES/MOVETIMER.pm:424 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:2069 ../lib/XXV/MODULES/RECORDS.pm:2083 ../lib/XXV/MODULES/RECORDS.pm:2097 ../lib/XXV/MODULES/RECORDS.pm:2116 ../lib/XXV/MODULES/RECORDS.pm:2671 ../lib/XXV/MODULES/RECORDS.pm:2683 ../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:29 ../lib/XXV/MODULES/REPORT.pm:45 ../lib/XXV/MODULES/ROBOT.pm:28 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STATUS.pm:48 ../lib/XXV/MODULES/STREAM.pm:107 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/STREAM.pm:42 ../lib/XXV/MODULES/STREAM.pm:63 ../lib/XXV/MODULES/STREAM.pm:69 ../lib/XXV/MODULES/STREAM.pm:87 ../lib/XXV/MODULES/STREAM.pm:93 ../lib/XXV/MODULES/SVDRP.pm:29 ../lib/XXV/MODULES/SVDRP.pm:35 ../lib/XXV/MODULES/SVDRP.pm:41 ../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:30 ../lib/XXV/MODULES/TIMERS.pm:720 ../lib/XXV/MODULES/TIMERS.pm:727 ../lib/XXV/MODULES/TIMERS.pm:730 ../lib/XXV/MODULES/TIMERS.pm:755 ../lib/XXV/MODULES/USER.pm:275 ../lib/XXV/MODULES/USER.pm:367 ../lib/XXV/MODULES/USER.pm:373 ../lib/XXV/MODULES/USER.pm:398 ../lib/XXV/MODULES/USER.pm:67 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:506 ../lib/XXV/MODULES/XMLTV.pm:519 ../lib/XXV/MODULES/XMLTV.pm:532 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:116 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:122 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:128 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:68 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:98 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:106 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:63 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:81 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:95 ../lib/XXV/OUTPUT/NEWS/RSS.pm:32 ../lib/XXV/OUTPUT/NEWS/RSS.pm:62 ../lib/XXV/OUTPUT/NEWS/VDR.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:59 msgid "This is required!" msgstr "Das ist erforderlich!" @@ -94,62 +94,62 @@ msgid "Call initialization script to restart the xxv system." msgstr "Rufe den Initialisierung-Skript auf, um das xxv-System neuzustarten." #-------------------- -#: ../html/alist.tmpl:2 ../html/asearch.tmpl:2 +#: ../html/alist.tmpl:2 msgid "Wished automated recordings" msgstr "Gewünschte automatische Aufnahmen" #-------------------- -#: ../html/alist.tmpl:45 ../html/asearch.tmpl:45 ../html/tlist.tmpl:94 ../html/tsearch.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1012 +#: ../html/alist.tmpl:45 ../html/tlist.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1026 msgid "Edit autotimer" msgstr "Autotimer bearbeiten" #-------------------- -#: ../html/alist.tmpl:46 ../html/asearch.tmpl:46 ../html/mlnavcontainer.tmpl:16 ../html/next.tmpl:66 ../html/now.tmpl:66 ../html/ulist.tmpl:27 ../wml/tlist.tmpl:46 ../wml/tsearch.tmpl:46 +#: ../html/alist.tmpl:46 ../html/mlnavcontainer.tmpl:16 ../html/next.tmpl:66 ../html/now.tmpl:66 ../html/ulist.tmpl:27 ../wml/tlist.tmpl:46 ../wml/tsearch.tmpl:46 msgid "Edit" msgstr "Ändern" #-------------------- -#: ../html/alist.tmpl:49 ../html/asearch.tmpl:49 +#: ../html/alist.tmpl:49 msgid "Delete autotimer" msgstr "Lösche Autotimer" #-------------------- -#: ../html/alist.tmpl:5 ../html/asearch.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:1013 ../lib/XXV/MODULES/AUTOTIMER.pm:54 +#: ../html/alist.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:1027 ../lib/XXV/MODULES/AUTOTIMER.pm:55 msgid "Create new autotimer" msgstr "Neuer Autotimer" #-------------------- -#: ../html/alist.tmpl:50 ../html/asearch.tmpl:50 +#: ../html/alist.tmpl:50 msgid "Would you like to delete this autotimer?" msgstr "Wollen Sie diese Autotimer löschen?" #-------------------- -#: ../html/alist.tmpl:51 ../html/asearch.tmpl:51 ../html/ulist.tmpl:30 +#: ../html/alist.tmpl:51 ../html/ulist.tmpl:30 msgid "Del" msgstr "Lösch" #-------------------- -#: ../html/alist.tmpl:57 ../html/asearch.tmpl:57 ../html/tlist.tmpl:88 ../html/tsearch.tmpl:88 ../wml/tlist.tmpl:33 ../wml/tsearch.tmpl:33 +#: ../html/alist.tmpl:57 ../html/tlist.tmpl:88 ../wml/tlist.tmpl:33 ../wml/tsearch.tmpl:33 msgid "Off" msgstr "Aus" #-------------------- -#: ../html/alist.tmpl:58 ../html/asearch.tmpl:58 ../html/tlist.tmpl:89 ../html/tsearch.tmpl:89 ../wml/tlist.tmpl:33 ../wml/tsearch.tmpl:33 +#: ../html/alist.tmpl:58 ../html/tlist.tmpl:89 ../wml/tlist.tmpl:33 ../wml/tsearch.tmpl:33 msgid "On" msgstr "An" #-------------------- -#: ../html/alist.tmpl:7 ../html/asearch.tmpl:7 +#: ../html/alist.tmpl:7 msgid "Search in autotimer" msgstr "Suche in Autotimern" #-------------------- -#: ../html/alist.tmpl:7 ../html/asearch.tmpl:7 ../html/search.tmpl:21 +#: ../html/alist.tmpl:7 ../html/search.tmpl:21 msgid "Search text" msgstr "Suchtext" #-------------------- -#: ../html/alist.tmpl:9 ../html/asearch.tmpl:9 +#: ../html/alist.tmpl:9 msgid "Search autotimer" msgstr "Suche Autotimer" @@ -169,17 +169,17 @@ msgid "Search for channels" msgstr "Suche nach Kanälen" #-------------------- -#: ../html/clist.tmpl:118 ../html/mlist.tmpl:53 ../html/mlsearch.tmpl:37 ../html/movetimerlist.tmpl:73 ../html/rlist.tmpl:265 ../html/rsearch.tmpl:265 ../html/search.tmpl:89 ../html/tlist.tmpl:141 ../html/tsearch.tmpl:141 +#: ../html/clist.tmpl:118 ../html/mlist.tmpl:53 ../html/mlsearch.tmpl:37 ../html/movetimerlist.tmpl:73 ../html/rlist.tmpl:265 ../html/search.tmpl:89 ../html/tlist.tmpl:141 msgid "Select all" msgstr "Alles auswählen" #-------------------- -#: ../html/clist.tmpl:119 ../html/mlist.tmpl:54 ../html/movetimerlist.tmpl:74 ../html/rlist.tmpl:266 ../html/rsearch.tmpl:266 ../html/search.tmpl:90 ../html/tlist.tmpl:142 ../html/tsearch.tmpl:142 +#: ../html/clist.tmpl:119 ../html/mlist.tmpl:54 ../html/movetimerlist.tmpl:74 ../html/rlist.tmpl:266 ../html/search.tmpl:90 ../html/tlist.tmpl:142 msgid "Unselect all" msgstr "Auswahl aufheben" #-------------------- -#: ../html/clist.tmpl:120 ../html/mlist.tmpl:55 ../html/movetimerlist.tmpl:75 ../html/rlist.tmpl:267 ../html/rsearch.tmpl:267 ../html/search.tmpl:91 ../html/tlist.tmpl:143 ../html/tsearch.tmpl:143 +#: ../html/clist.tmpl:120 ../html/mlist.tmpl:55 ../html/movetimerlist.tmpl:75 ../html/rlist.tmpl:267 ../html/search.tmpl:91 ../html/tlist.tmpl:143 msgid "Reverse select" msgstr "Auswahl umkehren" @@ -189,7 +189,7 @@ msgid "Would you like to delete these channels?" msgstr "Wollen Sie diese Kanäle löschen?" #-------------------- -#: ../html/clist.tmpl:122 ../html/mlist.tmpl:40 ../html/movetimerlist.tmpl:64 ../html/rlist.tmpl:123 ../html/rsearch.tmpl:123 ../html/search.tmpl:86 ../html/tlist.tmpl:22 ../html/tlist.tmpl:28 ../html/tsearch.tmpl:22 ../html/tsearch.tmpl:28 +#: ../html/clist.tmpl:122 ../html/mlist.tmpl:40 ../html/movetimerlist.tmpl:64 ../html/rlist.tmpl:123 ../html/search.tmpl:86 ../html/tlist.tmpl:22 ../html/tlist.tmpl:28 msgid "Nothing selected!" msgstr "Sie haben nicht gewählt!" @@ -199,17 +199,17 @@ msgid "Delete channels" msgstr "Kanäle löschen" #-------------------- -#: ../html/clist.tmpl:134 ../lib/XXV/MODULES/CHANNELS.pm:452 ../lib/XXV/MODULES/CHANNELS.pm:786 ../lib/XXV/MODULES/USER.pm:533 ../lib/XXV/OUTPUT/Console.pm:170 ../lib/XXV/OUTPUT/Console.pm:233 +#: ../html/clist.tmpl:134 ../lib/XXV/MODULES/CHANNELS.pm:570 ../lib/XXV/MODULES/CHANNELS.pm:895 ../lib/XXV/MODULES/USER.pm:533 ../lib/XXV/OUTPUT/Console.pm:170 ../lib/XXV/OUTPUT/Console.pm:233 msgid "Name" msgstr "Name" #-------------------- -#: ../html/clist.tmpl:135 ../lib/XXV/MODULES/CHANNELS.pm:453 ../lib/XXV/MODULES/CHANNELS.pm:798 +#: ../html/clist.tmpl:135 ../lib/XXV/MODULES/CHANNELS.pm:571 ../lib/XXV/MODULES/CHANNELS.pm:907 msgid "Transponder frequency" msgstr "Frequenz des Transponder" #-------------------- -#: ../html/clist.tmpl:136 ../lib/XXV/MODULES/CHANNELS.pm:825 +#: ../html/clist.tmpl:136 ../lib/XXV/MODULES/CHANNELS.pm:934 msgid "Various parameters, depending on signal source" msgstr "Verschiedene Parameter, abhängig von der Signalquelle" @@ -219,22 +219,22 @@ msgid "Source" msgstr "Quelle" #-------------------- -#: ../html/clist.tmpl:138 ../lib/XXV/MODULES/CHANNELS.pm:850 +#: ../html/clist.tmpl:138 ../lib/XXV/MODULES/CHANNELS.pm:959 msgid "Video PID (VPID)" msgstr "Video PID (VPID)" #-------------------- -#: ../html/clist.tmpl:139 ../lib/XXV/MODULES/CHANNELS.pm:864 +#: ../html/clist.tmpl:139 ../lib/XXV/MODULES/CHANNELS.pm:973 msgid "Audio PID (APID)" msgstr "Audio PID (APID)" #-------------------- -#: ../html/clist.tmpl:140 ../lib/XXV/MODULES/CHANNELS.pm:876 +#: ../html/clist.tmpl:140 ../lib/XXV/MODULES/CHANNELS.pm:985 msgid "Teletext PID (TPID)" msgstr "Videotext PID (TPID)" #-------------------- -#: ../html/clist.tmpl:141 ../lib/XXV/MODULES/CHANNELS.pm:890 +#: ../html/clist.tmpl:141 ../lib/XXV/MODULES/CHANNELS.pm:999 msgid "Conditional access (CA)" msgstr "Zugangsberechtigungssystem (CA)" @@ -244,12 +244,12 @@ msgid "Switch to channel" msgstr "Schalte zum Kanal" #-------------------- -#: ../html/clist.tmpl:36 ../lib/XXV/MODULES/CHANNELS.pm:956 +#: ../html/clist.tmpl:36 ../lib/XXV/MODULES/CHANNELS.pm:1065 msgid "Edit channel" msgstr "Kanal bearbeiten" #-------------------- -#: ../html/clist.tmpl:39 ../lib/XXV/MODULES/CHANNELS.pm:1061 +#: ../html/clist.tmpl:39 ../lib/XXV/MODULES/CHANNELS.pm:1170 msgid "Would you like to delete this channel?" msgstr "Wollen Sie diesen Kanal löschen?" @@ -259,7 +259,7 @@ msgid "Delete channel" msgstr "Kanal löschen" #-------------------- -#: ../html/clist.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1161 ../lib/XXV/MODULES/CHANNELS.pm:390 +#: ../html/clist.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1175 ../lib/XXV/MODULES/CHANNELS.pm:452 msgid "Channels" msgstr "Kanäle" @@ -279,22 +279,22 @@ msgid "Percent" msgstr "Prozent" #-------------------- -#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:179 ../lib/XXV/MODULES/AUTOTIMER.pm:454 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1040 ../lib/XXV/MODULES/EPG.pm:1171 ../lib/XXV/MODULES/EPG.pm:678 ../lib/XXV/MODULES/EPG.pm:804 ../lib/XXV/MODULES/EPG.pm:914 ../lib/XXV/MODULES/RECORDS.pm:2017 ../lib/XXV/MODULES/SHARE.pm:345 ../lib/XXV/MODULES/TIMERS.pm:1246 ../lib/XXV/MODULES/TIMERS.pm:909 ../lib/XXV/MODULES/XMLTV.pm:677 +#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:180 ../lib/XXV/MODULES/AUTOTIMER.pm:457 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1040 ../lib/XXV/MODULES/EPG.pm:1171 ../lib/XXV/MODULES/EPG.pm:678 ../lib/XXV/MODULES/EPG.pm:804 ../lib/XXV/MODULES/EPG.pm:914 ../lib/XXV/MODULES/RECORDS.pm:2107 ../lib/XXV/MODULES/SHARE.pm:345 ../lib/XXV/MODULES/TIMERS.pm:1334 ../lib/XXV/MODULES/TIMERS.pm:953 ../lib/XXV/MODULES/XMLTV.pm:677 msgid "Channel" msgstr "Kanal" #-------------------- -#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1158 ../lib/XXV/MODULES/CHANNELS.pm:451 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1038 ../lib/XXV/MODULES/EPG.pm:1169 ../lib/XXV/MODULES/EPG.pm:676 ../lib/XXV/MODULES/EPG.pm:802 ../lib/XXV/MODULES/EPG.pm:911 ../lib/XXV/MODULES/MOVETIMER.pm:552 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:343 ../lib/XXV/MODULES/TIMERS.pm:1243 ../lib/XXV/MODULES/USER.pm:532 ../lib/XXV/MODULES/XMLTV.pm:675 +#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1172 ../lib/XXV/MODULES/CHANNELS.pm:569 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1038 ../lib/XXV/MODULES/EPG.pm:1169 ../lib/XXV/MODULES/EPG.pm:676 ../lib/XXV/MODULES/EPG.pm:802 ../lib/XXV/MODULES/EPG.pm:911 ../lib/XXV/MODULES/MOVETIMER.pm:552 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:343 ../lib/XXV/MODULES/TIMERS.pm:1331 ../lib/XXV/MODULES/USER.pm:532 ../lib/XXV/MODULES/XMLTV.pm:675 msgid "Service" msgstr "Service" #-------------------- -#: ../html/display.tmpl:29 ../html/tlist.tmpl:78 ../html/tsearch.tmpl:78 +#: ../html/display.tmpl:29 ../html/tlist.tmpl:78 msgid "Search for repeats" msgstr "Suchen nach Wiederholungen" #-------------------- -#: ../html/display.tmpl:31 ../html/program.tmpl:76 ../html/tlist.tmpl:80 ../html/tsearch.tmpl:80 ../wml/next.tmpl:17 ../wml/now.tmpl:17 ../wml/program.tmpl:48 ../wml/search.tmpl:19 +#: ../html/display.tmpl:31 ../html/program.tmpl:76 ../html/tlist.tmpl:80 ../wml/next.tmpl:17 ../wml/now.tmpl:17 ../wml/program.tmpl:48 ../wml/search.tmpl:19 msgid "Edit this timer" msgstr "Diesen Timer bearbeiten" @@ -314,22 +314,22 @@ msgid "Search with OFDb" msgstr "Suche mit OFDb" #-------------------- -#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:463 ../lib/XXV/MODULES/AUTOTIMER.pm:667 ../lib/XXV/MODULES/EPG.pm:917 ../lib/XXV/MODULES/RECORDS.pm:2032 ../lib/XXV/MODULES/RECORDS.pm:2218 ../lib/XXV/MODULES/TIMERS.pm:814 ../lib/XXV/OUTPUT/Console.pm:171 +#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:466 ../lib/XXV/MODULES/AUTOTIMER.pm:676 ../lib/XXV/MODULES/EPG.pm:917 ../lib/XXV/MODULES/RECORDS.pm:2122 ../lib/XXV/MODULES/RECORDS.pm:2338 ../lib/XXV/MODULES/TIMERS.pm:858 ../lib/XXV/OUTPUT/Console.pm:171 msgid "Description" msgstr "Beschreibung" #-------------------- -#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:180 ../lib/XXV/MODULES/AUTOTIMER.pm:457 ../lib/XXV/MODULES/AUTOTIMER.pm:460 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1041 ../lib/XXV/MODULES/EPG.pm:1172 ../lib/XXV/MODULES/EPG.pm:679 ../lib/XXV/MODULES/EPG.pm:805 ../lib/XXV/MODULES/EPG.pm:915 ../lib/XXV/MODULES/SHARE.pm:346 ../lib/XXV/MODULES/TIMERS.pm:1247 ../lib/XXV/MODULES/TIMERS.pm:910 +#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:181 ../lib/XXV/MODULES/AUTOTIMER.pm:460 ../lib/XXV/MODULES/AUTOTIMER.pm:463 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1041 ../lib/XXV/MODULES/EPG.pm:1172 ../lib/XXV/MODULES/EPG.pm:679 ../lib/XXV/MODULES/EPG.pm:805 ../lib/XXV/MODULES/EPG.pm:915 ../lib/XXV/MODULES/SHARE.pm:346 ../lib/XXV/MODULES/TIMERS.pm:1335 ../lib/XXV/MODULES/TIMERS.pm:954 msgid "Start" msgstr "Start" #-------------------- -#: ../html/display.tmpl:73 ../html/tlist.tmpl:92 ../html/tlist.tmpl:98 ../html/tsearch.tmpl:92 ../html/tsearch.tmpl:98 +#: ../html/display.tmpl:73 ../html/tlist.tmpl:92 ../html/tlist.tmpl:98 msgid "PDC" msgstr "VPS" #-------------------- -#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:181 ../lib/XXV/MODULES/AUTOTIMER.pm:458 ../lib/XXV/MODULES/AUTOTIMER.pm:461 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1042 ../lib/XXV/MODULES/EPG.pm:1173 ../lib/XXV/MODULES/EPG.pm:680 ../lib/XXV/MODULES/EPG.pm:806 ../lib/XXV/MODULES/EPG.pm:916 ../lib/XXV/MODULES/SHARE.pm:347 ../lib/XXV/MODULES/TIMERS.pm:1248 +#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:182 ../lib/XXV/MODULES/AUTOTIMER.pm:461 ../lib/XXV/MODULES/AUTOTIMER.pm:464 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1042 ../lib/XXV/MODULES/EPG.pm:1173 ../lib/XXV/MODULES/EPG.pm:680 ../lib/XXV/MODULES/EPG.pm:806 ../lib/XXV/MODULES/EPG.pm:916 ../lib/XXV/MODULES/SHARE.pm:347 ../lib/XXV/MODULES/TIMERS.pm:1336 msgid "Stop" msgstr "Stopp" @@ -529,7 +529,7 @@ msgid "Edit channels" msgstr "Kanäle bearbeiten" #-------------------- -#: ../html/help.tmpl:93 ../html/widgets/player.tmpl:105 ../html/widgets/player.tmpl:69 ../lib/XXV/MODULES/HTTPD.pm:654 ../lib/XXV/MODULES/TIMERS.pm:1244 ../lib/XXV/MODULES/WAPD.pm:83 +#: ../html/help.tmpl:93 ../html/widgets/player.tmpl:105 ../html/widgets/player.tmpl:69 ../lib/XXV/MODULES/HTTPD.pm:654 ../lib/XXV/MODULES/TIMERS.pm:1332 ../lib/XXV/MODULES/WAPD.pm:83 msgid "Status" msgstr "Status" @@ -684,7 +684,7 @@ msgid "Save" msgstr "Speichern" #-------------------- -#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:177 ../lib/XXV/MODULES/AUTOTIMER.pm:451 ../lib/XXV/MODULES/AUTOTIMER.pm:665 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1039 ../lib/XXV/MODULES/EPG.pm:1170 ../lib/XXV/MODULES/EPG.pm:677 ../lib/XXV/MODULES/EPG.pm:803 ../lib/XXV/MODULES/EPG.pm:912 ../lib/XXV/MODULES/MEDIALIB.pm:1294 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1592 ../lib/XXV/MODULES/RECORDS.pm:1704 ../lib/XXV/MODULES/SHARE.pm:344 ../lib/XXV/MODULES/TIMERS.pm:1249 ../lib/XXV/MODULES/TIMERS.pm:908 +#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:178 ../lib/XXV/MODULES/AUTOTIMER.pm:454 ../lib/XXV/MODULES/AUTOTIMER.pm:674 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1039 ../lib/XXV/MODULES/EPG.pm:1170 ../lib/XXV/MODULES/EPG.pm:677 ../lib/XXV/MODULES/EPG.pm:803 ../lib/XXV/MODULES/EPG.pm:912 ../lib/XXV/MODULES/MEDIALIB.pm:1294 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1641 ../lib/XXV/MODULES/RECORDS.pm:1778 ../lib/XXV/MODULES/SHARE.pm:344 ../lib/XXV/MODULES/TIMERS.pm:1337 ../lib/XXV/MODULES/TIMERS.pm:952 msgid "Title" msgstr "Titel" @@ -694,7 +694,7 @@ msgid "Search at" msgstr "Suche bei" #-------------------- -#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:452 ../lib/XXV/MODULES/AUTOTIMER.pm:666 ../lib/XXV/MODULES/EPG.pm:913 ../lib/XXV/MODULES/MEDIALIB.pm:1295 ../lib/XXV/MODULES/RECORDS.pm:1593 ../lib/XXV/MODULES/RECORDS.pm:1705 +#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:455 ../lib/XXV/MODULES/AUTOTIMER.pm:675 ../lib/XXV/MODULES/EPG.pm:913 ../lib/XXV/MODULES/MEDIALIB.pm:1295 ../lib/XXV/MODULES/RECORDS.pm:1642 ../lib/XXV/MODULES/RECORDS.pm:1779 msgid "Subtitle" msgstr "Serientitel" @@ -779,7 +779,7 @@ msgid "Albums" msgstr "Alben" #-------------------- -#: ../html/mlist.tmpl:24 ../html/mlnavcontainer.tmpl:28 ../html/mlsearch.tmpl:46 ../html/search.tmpl:75 ../html/widgets/vtx.tmpl:28 ../lib/XXV/MODULES/AUTOTIMER.pm:1160 ../wml/next.tmpl:15 ../wml/now.tmpl:15 ../wml/program.tmpl:43 ../wml/search.tmpl:17 +#: ../html/mlist.tmpl:24 ../html/mlnavcontainer.tmpl:28 ../html/mlsearch.tmpl:46 ../html/search.tmpl:75 ../html/widgets/vtx.tmpl:28 ../lib/XXV/MODULES/AUTOTIMER.pm:1174 ../wml/next.tmpl:15 ../wml/now.tmpl:15 ../wml/program.tmpl:43 ../wml/search.tmpl:17 msgid "Search" msgstr "Suche" @@ -809,7 +809,7 @@ msgid "Artists" msgstr "Künstler" #-------------------- -#: ../html/mlist.tmpl:72 ../html/tlist.tmpl:51 ../html/tsearch.tmpl:51 +#: ../html/mlist.tmpl:72 ../html/tlist.tmpl:51 #. (7) msgid "Selection" msgstr "Auswählen" @@ -845,7 +845,7 @@ msgid "Delete" msgstr "Löschen" #-------------------- -#: ../html/mlnavcontainer.tmpl:25 ../html/rlist.tmpl:137 ../html/rlist.tmpl:141 ../html/rlist.tmpl:142 ../html/rsearch.tmpl:137 ../html/rsearch.tmpl:141 ../html/rsearch.tmpl:142 ../html/widgets/remote.tmpl:110 +#: ../html/mlnavcontainer.tmpl:25 ../html/rlist.tmpl:137 ../html/rlist.tmpl:141 ../html/rlist.tmpl:142 ../html/widgets/remote.tmpl:110 msgid "Back" msgstr "Zurück" @@ -1028,32 +1028,37 @@ msgid "Choose a command to edit this recording ..." msgstr "Wählen Sie einen Befehl zum Bearbeiten der Aufnahme ..." #-------------------- -#: ../html/rdisplay.tmpl:117 ../html/rlist.tmpl:19 ../html/rsearch.tmpl:19 +#: ../html/rdisplay.tmpl:117 ../html/rlist.tmpl:19 msgid "Radio recording" msgstr "Radioaufnahme" #-------------------- -#: ../html/rdisplay.tmpl:123 ../html/rdisplay.tmpl:129 ../html/rlist.tmpl:23 ../html/rlist.tmpl:25 ../html/rsearch.tmpl:23 ../html/rsearch.tmpl:25 +#: ../html/rdisplay.tmpl:123 ../html/rdisplay.tmpl:129 ../html/rlist.tmpl:23 ../html/rlist.tmpl:25 msgid "Television recording" msgstr "Fernsehaufnahme" #-------------------- -#: ../html/rdisplay.tmpl:134 ../html/rlist.tmpl:187 ../html/rlist.tmpl:212 ../html/rlist.tmpl:60 ../html/rlist.tmpl:86 ../html/rsearch.tmpl:187 ../html/rsearch.tmpl:212 ../html/rsearch.tmpl:60 ../html/rsearch.tmpl:86 +#: ../html/rdisplay.tmpl:134 ../html/rlist.tmpl:187 ../html/rlist.tmpl:212 ../html/rlist.tmpl:60 ../html/rlist.tmpl:86 msgid "New recording" msgstr "Neue Aufnahme" #-------------------- -#: ../html/rdisplay.tmpl:165 +#: ../html/rdisplay.tmpl:167 ../lib/XXV/MODULES/RECORDS.pm:2131 +msgid "Keywords" +msgstr "Stichwörter" + +#-------------------- +#: ../html/rdisplay.tmpl:184 msgid "Lifetime" msgstr "Lebenszeit" #-------------------- -#: ../html/rdisplay.tmpl:171 ../lib/XXV/MODULES/AUTOTIMER.pm:182 ../lib/XXV/MODULES/TIMERS.pm:1250 +#: ../html/rdisplay.tmpl:190 ../lib/XXV/MODULES/AUTOTIMER.pm:183 ../lib/XXV/MODULES/TIMERS.pm:1338 msgid "Priority" msgstr "Priorität" #-------------------- -#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../html/rsearch.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1594 ../lib/XXV/MODULES/RECORDS.pm:1706 +#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1643 ../lib/XXV/MODULES/RECORDS.pm:1780 msgid "Duration" msgstr "Dauer" @@ -1063,7 +1068,7 @@ msgid "Recording list" msgstr "Aufnahmeliste" #-------------------- -#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1843 +#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1932 msgid "Would you like to delete this recording?" msgstr "Wollen Sie diese Aufnahme löschen?" @@ -1078,7 +1083,7 @@ msgid "Cut recording" msgstr "Aufnahme schneiden" #-------------------- -#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2052 +#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2151 msgid "Edit recording" msgstr "Aufnahme bearbeiten" @@ -1103,57 +1108,57 @@ msgid "Report for module" msgstr "Bericht für Modul" #-------------------- -#: ../html/rlist.tmpl:113 ../html/rsearch.tmpl:113 +#: ../html/rlist.tmpl:113 msgid "Stored recordings" msgstr "Gespeicherte Aufnahmen" #-------------------- -#: ../html/rlist.tmpl:120 ../html/rsearch.tmpl:120 ../lib/XXV/MODULES/RECORDS.pm:119 +#: ../html/rlist.tmpl:120 ../lib/XXV/MODULES/RECORDS.pm:120 msgid "Update recordings" msgstr "Lese die Aufnahmeliste neu ein" #-------------------- -#: ../html/rlist.tmpl:122 ../html/rsearch.tmpl:122 +#: ../html/rlist.tmpl:122 msgid "Would you like to delete these recordings?" msgstr "Wollen Sie diese Aufnahmen löschen?" #-------------------- -#: ../html/rlist.tmpl:124 ../html/rsearch.tmpl:124 +#: ../html/rlist.tmpl:124 msgid "Delete recordings" msgstr "Aufnahmen löschen" #-------------------- -#: ../html/rlist.tmpl:127 ../html/rsearch.tmpl:127 ../lib/XXV/MODULES/RECORDS.pm:133 +#: ../html/rlist.tmpl:127 ../lib/XXV/MODULES/RECORDS.pm:134 msgid "Recover deleted recordings" msgstr "Gelöschte Aufnahmen wiederherstellen" #-------------------- -#: ../html/rlist.tmpl:129 ../html/rsearch.tmpl:129 +#: ../html/rlist.tmpl:129 msgid "Search for recordings" msgstr "Suche nach Aufnahmen" #-------------------- -#: ../html/rlist.tmpl:191 ../html/rlist.tmpl:64 ../html/rsearch.tmpl:191 ../html/rsearch.tmpl:64 +#: ../html/rlist.tmpl:191 ../html/rlist.tmpl:64 msgid "more recordings" msgstr "weitere Aufnahmen" #-------------------- -#: ../html/rlist.tmpl:238 ../html/rsearch.tmpl:238 +#: ../html/rlist.tmpl:238 msgid "Sorting" msgstr "Sortierung" #-------------------- -#: ../html/rlist.tmpl:37 ../html/rsearch.tmpl:37 +#: ../html/rlist.tmpl:37 msgid "total time" msgstr "Gesamtzeit" #-------------------- -#: ../html/rlist.tmpl:45 ../html/rsearch.tmpl:45 +#: ../html/rlist.tmpl:45 msgid "available capacity" msgstr "Freie Kapazität" #-------------------- -#: ../html/rlist.tmpl:72 ../html/rsearch.tmpl:72 +#: ../html/rlist.tmpl:72 msgid "All recordings with title" msgstr "Alle Aufnahmen mit Titel" @@ -1258,54 +1263,54 @@ msgid "Advanced Search" msgstr "Erweiterte Suche" #-------------------- -#: ../html/tlist.tmpl:106 ../html/tsearch.tmpl:106 +#: ../html/tlist.tmpl:106 msgid "Jump to program:" msgstr "Springe zum Programm:" #-------------------- -#: ../html/tlist.tmpl:13 ../html/tsearch.tmpl:13 ../wml/tlist.tmpl:8 ../wml/tsearch.tmpl:8 +#: ../html/tlist.tmpl:13 ../wml/tlist.tmpl:8 ../wml/tsearch.tmpl:8 #. (12) msgid "Create new timer" msgstr "Erzeuge neuen Timer" #-------------------- -#: ../html/tlist.tmpl:16 ../html/tsearch.tmpl:16 ../wml/tlist.tmpl:11 ../wml/tsearch.tmpl:11 +#: ../html/tlist.tmpl:16 ../wml/tlist.tmpl:11 ../wml/tsearch.tmpl:11 #. (12) msgid "Update timers" msgstr "Aktualisieren der Timer" #-------------------- -#: ../html/tlist.tmpl:23 ../html/tlist.tmpl:91 ../html/tsearch.tmpl:23 ../html/tsearch.tmpl:91 +#: ../html/tlist.tmpl:23 ../html/tlist.tmpl:91 msgid "Toggle timer" msgstr "Timer umschalten" #-------------------- -#: ../html/tlist.tmpl:27 ../html/tsearch.tmpl:27 +#: ../html/tlist.tmpl:27 msgid "Would you like to delete these timers?" msgstr "Wollen Sie diese Timer löschen?" #-------------------- -#: ../html/tlist.tmpl:29 ../html/tsearch.tmpl:29 +#: ../html/tlist.tmpl:29 msgid "Delete timer" msgstr "Timer löschen" #-------------------- -#: ../html/tlist.tmpl:33 ../html/tsearch.tmpl:33 +#: ../html/tlist.tmpl:33 msgid "Search for timers" msgstr "Suche nach Timern" #-------------------- -#: ../html/tlist.tmpl:7 ../html/tlist.tmpl:9 ../html/tsearch.tmpl:7 ../html/tsearch.tmpl:9 +#: ../html/tlist.tmpl:7 ../html/tlist.tmpl:9 msgid "Planned recordings" msgstr "Geplante Aufnahmen" #-------------------- -#: ../html/tlist.tmpl:83 ../html/tsearch.tmpl:83 ../lib/XXV/MODULES/TIMERS.pm:915 +#: ../html/tlist.tmpl:83 ../lib/XXV/MODULES/TIMERS.pm:959 msgid "Would you like to delete this timer?" msgstr "Wollen Sie diesen Timer löschen?" #-------------------- -#: ../html/tlist.tmpl:96 ../html/tsearch.tmpl:96 +#: ../html/tlist.tmpl:96 msgid "Not enough space to record this timer!" msgstr "Nicht genügend Kapazität um diesen Timer aufzunehmen!" @@ -1520,262 +1525,277 @@ msgid "Next page" msgstr "Nächste Seite" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1006 ../lib/XXV/MODULES/AUTOTIMER.pm:974 ../lib/XXV/MODULES/TIMERS.pm:735 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1002 +msgid "Stop date as YYYY-MM-DD HH:MM:SS." +msgstr "Enddatum als DD.MM.YYYY HH:MM:SS." + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1008 ../lib/XXV/MODULES/AUTOTIMER.pm:976 ../lib/XXV/MODULES/TIMERS.pm:760 +msgid "Language=English" +msgstr "Language=German,DateFormat=non-US" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1015 ../lib/XXV/MODULES/AUTOTIMER.pm:983 ../lib/XXV/MODULES/TIMERS.pm:774 msgid "The day is incorrect or was in a wrong format!" msgstr "Das eingegebene Datum ist nicht korrekt oder hatte ein falsches Format!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1023 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1021 ../lib/XXV/MODULES/TIMERS.pm:851 +msgid "Add keywords to recording" +msgstr "Stichwörter zur Aufnahme hinzufügen" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1037 msgid "Autotimer saved!" msgstr "Autotimer gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1043 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1057 msgid "No autotimer defined for deletion! Please use adelete 'aid'!" msgstr "Kein Autotimer zum Löschen definiert! Bitte verwende adelete 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1052 ../lib/XXV/MODULES/AUTOTIMER.pm:1082 ../lib/XXV/MODULES/AUTOTIMER.pm:1091 ../lib/XXV/MODULES/AUTOTIMER.pm:633 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1066 ../lib/XXV/MODULES/AUTOTIMER.pm:1096 ../lib/XXV/MODULES/AUTOTIMER.pm:1105 ../lib/XXV/MODULES/AUTOTIMER.pm:642 msgid "The autotimer '%s' does not exist in the database." msgstr "Der Autotimer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1056 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1070 msgid "Autotimer %s deleted." msgstr "Autotimer %s wurde gelöscht." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1074 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1088 msgid "No autotimer defined to toggle! Please use atoggle 'aid'!" msgstr "Kein ID eines Autotimer zum Umschalten definiert! Bitte verwende atoggle 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:108 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:109 msgid "Create event entries if an autotimer has created a new timer." msgstr "Erzeuge Eventeinträge, wenn eine neuer Timer durch einen Autotimer erzeugt wurde." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1101 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1115 msgid "Couldn't toggle autotimer with ID '%s'!" msgstr "Konnte Autotimer mit ID '%s' nicht umschalten!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1112 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1126 msgid "disabled" msgstr "Deaktiviert" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1113 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1127 msgid "activated" msgstr "Aktiviert" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1114 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1128 msgid "Autotimer %s is %s." msgstr "Autotimer %s ist %s." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1159 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1173 msgid "Activ" msgstr "Aktiv" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1162 ../lib/XXV/MODULES/RECORDS.pm:1595 ../lib/XXV/MODULES/RECORDS.pm:1707 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1176 ../lib/XXV/MODULES/RECORDS.pm:1644 ../lib/XXV/MODULES/RECORDS.pm:1781 msgid "Start time" msgstr "Startzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1163 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1177 msgid "Stop time" msgstr "Stoppzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1164 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1178 msgid "Directory" msgstr "Verzeichnis" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1165 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1179 msgid "Minimum length" msgstr "Minimale Länge" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1242 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1256 msgid "Unknown channel : %s" msgstr "Unbekannter Kanal : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:135 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:136 msgid "Autotimer('%s') found: %s" msgstr "Autotimer('%s') hat gefunden: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:141 ../lib/XXV/MODULES/TIMERS.pm:153 ../lib/XXV/MODULES/TIMERS.pm:208 ../lib/XXV/MODULES/TIMERS.pm:262 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:142 ../lib/XXV/MODULES/TIMERS.pm:155 ../lib/XXV/MODULES/TIMERS.pm:210 ../lib/XXV/MODULES/TIMERS.pm:264 msgid "Channel: %s" msgstr "Kanal: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:147 ../lib/XXV/MODULES/TIMERS.pm:160 ../lib/XXV/MODULES/TIMERS.pm:215 ../lib/XXV/MODULES/TIMERS.pm:270 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:148 ../lib/XXV/MODULES/TIMERS.pm:162 ../lib/XXV/MODULES/TIMERS.pm:217 ../lib/XXV/MODULES/TIMERS.pm:272 msgid "On: %s to %s" msgstr "Um: %s bis %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:151 ../lib/XXV/MODULES/RECORDS.pm:215 ../lib/XXV/MODULES/TIMERS.pm:164 ../lib/XXV/MODULES/TIMERS.pm:219 ../lib/XXV/MODULES/TIMERS.pm:274 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:152 ../lib/XXV/MODULES/RECORDS.pm:216 ../lib/XXV/MODULES/TIMERS.pm:166 ../lib/XXV/MODULES/TIMERS.pm:221 ../lib/XXV/MODULES/TIMERS.pm:276 msgid "Description: %s" msgstr "Beschreibung: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:681 ../lib/XXV/MODULES/EPG.pm:807 ../lib/XXV/MODULES/SHARE.pm:348 ../lib/XXV/MODULES/TIMERS.pm:1245 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:681 ../lib/XXV/MODULES/EPG.pm:807 ../lib/XXV/MODULES/SHARE.pm:348 ../lib/XXV/MODULES/TIMERS.pm:1333 msgid "Day" msgstr "Datum" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:19 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:20 msgid "This module searches for EPG entries with user-defined text and creates new timers." msgstr "Diese Modul sucht nach EPG Einträgen mit nutzerdefinierten Texten und erzeugt neue Timer." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:223 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:224 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:27 ../lib/XXV/MODULES/CHRONICLE.pm:24 ../lib/XXV/MODULES/EVENTS.pm:30 ../lib/XXV/MODULES/HTTPD.pm:59 ../lib/XXV/MODULES/INTERFACE.pm:29 ../lib/XXV/MODULES/LOGREAD.pm:28 ../lib/XXV/MODULES/MEDIALIB.pm:29 ../lib/XXV/MODULES/MOVETIMER.pm:23 ../lib/XXV/MODULES/MUSIC.pm:36 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:26 ../lib/XXV/MODULES/ROBOT.pm:25 ../lib/XXV/MODULES/SHARE.pm:61 ../lib/XXV/MODULES/STATUS.pm:28 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:39 ../lib/XXV/MODULES/XMLTV.pm:29 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:65 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:30 ../lib/XXV/OUTPUT/NEWS/RSS.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:26 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:24 ../lib/XXV/MODULES/EVENTS.pm:30 ../lib/XXV/MODULES/HTTPD.pm:59 ../lib/XXV/MODULES/INTERFACE.pm:29 ../lib/XXV/MODULES/KEYWORDS.pm:24 ../lib/XXV/MODULES/LOGREAD.pm:28 ../lib/XXV/MODULES/MEDIALIB.pm:29 ../lib/XXV/MODULES/MOVETIMER.pm:23 ../lib/XXV/MODULES/MUSIC.pm:36 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:26 ../lib/XXV/MODULES/ROBOT.pm:25 ../lib/XXV/MODULES/SHARE.pm:61 ../lib/XXV/MODULES/STATUS.pm:28 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:39 ../lib/XXV/MODULES/XMLTV.pm:29 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:65 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:30 ../lib/XXV/OUTPUT/NEWS/RSS.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:26 msgid "Activate this service" msgstr "Aktiviere diesen Dienst" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:33 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:34 msgid "Exclude channels from autotimer" msgstr "Schliesse Kanäle von Autotimer aus." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:352 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:355 msgid "Searching for autotimer ..." msgstr "Schaue nach Autotimer ..." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:362 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:365 msgid "Autotimer process created %d timers and modified %d timers." msgstr "Autotimervorgang hat %d Timer erzeugt und %d Timer modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:366 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:369 msgid "Back to autotimer listing." msgstr "Zurück zur Autotimer Liste" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:440 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:438 ../lib/XXV/MODULES/AUTOTIMER.pm:443 msgid "Search for autotimer '%s'" msgstr "Schaue nach Autotimer '%s'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:448 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:451 msgid "Found %d entries for '%s' in EPG database." msgstr "%d Einträge für '%s' in EPG Datenbank gefunden." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:48 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:49 msgid "Display status of autotimers." msgstr "Status der Autotimer anzeigen." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:549 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:558 msgid "Could not save timer for '%s' : %s" msgstr "Konnte Timer für '%s' nicht speichern : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:554 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:563 msgid "Modified timer for '%s'." msgstr "Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:558 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:567 msgid "Timer for '%s' has been created." msgstr "Timer für '%s' erzeugt." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:566 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:575 msgid "Created %d timer for '%s'." msgstr "%d Timer für '%s' erzeugt. " #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:575 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:584 msgid "Modified %d timer for '%s'." msgstr "%d Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:590 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:599 msgid "Read new timers into database." msgstr "Lese neue Timer in Datenbank." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:61 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:62 msgid "Delete a autotimer 'aid'" msgstr "Löschen eines Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:655 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:664 msgid "Mon" msgstr "Mo" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:656 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:665 msgid "Tue" msgstr "Di" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:657 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:666 msgid "Wed" msgstr "Mi" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:658 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:667 msgid "Thu" msgstr "Do" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:659 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:668 msgid "Fri" msgstr "Fr" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:660 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:669 msgid "Sat" msgstr "Sa" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:661 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:670 msgid "Sun" msgstr "So" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:671 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 ../wml/tsearch.tmpl:26 ../wml/tsearch.tmpl:67 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:680 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 ../wml/tsearch.tmpl:26 ../wml/tsearch.tmpl:67 msgid "Timer" msgstr "Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:672 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:681 msgid "Existing recording" msgstr "Vorhandene Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:673 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:682 msgid "Recording chronicle" msgstr "Aufnahmechronik" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:68 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:69 msgid "Edit an autotimer 'aid'" msgstr "Editieren eines Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:690 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:699 msgid "Activate this autotimer" msgstr "Aktiviere diesen Autotimer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:694 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:703 msgid "" "Search terms to search for EPG entries.\n" "You can also fine tune your search :\n" @@ -1790,154 +1810,154 @@ msgstr "" "* durch ein Minuszeichen zum Ausschliessen von Suchbegriffen z.B. 'Heute,-Morgen'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:702 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:711 msgid "Search in this EPG fields" msgstr "Suche in diesen EPG-Feldern" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:723 ../lib/XXV/MODULES/AUTOTIMER.pm:773 ../lib/XXV/MODULES/AUTOTIMER.pm:850 ../lib/XXV/MODULES/USER.pm:405 ../lib/XXV/MODULES/USER.pm:412 ../lib/XXV/MODULES/USER.pm:428 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:732 ../lib/XXV/MODULES/AUTOTIMER.pm:782 ../lib/XXV/MODULES/AUTOTIMER.pm:859 ../lib/XXV/MODULES/USER.pm:405 ../lib/XXV/MODULES/USER.pm:412 ../lib/XXV/MODULES/USER.pm:428 msgid "You can choose: %s!" msgstr "Sie können wählen: %s!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:738 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:747 msgid "Limit search to these channels" msgstr "Begrenze Suche auf diese Kanäle" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:746 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:755 msgid "The channel '%s' does not exist!" msgstr "Der Kanal '%s' existiert nicht!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:75 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:76 msgid "Search for autotimer with text 'aid'" msgstr "Suche nach Autotimer mit Text 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:753 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:762 msgid "Ignore retries with same title?" msgstr "Ignoriere Wiederholungen mit gleichen Titel?" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:789 ../lib/XXV/MODULES/TIMERS.pm:744 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:798 ../lib/XXV/MODULES/TIMERS.pm:783 msgid "Start time in format 'HH:MM'" msgstr "Startzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:792 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:801 msgid "You set a start time without an end time!" msgstr "Startzeitpunkt ohne Stoppzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:796 ../lib/XXV/MODULES/AUTOTIMER.pm:802 ../lib/XXV/MODULES/AUTOTIMER.pm:819 ../lib/XXV/MODULES/AUTOTIMER.pm:825 ../lib/XXV/MODULES/TIMERS.pm:748 ../lib/XXV/MODULES/TIMERS.pm:754 ../lib/XXV/MODULES/TIMERS.pm:767 ../lib/XXV/MODULES/TIMERS.pm:773 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:805 ../lib/XXV/MODULES/AUTOTIMER.pm:811 ../lib/XXV/MODULES/AUTOTIMER.pm:828 ../lib/XXV/MODULES/AUTOTIMER.pm:834 ../lib/XXV/MODULES/TIMERS.pm:787 ../lib/XXV/MODULES/TIMERS.pm:793 ../lib/XXV/MODULES/TIMERS.pm:806 ../lib/XXV/MODULES/TIMERS.pm:812 msgid "The time is incorrect!" msgstr "Die Zeit ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:81 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:82 msgid "Show autotimer 'aid'" msgstr "Zeige Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:812 ../lib/XXV/MODULES/TIMERS.pm:763 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:821 ../lib/XXV/MODULES/TIMERS.pm:802 msgid "End time in format 'HH:MM'" msgstr "Endzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:815 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:824 msgid "You set an end time without a start time!" msgstr "Stoppzeitpunkt ohne Startzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:830 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:839 msgid "Only search these weekdays" msgstr "Suche nur an diesen Wochentagen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:863 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:872 msgid "Use PDC time to control created timer" msgstr "Verwende VPS zum Überwachen neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:867 ../lib/XXV/MODULES/TIMERS.pm:31 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:876 ../lib/XXV/MODULES/TIMERS.pm:33 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:87 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:88 msgid "Start autotimer search." msgstr "Autotimersuche durchführen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:875 ../lib/XXV/MODULES/AUTOTIMER.pm:889 ../lib/XXV/MODULES/AUTOTIMER.pm:902 ../lib/XXV/MODULES/AUTOTIMER.pm:918 ../lib/XXV/MODULES/AUTOTIMER.pm:934 ../lib/XXV/MODULES/CHANNELS.pm:774 ../lib/XXV/MODULES/CHANNELS.pm:805 ../lib/XXV/MODULES/CHANNELS.pm:844 ../lib/XXV/MODULES/CHANNELS.pm:857 ../lib/XXV/MODULES/CHANNELS.pm:883 ../lib/XXV/MODULES/CHANNELS.pm:909 ../lib/XXV/MODULES/CHANNELS.pm:922 ../lib/XXV/MODULES/CHANNELS.pm:935 ../lib/XXV/MODULES/CHANNELS.pm:948 ../lib/XXV/MODULES/GRAB.pm:104 ../lib/XXV/MODULES/GRAB.pm:35 ../lib/XXV/MODULES/GRAB.pm:49 ../lib/XXV/MODULES/GRAB.pm:72 ../lib/XXV/MODULES/GRAB.pm:91 ../lib/XXV/MODULES/RECORDS.pm:1990 ../lib/XXV/MODULES/RECORDS.pm:2004 ../lib/XXV/MODULES/STREAM.pm:102 ../lib/XXV/MODULES/STREAM.pm:88 ../lib/XXV/MODULES/TIMERS.pm:789 ../lib/XXV/MODULES/TIMERS.pm:805 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:884 ../lib/XXV/MODULES/AUTOTIMER.pm:898 ../lib/XXV/MODULES/AUTOTIMER.pm:911 ../lib/XXV/MODULES/AUTOTIMER.pm:927 ../lib/XXV/MODULES/AUTOTIMER.pm:943 ../lib/XXV/MODULES/CHANNELS.pm:1018 ../lib/XXV/MODULES/CHANNELS.pm:1031 ../lib/XXV/MODULES/CHANNELS.pm:1044 ../lib/XXV/MODULES/CHANNELS.pm:1057 ../lib/XXV/MODULES/CHANNELS.pm:883 ../lib/XXV/MODULES/CHANNELS.pm:914 ../lib/XXV/MODULES/CHANNELS.pm:953 ../lib/XXV/MODULES/CHANNELS.pm:966 ../lib/XXV/MODULES/CHANNELS.pm:992 ../lib/XXV/MODULES/GRAB.pm:104 ../lib/XXV/MODULES/GRAB.pm:228 ../lib/XXV/MODULES/GRAB.pm:236 ../lib/XXV/MODULES/GRAB.pm:35 ../lib/XXV/MODULES/GRAB.pm:49 ../lib/XXV/MODULES/GRAB.pm:72 ../lib/XXV/MODULES/GRAB.pm:91 ../lib/XXV/MODULES/RECORDS.pm:2080 ../lib/XXV/MODULES/RECORDS.pm:2094 ../lib/XXV/MODULES/STREAM.pm:113 ../lib/XXV/MODULES/STREAM.pm:99 ../lib/XXV/MODULES/TIMERS.pm:828 ../lib/XXV/MODULES/TIMERS.pm:844 msgid "Value incorrect!" msgstr "Der Wert ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:881 ../lib/XXV/MODULES/TIMERS.pm:36 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/TIMERS.pm:38 msgid "Buffer time in minutes past the scheduled end of a recording" msgstr "Pufferzeit in Minuten, nach dem zeitlichen Ende der Aufnahme." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:895 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:904 msgid "Minimum play time in minutes" msgstr "Mindestlänge in Minuten" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:908 ../lib/XXV/MODULES/RECORDS.pm:1997 ../lib/XXV/MODULES/TIMERS.pm:779 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:917 ../lib/XXV/MODULES/RECORDS.pm:2087 ../lib/XXV/MODULES/TIMERS.pm:818 msgid "Priority (%d ... %d)" msgstr "Priorität (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:914 ../lib/XXV/MODULES/TIMERS.pm:785 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:923 ../lib/XXV/MODULES/TIMERS.pm:824 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:924 ../lib/XXV/MODULES/RECORDS.pm:1983 ../lib/XXV/MODULES/TIMERS.pm:795 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:933 ../lib/XXV/MODULES/RECORDS.pm:2073 ../lib/XXV/MODULES/TIMERS.pm:834 msgid "Lifetime (%d ... %d)" msgstr "Lebenszeit (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:930 ../lib/XXV/MODULES/TIMERS.pm:801 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:939 ../lib/XXV/MODULES/TIMERS.pm:840 msgid "Sorry, but the maximum life time is limited to %d!" msgstr "Entschuldigung, aber die maximale Lebenszeit ist auf %d begrenzt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:94 -msgid "Toggle autotimer on or off 'aid'" -msgstr "Umschalten der Autotimer zwischen Ein und Aus 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:940 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:949 msgid "Group all recordings into one directory" msgstr "Gruppiere alle Aufnahmen in einem Verzeichnis" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:954 ../lib/XXV/MODULES/AUTOTIMER.pm:987 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:95 +msgid "Toggle autotimer on or off 'aid'" +msgstr "Umschalten der Autotimer zwischen Ein und Aus 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:963 ../lib/XXV/MODULES/AUTOTIMER.pm:996 msgid "%Y-%m-%d %H:%M:%S" msgstr "%d.%m.%Y %H:%M:%S" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:960 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:969 msgid "Start date as YYYY-MM-DD HH:MM:SS." msgstr "Startdatum als DD.MM.YYYY HH:MM:SS." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:967 ../lib/XXV/MODULES/AUTOTIMER.pm:999 ../lib/XXV/MODULES/TIMERS.pm:721 -msgid "Language=English" -msgstr "Language=German,DateFormat=non-US" +#: ../lib/XXV/MODULES/CHANNELS.pm:1011 +msgid "Service ID (SID)" +msgstr "Service ID (SID)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:993 -msgid "Stop date as YYYY-MM-DD HH:MM:SS." -msgstr "Enddatum als DD.MM.YYYY HH:MM:SS." +#: ../lib/XXV/MODULES/CHANNELS.pm:1024 +msgid "Network ID (NID)" +msgstr "Netzwerk ID (NID)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1039 -msgid "No channel defined for deletion! Please use cdelete 'pos'!" -msgstr "Kanal zu löschen definiert! Bitte verwende cdelete 'pos'" +#: ../lib/XXV/MODULES/CHANNELS.pm:1037 +msgid "Transport stream ID (TID)" +msgstr "Transport stream ID (TID)" #-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:104 @@ -1945,37 +1965,52 @@ msgid "Deletes one or more channels 'pos'" msgstr "Löscht einen oder mehrere Kanäle 'pos'" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1052 ../lib/XXV/MODULES/CHANNELS.pm:752 +#: ../lib/XXV/MODULES/CHANNELS.pm:1050 +msgid "Radio ID (RID)" +msgstr "Radio ID (RID)" + +#-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:1066 ../lib/XXV/MODULES/CHANNELS.pm:894 +msgid "New channel" +msgstr "Neuer Kanal" + +#-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:1148 +msgid "No channel defined for deletion! Please use cdelete 'pos'!" +msgstr "Kanal zu löschen definiert! Bitte verwende cdelete 'pos'" + +#-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:1161 ../lib/XXV/MODULES/CHANNELS.pm:861 msgid "Channel '%s' does not exist in the database!" msgstr "Der Kanal '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1086 +#: ../lib/XXV/MODULES/CHANNELS.pm:1195 msgid "No channel defined for deletion!" msgstr "Kein Kanal zum Löschen definiert!" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1107 +#: ../lib/XXV/MODULES/CHANNELS.pm:1210 msgid "New %s channel: %s on position: %d %s" msgstr "Neuer %s Kanal: %s auf Position: %d %s" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1109 +#: ../lib/XXV/MODULES/CHANNELS.pm:1212 msgid "TV" msgstr "TV" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1110 +#: ../lib/XXV/MODULES/CHANNELS.pm:1213 msgid "Radio" msgstr "Radio" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1113 +#: ../lib/XXV/MODULES/CHANNELS.pm:1216 msgid "(encrypted)" msgstr "(verschlüsselt)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1119 +#: ../lib/XXV/MODULES/CHANNELS.pm:1223 msgid "Found %d new channels!" msgstr "%d neue Kanäle gefunden!" @@ -2005,91 +2040,91 @@ msgid "Filter channel list, set all wanted CA (Common Access)" msgstr "Filter Kanalliste, setze alle gesuche CA(Common Access)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:361 +#: ../lib/XXV/MODULES/CHANNELS.pm:396 msgid "No channels available!" msgstr "Keine Kanäle verfügbar!" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:410 -msgid "Write %d channels into database." -msgstr "Schreibe %d Kanäle in die Datenbank" - -#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:45 msgid "Free-to-air" msgstr "Frei empfangbar" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:454 +#: ../lib/XXV/MODULES/CHANNELS.pm:49 +msgid "DVB card %s" +msgstr "DVB Karte %s" + +#-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:536 +msgid "There are %d channels inserted, %d channels updated, %d channels deleted into database." +msgstr "Es wurden %d Kanäle hinzugefügt, %d Kanäle aktualisiert und %d Kanäle in der Datenbank gelöscht." + +#-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:572 msgid "Parameters" msgstr "Parameter" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:455 ../lib/XXV/MODULES/CHANNELS.pm:812 +#: ../lib/XXV/MODULES/CHANNELS.pm:573 ../lib/XXV/MODULES/CHANNELS.pm:921 msgid "Signal source" msgstr "Signalquelle" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:456 ../lib/XXV/MODULES/CHANNELS.pm:837 +#: ../lib/XXV/MODULES/CHANNELS.pm:574 ../lib/XXV/MODULES/CHANNELS.pm:946 msgid "Symbol rate" msgstr "Symbolrate" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:457 +#: ../lib/XXV/MODULES/CHANNELS.pm:575 msgid "Video PID" msgstr "Video PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:458 +#: ../lib/XXV/MODULES/CHANNELS.pm:576 msgid "Audio PID" msgstr "Audio PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:459 +#: ../lib/XXV/MODULES/CHANNELS.pm:577 msgid "Teletext PID" msgstr "Videotext PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:460 +#: ../lib/XXV/MODULES/CHANNELS.pm:578 msgid "Conditional access" msgstr "Zugangsberechtigungssystem" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:461 +#: ../lib/XXV/MODULES/CHANNELS.pm:579 msgid "SID" msgstr "SID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:462 +#: ../lib/XXV/MODULES/CHANNELS.pm:580 msgid "TID" msgstr "TID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:463 +#: ../lib/XXV/MODULES/CHANNELS.pm:581 msgid "NID" msgstr "NID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:464 +#: ../lib/XXV/MODULES/CHANNELS.pm:582 msgid "RID" msgstr "RID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:465 +#: ../lib/XXV/MODULES/CHANNELS.pm:583 msgid "Channel group" msgstr "Kanalgruppe" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:466 ../lib/XXV/MODULES/CHANNELS.pm:767 +#: ../lib/XXV/MODULES/CHANNELS.pm:584 ../lib/XXV/MODULES/CHANNELS.pm:876 msgid "Position" msgstr "Position" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:49 -msgid "DVB card %s" -msgstr "DVB Karte %s" - -#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:65 msgid "Cleans out channel names, only the 'long' part is visible." msgstr "Bereinigt Kanalnamen, nur Teil 'long' ist sichtbar" @@ -2100,36 +2135,11 @@ msgid "Read channels and write them to the database" msgstr "Lese Kanäle und schreibe sie in die Datenbank" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:785 ../lib/XXV/MODULES/CHANNELS.pm:957 -msgid "New channel" -msgstr "Neuer Kanal" - -#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:84 msgid "List channels from database 'cname'" msgstr "Zeige Kanäle der Datenbank 'cname'" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:902 -msgid "Service ID (SID)" -msgstr "Service ID (SID)" - -#-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:915 -msgid "Network ID (NID)" -msgstr "Netzwerk ID (NID)" - -#-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:928 -msgid "Transport stream ID (TID)" -msgstr "Transport stream ID (TID)" - -#-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:941 -msgid "Radio ID (RID)" -msgstr "Radio ID (RID)" - -#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:97 msgid "Edits a channel 'cid'" msgstr "Bearbeitet einen Kanal 'cid'" @@ -2420,18 +2430,13 @@ msgstr "Ändere ein Ereignis zwischen ein/aus" #-------------------- #: ../lib/XXV/MODULES/GRAB.pm:111 -msgid "Grab a picture" -msgstr "Hole den Screenshot" - -#-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:118 -msgid "Display the picture" -msgstr "Zeige den Screenshot an" +msgid "Display current picture of video output." +msgstr "Zeigt das aktuelle Bild des Videoausganges" #-------------------- #: ../lib/XXV/MODULES/GRAB.pm:19 -msgid "This module grab a picture from livestream." -msgstr "Dieses Modul holt einen Screenshot von der DVB Karte per SVDRP" +msgid "This module grab a picture from video output." +msgstr "Dieses Modul holt das Bilder des Videoausganges." #-------------------- #: ../lib/XXV/MODULES/GRAB.pm:26 @@ -2499,7 +2504,7 @@ msgid "Traffic on HTTPD socket since %s: transmitted: %s - received: %s - connec msgstr "Datenverkehr des HTTPD Anschlusses seit %s: gesendet: %s - empfangen: %s - Verbindungen: %d." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:568 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:824 +#: ../lib/XXV/MODULES/HTTPD.pm:568 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:974 msgid "Could not open file '%s'! : %s" msgstr "Konnte Datei '%s' nicht öffnen : %s" @@ -2574,6 +2579,21 @@ msgid "Number of port to listen for soap clients" msgstr "Nummer des Port, um auf SOAP-Clients zu lauschen" #-------------------- +#: ../lib/XXV/MODULES/KEYWORDS.pm:16 +msgid "This module manages keywords and tag within timer and recordings." +msgstr "Diese Modul verwaltet Stichwörter innerhalb von Timern und Aufnahmen." + +#-------------------- +#: ../lib/XXV/MODULES/KEYWORDS.pm:32 +msgid "Search timers 'keywords'" +msgstr "Suche Timer 'Stichwort'" + +#-------------------- +#: ../lib/XXV/MODULES/KEYWORDS.pm:43 +msgid "Search recordings 'keywords'" +msgstr "Sucht Aufnahmen 'Stichwort'" + +#-------------------- #: ../lib/XXV/MODULES/LOGREAD.pm:152 msgid "Could not read log file %s!" msgstr "Konnte die Log-Datei %s nicht einlesen!" @@ -2594,7 +2614,7 @@ msgid "Lines to display" msgstr "Wieviel Zeilen anzeigen?" #-------------------- -#: ../lib/XXV/MODULES/LOGREAD.pm:46 ../lib/XXV/MODULES/RECORDS.pm:36 ../lib/XXV/MODULES/REMOTE.pm:37 +#: ../lib/XXV/MODULES/LOGREAD.pm:46 ../lib/XXV/MODULES/RECORDS.pm:37 ../lib/XXV/MODULES/REMOTE.pm:37 msgid "Path of file '%s'" msgstr "Pfad der Datei '%s'" @@ -2929,7 +2949,7 @@ msgid "Which channel should used as source?" msgstr "Welcher Kanal soll als Quelle verwendet werden?" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:400 ../lib/XXV/MODULES/MOVETIMER.pm:422 ../lib/XXV/MODULES/RECORDS.pm:2024 ../lib/XXV/MODULES/STREAM.pm:190 ../lib/XXV/MODULES/TIMERS.pm:695 ../lib/XXV/MODULES/XMLTV.pm:530 +#: ../lib/XXV/MODULES/MOVETIMER.pm:400 ../lib/XXV/MODULES/MOVETIMER.pm:422 ../lib/XXV/MODULES/RECORDS.pm:2114 ../lib/XXV/MODULES/STREAM.pm:201 ../lib/XXV/MODULES/TIMERS.pm:734 ../lib/XXV/MODULES/XMLTV.pm:530 msgid "This channel '%s' does not exist!" msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" @@ -3009,7 +3029,7 @@ msgid "Copy original timer" msgstr "Kopiere den original Timer" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1002 +#: ../lib/XXV/MODULES/MUSIC.pm:1003 msgid "Lookup for cover from '%s-%s'" msgstr "Suche nach Plattenhüllen von '%s-%s'" @@ -3019,12 +3039,12 @@ msgid "Download album covers." msgstr "Plattenhüllen herunterladen." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1074 +#: ../lib/XXV/MODULES/MUSIC.pm:1075 msgid "New covers search was successfully!" msgstr "Suche nach neue Plattenhüllen war erfolgreich!" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1078 ../lib/XXV/MODULES/MUSIC.pm:1095 ../lib/XXV/MODULES/MUSIC.pm:348 ../lib/XXV/MODULES/MUSIC.pm:368 ../lib/XXV/MODULES/MUSIC.pm:408 ../lib/XXV/MODULES/MUSIC.pm:447 +#: ../lib/XXV/MODULES/MUSIC.pm:1079 ../lib/XXV/MODULES/MUSIC.pm:1096 ../lib/XXV/MODULES/MUSIC.pm:348 ../lib/XXV/MODULES/MUSIC.pm:368 ../lib/XXV/MODULES/MUSIC.pm:408 ../lib/XXV/MODULES/MUSIC.pm:447 msgid "Back to music list" msgstr "Zurück zur Musikliste" @@ -3034,7 +3054,7 @@ msgid "Play music file 'fid'" msgstr "Spiele Musikdatei 'fid'" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1092 +#: ../lib/XXV/MODULES/MUSIC.pm:1093 msgid "It is not necessary to look for new covers because already all albums possess cover!" msgstr "Es ist nicht notwendig, nach neuer Plattenhüllen zu suchen, weil bereits alle Alben ein Plattenhülle besitzen!" @@ -3059,7 +3079,7 @@ msgid "Show album covers." msgstr "Zeigt Plattenhüllen." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1361 +#: ../lib/XXV/MODULES/MUSIC.pm:1362 msgid "Sorry, images for cover is'nt supported" msgstr "Entschuldigung, Plattenhüllen werden nicht unterstützt." @@ -3069,7 +3089,7 @@ msgid "Get music file 'fid'" msgstr "Holt die Musikdateien'fid'" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1400 +#: ../lib/XXV/MODULES/MUSIC.pm:1401 msgid "Sorry, couldn't get file." msgstr "Entschuldigung, Datei kann nicht geholt werden." @@ -3154,7 +3174,7 @@ msgid "DSN for muggle database" msgstr "DSN für die Muggle Datenbank" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:936 +#: ../lib/XXV/MODULES/MUSIC.pm:937 msgid "Music database contains %d entries with %d albums from %d artists in %d genres" msgstr "Die Musikdatenbank enthält %d Einträge mit %d Alben von %d Künstlern in %d Genren" @@ -3164,347 +3184,347 @@ msgid "Rereading of the music directory." msgstr "Nochmaliges Einlesen des Musikverzeichnisses." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:982 +#: ../lib/XXV/MODULES/MUSIC.pm:983 msgid "Please wait, search for new covers ..." msgstr "Bitte warten, suche nach neuen Plattenhüllen ..." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:101 +#: ../lib/XXV/MODULES/RECORDS.pm:102 msgid "Display recording 'rid'" msgstr "Zeige Aufnahme 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:107 +#: ../lib/XXV/MODULES/RECORDS.pm:108 msgid "List of recordings" msgstr "Aufnahmenliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:113 +#: ../lib/XXV/MODULES/RECORDS.pm:114 msgid "Search recordings 'text'" msgstr "Sucht Aufnahmen 'text'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:126 +#: ../lib/XXV/MODULES/RECORDS.pm:127 msgid "Delete recording 'rid'" msgstr "Aufnahme löschen 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:140 +#: ../lib/XXV/MODULES/RECORDS.pm:141 msgid "Edit recording 'rid'" msgstr "Aufnahme bearbeiten 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1429 +#: ../lib/XXV/MODULES/RECORDS.pm:1475 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:1466 ../lib/XXV/MODULES/RECORDS.pm:1502 ../lib/XXV/MODULES/RECORDS.pm:1544 ../lib/XXV/MODULES/RECORDS.pm:1871 ../lib/XXV/MODULES/RECORDS.pm:1960 ../lib/XXV/MODULES/RECORDS.pm:2227 -msgid "Recording '%s' does not exist in the database!" -msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:147 +#: ../lib/XXV/MODULES/RECORDS.pm:148 msgid "Convert recording 'rid'" msgstr "Aufnahme konvertieren 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1493 ../lib/XXV/MODULES/RECORDS.pm:1537 +#: ../lib/XXV/MODULES/RECORDS.pm:1512 ../lib/XXV/MODULES/RECORDS.pm:1551 ../lib/XXV/MODULES/RECORDS.pm:1593 ../lib/XXV/MODULES/RECORDS.pm:1960 ../lib/XXV/MODULES/RECORDS.pm:2050 ../lib/XXV/MODULES/RECORDS.pm:2347 +msgid "Recording '%s' does not exist in the database!" +msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:1542 ../lib/XXV/MODULES/RECORDS.pm:1586 msgid "No recording defined for playback! Please use rplay 'rid'." msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:154 +#: ../lib/XXV/MODULES/RECORDS.pm:155 msgid "Play recording 'rid' in the VDR." msgstr "Spiele Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1591 ../lib/XXV/MODULES/RECORDS.pm:1703 -msgid "Index" -msgstr "Index" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:161 +#: ../lib/XXV/MODULES/RECORDS.pm:162 msgid "Cut recording 'rid' in vdr" msgstr "Schneide Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1804 -msgid "No recording defined for deletion! Please use rdelete 'id'." -msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." +#: ../lib/XXV/MODULES/RECORDS.pm:1640 ../lib/XXV/MODULES/RECORDS.pm:1777 +msgid "Index" +msgstr "Index" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:181 +#: ../lib/XXV/MODULES/RECORDS.pm:182 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:1877 +#: ../lib/XXV/MODULES/RECORDS.pm:1893 +msgid "No recording defined for deletion! Please use rdelete 'id'." +msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:1966 msgid "Recording '%s' to delete" msgstr "Aufnahme '%s' wird gelöscht" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1912 +#: ../lib/XXV/MODULES/RECORDS.pm:2002 msgid "No recording to delete!" msgstr "Keine Aufnahme zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1938 +#: ../lib/XXV/MODULES/RECORDS.pm:2028 msgid "No recording defined for editing!" msgstr "Keine Aufnahme-ID zum Bearbeiten!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1977 ../lib/XXV/MODULES/RECORDS.pm:2550 ../lib/XXV/MODULES/TIMERS.pm:679 +#: ../lib/XXV/MODULES/RECORDS.pm:2067 ../lib/XXV/MODULES/RECORDS.pm:2670 ../lib/XXV/MODULES/TIMERS.pm:718 msgid "Title of recording" msgstr "Titel der Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2014 +#: ../lib/XXV/MODULES/RECORDS.pm:208 +msgid "Recording deleted: %s" +msgstr "Aufnahme gelöscht: %s" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:2104 msgid "Undefined" msgstr "Unbestimmt" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2037 +#: ../lib/XXV/MODULES/RECORDS.pm:212 +msgid "Subtitle: %s" +msgstr "Serientitel: %s" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:2136 msgid "Video" msgstr "Video" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2042 +#: ../lib/XXV/MODULES/RECORDS.pm:2141 msgid "Audio" msgstr "Audio" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2047 +#: ../lib/XXV/MODULES/RECORDS.pm:2146 msgid "Cut marks" msgstr "Schnittmarken" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:207 -msgid "Recording deleted: %s" -msgstr "Aufnahme gelöscht: %s" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2081 ../lib/XXV/MODULES/RECORDS.pm:2088 +#: ../lib/XXV/MODULES/RECORDS.pm:2198 ../lib/XXV/MODULES/RECORDS.pm:2206 msgid "Couldn't write file '%s' : %s" msgstr "Konnte Datei '%s' nicht schreiben : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2107 ../lib/XXV/MODULES/RECORDS.pm:2125 +#: ../lib/XXV/MODULES/RECORDS.pm:2225 ../lib/XXV/MODULES/RECORDS.pm:2243 msgid "Recording: '%s', couldn't move to '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:211 -msgid "Subtitle: %s" -msgstr "Serientitel: %s" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2121 +#: ../lib/XXV/MODULES/RECORDS.pm:2239 msgid "Recording: '%s', couldn't mkpath: '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2132 +#: ../lib/XXV/MODULES/RECORDS.pm:2250 msgid "Recording: '%s', couldn't remove '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2161 ../lib/XXV/MODULES/RECORDS.pm:2163 +#: ../lib/XXV/MODULES/RECORDS.pm:2281 ../lib/XXV/MODULES/RECORDS.pm:2283 msgid "Recording edited!" msgstr "Aufnahme wurde bearbeitet!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2171 +#: ../lib/XXV/MODULES/RECORDS.pm:2291 msgid "Recording was'nt changed!" msgstr "Aufnahme wurde nicht verändert!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2210 +#: ../lib/XXV/MODULES/RECORDS.pm:2330 msgid "No reccmds.conf on your system!" msgstr "Keine reccmds.conf auf dem System!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2215 +#: ../lib/XXV/MODULES/RECORDS.pm:2335 msgid "Please use rconvert 'cmdid_rid'" msgstr "Bitte verwende rconvert 'cmdid_rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2219 +#: ../lib/XXV/MODULES/RECORDS.pm:2339 msgid "Command" msgstr "Kommando" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2226 +#: ../lib/XXV/MODULES/RECORDS.pm:2346 msgid "Couldn't find this command ID!" msgstr "Kann diese Kommando-ID nicht finden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2240 +#: ../lib/XXV/MODULES/RECORDS.pm:2360 msgid "Call %s '%s', standard error output :" msgstr "Aufruf %s '%s', Standardfehlerausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2243 +#: ../lib/XXV/MODULES/RECORDS.pm:2363 msgid "Call %s '%s', standard output :" msgstr "Aufruf %s '%s', Ausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2247 +#: ../lib/XXV/MODULES/RECORDS.pm:2367 msgid "Sorry! Couldn't call %s '%s'! %s" msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2251 +#: ../lib/XXV/MODULES/RECORDS.pm:2371 msgid "Back to recording list" msgstr "Zurück zur Aufnahmeliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2290 +#: ../lib/XXV/MODULES/RECORDS.pm:2410 msgid "%d new recordings since last report time %s" msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2540 +#: ../lib/XXV/MODULES/RECORDS.pm:2660 msgid "There none recoverable recordings!" msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2570 +#: ../lib/XXV/MODULES/RECORDS.pm:2690 msgid "Recover recording" msgstr "Aufnahme wiederherstellen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2576 +#: ../lib/XXV/MODULES/RECORDS.pm:2696 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:2585 +#: ../lib/XXV/MODULES/RECORDS.pm:2705 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:2598 ../lib/XXV/MODULES/RECORDS.pm:2600 +#: ../lib/XXV/MODULES/RECORDS.pm:2718 ../lib/XXV/MODULES/RECORDS.pm:2720 msgid "Recording recovered!" msgstr "Aufnahme wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2608 +#: ../lib/XXV/MODULES/RECORDS.pm:2728 msgid "None recording was'nt recovered!" msgstr "Keine Aufnahme wurde wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2677 ../lib/XXV/MODULES/VTX.pm:1419 +#: ../lib/XXV/MODULES/RECORDS.pm:2797 ../lib/XXV/MODULES/VTX.pm:1419 msgid "Sorry, get image is'nt supported" msgstr "Entschuldigung, Bilder werden nicht unterstützt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:28 +#: ../lib/XXV/MODULES/RECORDS.pm:29 msgid "This module manages recordings." msgstr "Dieses Modul verwaltet die Aufnahmen." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:42 +#: ../lib/XXV/MODULES/RECORDS.pm:43 msgid "How often recordings are to be updated (in minutes)" msgstr "Wie oft sollen Aufnahmen eingelesen werden (in Minuten)" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:48 +#: ../lib/XXV/MODULES/RECORDS.pm:49 msgid "How often recordings are to be completely read in (in hours)" msgstr "Wie oft sollen Aufnahmen vollständig eingelesen werden (in Stunden)" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:529 +#: ../lib/XXV/MODULES/RECORDS.pm:540 msgid "No recordings available!" msgstr "Keine Aufnahmen verfügbar!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:54 +#: ../lib/XXV/MODULES/RECORDS.pm:55 msgid "Directory where recordings are stored" msgstr "Verzeichnis, wo die vdr Aufnahmen gespeichert sind" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:545 +#: ../lib/XXV/MODULES/RECORDS.pm:556 msgid "Used %s, total %s%s, free %s%s" msgstr "Genutzt %s, Gesamt %s%s, Frei %s%s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:550 +#: ../lib/XXV/MODULES/RECORDS.pm:561 msgid "Unknown disc capacity!" msgstr "Unbekannte Festplattenkapazität!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:60 +#: ../lib/XXV/MODULES/RECORDS.pm:61 msgid "Location of used program to produce thumbnails on your system." msgstr "Position des verwendeten Programms, zum Erzeugen der Vorschaubildern." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:600 +#: ../lib/XXV/MODULES/RECORDS.pm:612 msgid "Update recording '%s'" msgstr "Aktualisiere Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:652 +#: ../lib/XXV/MODULES/RECORDS.pm:664 msgid "Analyze recording '%s'" msgstr "Untersuche Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:66 +#: ../lib/XXV/MODULES/RECORDS.pm:67 msgid "The program used to create thumbnails" msgstr "Das verwendete Programm, um Vorschaubildern zu erzeugen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:673 +#: ../lib/XXV/MODULES/RECORDS.pm:688 msgid "Can't add recording '%s' into database!" msgstr "Konnte Aufnahme '%s' nicht in Datenbank einfügen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:676 +#: ../lib/XXV/MODULES/RECORDS.pm:691 msgid "Can't assign recording '%s' to file!" msgstr "Kann Aufnahme '%s' keiner Datei zuordnen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:683 +#: ../lib/XXV/MODULES/RECORDS.pm:698 msgid "Recording '%s' without id or unique title and date from VDR!" msgstr "Aufnahme '%s' ohne ID oder eindeutigen Titel und Datum vom VDR!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:69 +#: ../lib/XXV/MODULES/RECORDS.pm:70 msgid "None" msgstr "Keines" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:772 +#: ../lib/XXV/MODULES/RECORDS.pm:788 msgid "Write %d recordings to the database." msgstr "Schreibe %d Aufnahmen in die Datenbank." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:774 -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:78 +#: ../lib/XXV/MODULES/RECORDS.pm:79 msgid "Produce how many thumbnails" msgstr "Wieviele Vorschaubildern erzeugen?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:811 ../lib/XXV/MODULES/RECORDS.pm:813 +#: ../lib/XXV/MODULES/RECORDS.pm:790 +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:827 ../lib/XXV/MODULES/RECORDS.pm:829 msgid "Get information on recordings ..." msgstr "Hole Informationen über Aufnahmen ..." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:83 +#: ../lib/XXV/MODULES/RECORDS.pm:84 msgid "Display recording list with thumbnails?" msgstr "Zeige Aufnahmeliste mit Vorschaubildern?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:88 +#: ../lib/XXV/MODULES/RECORDS.pm:89 msgid "Common directory for preview images" msgstr "Gemeinsames Verzeichnis für Vorschaubilder" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:94 +#: ../lib/XXV/MODULES/RECORDS.pm:95 msgid "VDR compiled for VFAT system (VFAT=1)" msgstr "Setze auf ja, wenn dein vdr kompiliert wurde für das VFAT System (VFAT=1)" @@ -3884,22 +3904,27 @@ msgid "Display the vitals informations" msgstr "Zeigt die wichtigen Informationen" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:109 +#: ../lib/XXV/MODULES/STREAM.pm:104 +msgid "Stream widget height" +msgstr "Streaming Widgethöhe" + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:120 msgid "Stream a recordings." msgstr "Aufnahme streamen." #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:116 +#: ../lib/XXV/MODULES/STREAM.pm:127 msgid "Stream a channel 'cid'. This required the streamdev plugin!" msgstr "Stream eines Kanales 'cid'. Dies erfordert das Streamdev Plugin!" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:181 +#: ../lib/XXV/MODULES/STREAM.pm:192 msgid "No channel defined for streaming!" msgstr "Kein Kanal für Streaming definiert!" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:184 ../lib/XXV/MODULES/STREAM.pm:280 ../lib/XXV/MODULES/STREAM.pm:287 +#: ../lib/XXV/MODULES/STREAM.pm:195 ../lib/XXV/MODULES/STREAM.pm:260 msgid "Can't stream files!" msgstr "Kann Datei nicht streamen!" @@ -3909,7 +3934,12 @@ msgid "This module generate streams from recordings." msgstr "Dieses Modul erzeugt Streams von Aufnahmen." #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:231 +#: ../lib/XXV/MODULES/STREAM.pm:247 +msgid "Unknown access method!" +msgstr "Unbekannte Methode des Zugriffs!" + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:257 msgid "No recording defined for streaming!" msgstr "Keine Aufnahme für Streaming definiert!" @@ -3920,8 +3950,8 @@ msgstr "Benutzter Host für verweisende Links innerhalb der Abspiellisten." #-------------------- #: ../lib/XXV/MODULES/STREAM.pm:35 -msgid "Typ of streaming" -msgstr "Art des Streaming" +msgid "Typ of stream recordings" +msgstr "Typ des Stream der Aufnahme" #-------------------- #: ../lib/XXV/MODULES/STREAM.pm:39 @@ -3935,8 +3965,8 @@ msgstr "SMB/NFS Dateifreigabe" #-------------------- #: ../lib/XXV/MODULES/STREAM.pm:45 -msgid "Used mime type to deliver video streams" -msgstr "Verwendeter Mime-Typ zur Ausgabe von Video-Streams" +msgid "Used mime type of delivered playlist video streams" +msgstr "Verwendeter MIME Typ der ausgelieferten Abspielliste des Videostream" #-------------------- #: ../lib/XXV/MODULES/STREAM.pm:50 @@ -3965,45 +3995,60 @@ msgstr "Eingebetteter VLC Player" #-------------------- #: ../lib/XXV/MODULES/STREAM.pm:66 +msgid "Method of connect live-tv stream from recorder." +msgstr "Methode um die Verbindung zum Rekorder beim Live-TV Stream herzustellen." + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:71 +msgid "Send playlist" +msgstr "Übermittle als Abspielliste" + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:72 +msgid "Redirect HTTP request" +msgstr "Direktes weiterleiten der HTTP Abfrage" + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:73 +msgid "Relay stream as proxy" +msgstr "Stream als Proxy umleiten" + +#-------------------- +#: ../lib/XXV/MODULES/STREAM.pm:77 msgid "Used live stream type" msgstr "Verwendetes Format für Live-Stream" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:70 +#: ../lib/XXV/MODULES/STREAM.pm:81 msgid "TS - Transport Stream" msgstr "TS - Transport Stream" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:71 +#: ../lib/XXV/MODULES/STREAM.pm:82 msgid "PS - Program Stream" msgstr "PS - Program Stream" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:72 +#: ../lib/XXV/MODULES/STREAM.pm:83 msgid "PES - Packetized Elementary Stream" msgstr "PES - Packetized Elementary Stream" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:73 +#: ../lib/XXV/MODULES/STREAM.pm:84 msgid "ES - Elementary Stream" msgstr "ES - Elementary Stream" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:74 +#: ../lib/XXV/MODULES/STREAM.pm:85 msgid "External stream type" msgstr "Externer Streamtyp" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:79 +#: ../lib/XXV/MODULES/STREAM.pm:90 msgid "Stream widget width" msgstr "Streaming Widgetbreite" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:93 -msgid "Stream widget height" -msgstr "Streaming Widgethöhe" - -#-------------------- #: ../lib/XXV/MODULES/SVDRP.pm:19 msgid "This module serves as telnet client for sdvrp." msgstr "Das Modul dient als Telnet Client für sdvrp." @@ -4093,201 +4138,201 @@ msgid "Are you sure to exit the xxv system?" msgstr "Sind Sie sicher, das XXV-System zu beenden?" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:101 +#: ../lib/XXV/MODULES/TIMERS.pm:1001 +msgid "No timer to delete!" +msgstr "Kein Timer zum Löschen!" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:1013 +msgid "No timer defined to toggle! Please use ttoggle 'id'." +msgstr "Kein Timer zum Umschalten definiert! Bitte verwende ttoggle 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:103 msgid "Delete timer 'tid'" msgstr "Lösche Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1019 ../lib/XXV/MODULES/TIMERS.pm:651 ../lib/XXV/MODULES/TIMERS.pm:941 +#: ../lib/XXV/MODULES/TIMERS.pm:1063 ../lib/XXV/MODULES/TIMERS.pm:677 ../lib/XXV/MODULES/TIMERS.pm:985 msgid "Timer '%s' does not exist in the database!" msgstr "Timer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1048 +#: ../lib/XXV/MODULES/TIMERS.pm:1092 msgid "No timer to toggle!" msgstr "Kein Timer zum Umschalten!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:108 +#: ../lib/XXV/MODULES/TIMERS.pm:110 msgid "Activate/Deactive timer 'tid'" msgstr "Aktiviere/Deaktiviere Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1182 -msgid "%d timer written to database." -msgstr "%d Timer in Datenbank geschrieben." - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:122 +#: ../lib/XXV/MODULES/TIMERS.pm:124 msgid "Create event entries if the user has created a new timer." msgstr "Erzeuge Ereigniseinträge, wenn ein neuer Timer vom Anwender erstellt wurde." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:148 +#: ../lib/XXV/MODULES/TIMERS.pm:1240 +msgid "%d timer written to database." +msgstr "%d Timer in Datenbank geschrieben." + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:150 msgid "New timer found: %s" msgstr "Neuer Timer gefunden: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:17 +#: ../lib/XXV/MODULES/TIMERS.pm:19 msgid "This module reads timers and saves it to the database." msgstr "Diese Modul liest die timers.conf und speichert sie in der Datenbank." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1817 +#: ../lib/XXV/MODULES/TIMERS.pm:192 +msgid "Create event entries if the user has deleted a timer." +msgstr "Erzeuge Ereigniseinträge, wenn ein Timer vom Anwender gelöscht wurde." + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:1927 msgid "Timer title '%s' has started the recording!" msgstr "Timer mit Titel '%s' hat die Aufnahme gestartet!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1818 +#: ../lib/XXV/MODULES/TIMERS.pm:1928 msgid "on channel: %s to %s" msgstr "auf Kanal: %s bis %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:190 -msgid "Create event entries if the user has deleted a timer." -msgstr "Erzeuge Ereigniseinträge, wenn ein Timer vom Anwender gelöscht wurde." - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:202 +#: ../lib/XXV/MODULES/TIMERS.pm:204 msgid "Timer deleted: %s" msgstr "Timer gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:239 +#: ../lib/XXV/MODULES/TIMERS.pm:241 msgid "Create event entries if the user has toggled a timer." msgstr "Erzeugt Eventeinträge, wenn eine Timer vom User umgeschaltet wurde." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:25 -msgid "How often timers are to be updated (in seconds)" -msgstr "Wie oft sollen Timer aktualisiert werden (in Sekunden)" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:254 +#: ../lib/XXV/MODULES/TIMERS.pm:256 msgid "Timer activated: %s" msgstr "Timer aktiviert: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:256 +#: ../lib/XXV/MODULES/TIMERS.pm:258 msgid "Timer deactivated: %s" msgstr "Timer deaktiviert: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:299 +#: ../lib/XXV/MODULES/TIMERS.pm:27 +msgid "How often timers are to be updated (in seconds)" +msgstr "Wie oft sollen Timer aktualisiert werden (in Sekunden)" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:301 msgid "Create event entries if a timer has been updated." msgstr "Erzeuge Eventeinträge, wenn ein Timer aktualisiert wurde." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:356 +#: ../lib/XXV/MODULES/TIMERS.pm:358 msgid "%d timer exists." msgstr "Es exisiteren %d Timer." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:41 +#: ../lib/XXV/MODULES/TIMERS.pm:43 msgid "Priority of a timer for recordings when creating a new timer" msgstr "Die Priorität eines Timers für Aufnahmen, bei Erzeugen eines neuen Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:46 +#: ../lib/XXV/MODULES/TIMERS.pm:48 msgid "The guaranteed lifetime (in days) of a recording created by this timer" msgstr "Die garantierte Lebenszeit (in Tagen) einer Aufnahme, die durch diesen Timer erzeugt wurde" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:51 +#: ../lib/XXV/MODULES/TIMERS.pm:53 msgid "List of present source of DVB cards. (eg. S19.2E,S19.2E,T,T )" msgstr "Liste der vorhandenen Quellen der DVB Karten. (z.B. S19.2E,S19.2E,T,T )" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:56 +#: ../lib/XXV/MODULES/TIMERS.pm:58 msgid "Use Programme Delivery Control (PDC) to control start time" msgstr "Verwende Video Program System (VPS) zum Überwachen der Startzeit" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:587 +#: ../lib/XXV/MODULES/TIMERS.pm:613 msgid "Event '%s' does not exist in the database!" msgstr "Sendung '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:603 ../lib/XXV/MODULES/TIMERS.pm:823 +#: ../lib/XXV/MODULES/TIMERS.pm:629 ../lib/XXV/MODULES/TIMERS.pm:867 msgid "New timer" msgstr "Neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:61 +#: ../lib/XXV/MODULES/TIMERS.pm:63 msgid "Change timers if EPG entries change" msgstr "Timer justieren, wenn EPG Eintrag verändert wurde" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:671 +#: ../lib/XXV/MODULES/TIMERS.pm:70 +msgid "List timers 'tid'" +msgstr "Zeige Timer 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:710 msgid "Enable this timer" msgstr "Aktiviere diesen Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:676 +#: ../lib/XXV/MODULES/TIMERS.pm:715 msgid "Use PDC time to control timer" msgstr "Verwende VPS Zeit zum Überwachen des Timers" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:68 -msgid "List timers 'tid'" -msgstr "Zeige Timer 'tid'" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:687 +#: ../lib/XXV/MODULES/TIMERS.pm:726 msgid "Which channel should recorded" msgstr "Welcher Kanal soll aufgezeichnet werden" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:709 +#: ../lib/XXV/MODULES/TIMERS.pm:748 msgid "%Y-%m-%d" msgstr "%d.%m.%Y" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:715 +#: ../lib/XXV/MODULES/TIMERS.pm:754 msgid "Enter a day or weekday in format 'MTWTFSS'." msgstr "Datum oder Wochentag im Format 'MDMDFSS' eingeben." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:74 +#: ../lib/XXV/MODULES/TIMERS.pm:76 msgid "Search timers 'text'" msgstr "Suche Timer 'text'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:80 +#: ../lib/XXV/MODULES/TIMERS.pm:82 msgid "Read timers and write them to the database" msgstr "Lese Timer und schreibe sie in die Datenbank" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:822 +#: ../lib/XXV/MODULES/TIMERS.pm:866 msgid "Edit timer" msgstr "Timer bearbeiten" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:87 +#: ../lib/XXV/MODULES/TIMERS.pm:89 msgid "Create timer 'eid'" msgstr "Erzeuge Timer 'eid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:884 +#: ../lib/XXV/MODULES/TIMERS.pm:928 msgid "No timer defined for deletion! Please use tdelete 'tid'." msgstr "Kein Timer zum Löschen definiert! Bitte verwende tdelete 'tid'." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:94 +#: ../lib/XXV/MODULES/TIMERS.pm:96 msgid "Edit timer 'tid'" msgstr "Bearbeite Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:957 -msgid "No timer to delete!" -msgstr "Kein Timer zum Löschen!" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:969 -msgid "No timer defined to toggle! Please use ttoggle 'id'." -msgstr "Kein Timer zum Umschalten definiert! Bitte verwende ttoggle 'tid'" - -#-------------------- #: ../lib/XXV/MODULES/USER.pm:102 msgid "Log out from current session." msgstr "Abmelden von der aktuellen Sitzung." @@ -4734,17 +4779,17 @@ msgid "This receive and send Ajax messages." msgstr "Dies empfängt und sendet AJAX Nachrichten." #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:282 ../lib/XXV/OUTPUT/Console.pm:306 ../lib/XXV/OUTPUT/Html.pm:517 ../lib/XXV/OUTPUT/Wml.pm:304 ../wml/widgets/dir.tmpl:8 +#: ../lib/XXV/OUTPUT/Ajax.pm:282 ../lib/XXV/OUTPUT/Console.pm:306 ../lib/XXV/OUTPUT/Html.pm:524 ../lib/XXV/OUTPUT/Wml.pm:304 ../wml/widgets/dir.tmpl:8 msgid "Directory '%s' does not exist!" msgstr "Verzeichnis '%s' existiert leider nicht!" #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:287 ../lib/XXV/OUTPUT/Console.pm:311 ../lib/XXV/OUTPUT/Html.pm:522 ../lib/XXV/OUTPUT/Wml.pm:309 ../wml/widgets/file.tmpl:8 +#: ../lib/XXV/OUTPUT/Ajax.pm:287 ../lib/XXV/OUTPUT/Console.pm:311 ../lib/XXV/OUTPUT/Html.pm:529 ../lib/XXV/OUTPUT/Wml.pm:309 ../wml/widgets/file.tmpl:8 msgid "File '%s' does not exist!" msgstr "Datei '%s' existiert leider nicht!" #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:296 ../lib/XXV/OUTPUT/Console.pm:315 ../lib/XXV/OUTPUT/Html.pm:531 ../lib/XXV/OUTPUT/Wml.pm:313 +#: ../lib/XXV/OUTPUT/Ajax.pm:296 ../lib/XXV/OUTPUT/Console.pm:315 ../lib/XXV/OUTPUT/Html.pm:538 ../lib/XXV/OUTPUT/Wml.pm:313 msgid "Error '%s' (%s) : %s!" msgstr "Fehler im Feld '%s' (%s) : %s!" @@ -4830,7 +4875,7 @@ msgid "You can only use one of these elements: %s" msgstr "Sie können nur einen von diesen Elementen verwenden: %s" #-------------------- -#: ../lib/XXV/OUTPUT/Console.pm:642 ../lib/XXV/OUTPUT/Html.pm:782 +#: ../lib/XXV/OUTPUT/Console.pm:642 ../lib/XXV/OUTPUT/Html.pm:932 msgid "Module %s not found!" msgstr "Modul %s nicht gefunden!" @@ -4840,42 +4885,42 @@ msgid "This receives and sends dump messages." msgstr "Dies empfängt und sendet Ausgabe-Nachrichten" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:28 +#: ../lib/XXV/OUTPUT/Html.pm:31 msgid "This receives and sends HTML messages." msgstr "Dies empfängt und sendet HTML Nachrichten" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:459 +#: ../lib/XXV/OUTPUT/Html.pm:466 msgid "Authorization required" msgstr "Berechtigung erforderlich" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:469 +#: ../lib/XXV/OUTPUT/Html.pm:476 msgid "Forbidden" msgstr "Verboten" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:483 ../lib/XXV/OUTPUT/Wml.pm:274 +#: ../lib/XXV/OUTPUT/Html.pm:490 ../lib/XXV/OUTPUT/Wml.pm:274 msgid "Couldn't open file '%s' : %s!" msgstr "Kann Datei '%s' nicht öffnen : %s!" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:484 +#: ../lib/XXV/OUTPUT/Html.pm:491 msgid "Not found" msgstr "Nicht gefunden" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:568 +#: ../lib/XXV/OUTPUT/Html.pm:575 msgid "Please wait ..." msgstr "Bitte warten ..." #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:800 ../lib/XXV/OUTPUT/Wml.pm:392 +#: ../lib/XXV/OUTPUT/Html.pm:950 ../lib/XXV/OUTPUT/Wml.pm:392 msgid "Back to configuration page." msgstr "Zurück zur Konfigurationsseite" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:831 +#: ../lib/XXV/OUTPUT/Html.pm:981 msgid "File" msgstr "Datei" diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo Binary files differindex f621a36..0676eb2 100644 --- a/locale/de/LC_MESSAGES/xxv.mo +++ b/locale/de/LC_MESSAGES/xxv.mo |
