summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-06-15 06:21:31 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-06-15 06:21:31 +0000
commit0b70320be6c8a4e13e02c70f7644678157d703ee (patch)
treeea16e3ce9a6b325c6d8287955158f406b4ba5d21
parent217af3aa226018610f812b2deb41dddd82203dc9 (diff)
downloadxxv-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-xcontrib/update-xxv4
-rw-r--r--contrib/upgrade-xxv-db.sql22
l---------html/asearch.tmpl1
-rw-r--r--html/rdisplay.tmpl19
l---------html/rsearch.tmpl1
l---------html/tsearch.tmpl1
-rw-r--r--lib/XXV/MODULES/AUTOTIMER.pm96
-rw-r--r--lib/XXV/MODULES/KEYWORDS.pm319
-rw-r--r--lib/XXV/MODULES/MUSIC.pm1
-rw-r--r--lib/XXV/MODULES/RECORDS.pm143
-rw-r--r--lib/XXV/MODULES/TIMERS.pm161
-rw-r--r--locale/Makefile1
-rw-r--r--locale/de.po893
-rw-r--r--locale/de/LC_MESSAGES/xxv.mobin78134 -> 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>&nbsp;</td>
+ <td>
+ <?% gettext('Keywords') %?>&nbsp;:&nbsp;
+ <?% FOREACH keyword = param.keywords %?>
+ <?% IF allowkeywords %?>
+ <a href="?cmd=rk&amp;data=<?% keyword.0 %?>">
+ <?% END %?>
+ <?% keyword.0 %?>
+ <?% IF allowkeywords %?>
+ </a>
+ <?% END %?>
+ &nbsp;
+ <?% END %?>
+ </td>
+ </tr>
+ <?% END %?>
<tr>
<td>&nbsp;</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
index f621a36..0676eb2 100644
--- a/locale/de/LC_MESSAGES/xxv.mo
+++ b/locale/de/LC_MESSAGES/xxv.mo
Binary files differ