kaffeine-1.2.2/0000755000175000017500000000000011552636277012730 5ustar lxuserlxuserkaffeine-1.2.2/.krazy0000644000175000017500000000001711552636277014067 0ustar lxuserlxuserSKIP /include/ kaffeine-1.2.2/deviceactions/0000755000175000017500000000000011552636277015550 5ustar lxuserlxuserkaffeine-1.2.2/deviceactions/kaffeine_play_dvd.desktop0000644000175000017500000000416511552636277022603 0ustar lxuserlxuser[Desktop Entry] Type=Service Actions=PlayDVD; X-KDE-Solid-Predicate=OpticalDisc.availableContent & 'VideoDvd' [Desktop Action PlayDVD] Name=Play DVD with Kaffeine Name[bg]=Възпроизвеждане на DVD с Kaffeine Name[ca]=Reprodueix DVD amb Kaffeine Name[ca@valencia]=Reprodueix DVD amb Kaffeine Name[cs]=Přehrát DVD v Kaffeine Name[csb]=Grôj DVD w Kaffeine Name[da]=Afspil dvd med Kaffeine Name[de]=DVD mit Kaffeine abspielen Name[el]=Αναπαραγωγή DVD με το Kaffeine Name[en_GB]=Play DVD with Kaffeine Name[es]=Reproducir DVD con Kaffeine Name[et]=Esita DVD Kaffeine'is Name[fi]=Toista DVD-levy Kaffeinessa Name[fr]=Lire un DVD avec Kaffeine Name[ga]=Seinn DVD le Kaffeine Name[gl]=Reproducir o DVD con Kaffeine Name[hr]=Reproduciraj DVD s Kaffeineom Name[hu]=DVD lejátszása a Kaffeine-nel Name[is]=Spila DVD með Kaffeine Name[it]=Riproduci DVD con Kaffeine Name[km]=ចាក់​ឌីវីឌី​ដោយ​ប្រើ​ Kaffeine Name[ko]=Kaffeine으로 DVD 재생하기 Name[lt]=Groti DVD su Kaffeine Name[lv]=Atskaņot DVD ar Kaffeine Name[nb]=Spill av DVD med Kaffeine Name[nds]=DVD mit Kaffeine afspelen Name[ne]=क्याफिनसँग डीभीडी प्ले गर्नुहोस् Name[nl]=DVD met Kaffeine afspelen Name[pa]=ਕੈਫ਼ੀਨ ਨਾਲ DVD ਚਲਾਓ Name[pl]=Odtwarzaj DVD w Kaffeine Name[pt]=Ver o DVD com o Kaffeine Name[pt_BR]=Reproduzir DVD com o Kaffeine Name[ro]=Redare DVD cu Kaffeine Name[ru]=Воспроизвести DVD в Kaffeine Name[sk]=Prehrať DVD v Kaffeine Name[sr]=Пусти ДВД Кафеином Name[sr@ijekavian]=Пусти ДВД Кафеином Name[sr@ijekavianlatin]=Pusti DVD Kaffeineom Name[sr@latin]=Pusti DVD Kaffeineom Name[sv]=Spela dvd med Kaffeine Name[tg]=Намоиши DVD бо Kaffeine Name[th]=เล่นแผ่นดีวีดีด้วย 'แคฟเฟอีน-K' Name[tr]=DVD'yi Kaffeine ile Oynat Name[uk]=Відтворити DVD за допомогою Kaffeine Name[x-test]=xxPlay DVD with Kaffeinexx Name[zh_CN]=用 Kaffeine 播放 DVD Name[zh_TW]=用 Kaffeine 播放 DVD Exec=kaffeine --dvd %d Icon=kaffeine kaffeine-1.2.2/deviceactions/kaffeine_play_audiocd.desktop0000644000175000017500000000473411552636277023440 0ustar lxuserlxuser[Desktop Entry] Type=Service Actions=PlayAudioCd; X-KDE-Solid-Predicate=OpticalDisc.availableContent & 'Audio' [Desktop Action PlayAudioCd] Name=Play Audio CD with Kaffeine Name[bg]=Възпроизвеждане на аудио CD с Kaffeine Name[ca]=Reprodueix CD d'àudio amb Kaffeine Name[ca@valencia]=Reprodueix CD d'àudio amb Kaffeine Name[cs]=Přehrát audio CD v Kaffeine Name[csb]=Grôj Aùdio CD w Kaffeine Name[da]=Afspil lyd-cd med Kaffeine Name[de]=Audio-CD mit Kaffeine abspielen Name[el]=Αναπαραγωγή CD ήχου με το Kaffeine Name[en_GB]=Play Audio CD with Kaffeine Name[es]=Reproducir CD de audio con Kaffeine Name[et]=Esita audio-CD Kaffeine'is Name[fi]=Soita musiikki-CD Kaffeinessa Name[fr]=Lire un CD Audio avec Kaffeine Name[ga]=Seinn Dlúthdhiosca Fuaime le Kaffeine Name[gl]=Reproducir o CD de música con Kaffeine Name[hr]=Sviraj zvučni CD s Kaffeineom Name[hu]=Hang-CD lejátszása a Kaffeine-nel Name[is]=Spila hljóð-CD með Kaffeine Name[it]=Riproduci CD audio con Kaffeine Name[km]=ចាក់​ស៊ីឌី​អូឌីយ៉ូ​ដោយ​ប្រើ​ Kaffeine Name[ko]=Kaffeine으로 오디오 CD 재생하기 Name[lt]=Groti Audio CD su Kaffeine Name[lv]=Atskaņot Audio CD ar Kaffeine Name[nb]=Spill av lyd-CD med Kaffeine Name[nds]=Klang-CD mit Kaffeine afspelen Name[ne]=क्याफिनसँग अडियो सीडी प्ले गर्नुहोस् Name[nl]=Audio-cd met Kaffeine afspelen Name[pa]=ਕੈਫ਼ੀਨ ਨਾਲ ਆਡੀਓ CD ਚਲਾਓ Name[pl]=Odtwarzaj audio CD w Kaffeine Name[pt]=Tocar o CD de Áudio com o Kaffeine Name[pt_BR]=Reproduzir CD de áudio com o Kaffeine Name[ro]=Redare disc audio cu Kaffeine Name[ru]=Воспроизвести аудиодиск в Kaffeine Name[sk]=Prehrať Audio CD v Kaffeine Name[sr]=Пусти аудио ЦД Кафеином Name[sr@ijekavian]=Пусти аудио ЦД Кафеином Name[sr@ijekavianlatin]=Pusti audio CD Kaffeineom Name[sr@latin]=Pusti audio CD Kaffeineom Name[sv]=Spela ljud-cd med Kaffeine Name[tg]=Навозиши диски аудио бо Kaffeine Name[th]=เล่นแผ่นซีดีเสียงด้วย 'แคฟเฟอีน-K' Name[tr]=Ses CD'sini Kaffeine ile Oynat Name[uk]=Відтворити Аудіо-КД за допомогою Kaffeine Name[x-test]=xxPlay Audio CD with Kaffeinexx Name[zh_CN]=用 Kaffeine 播放音频 CD Name[zh_TW]=用 Kaffeine 播放音樂光碟 Exec=kaffeine --audiocd %d Icon=kaffeine kaffeine-1.2.2/deviceactions/CMakeLists.txt0000644000175000017500000000030411552636277020305 0ustar lxuserlxuserset(solid_actions kaffeine_play_audiocd.desktop kaffeine_play_dvd.desktop kaffeine_play_videocd.desktop) install(FILES ${solid_actions} DESTINATION ${DATA_INSTALL_DIR}/solid/actions) kaffeine-1.2.2/deviceactions/kaffeine_play_videocd.desktop0000644000175000017500000000411111552636277023432 0ustar lxuserlxuser[Desktop Entry] Type=Service Actions=PlayVideoCd; X-KDE-Solid-Predicate=[OpticalDisc.availableContent & 'VideoCd' OR OpticalDisc.availableContent & 'SuperVideoCd'] [Desktop Action PlayVideoCd] Name=Play Video CD with Kaffeine Name[bg]=Възпроизвеждане на CD с видео с Kaffeine Name[ca]=Reprodueix CD de vídeo amb Kaffeine Name[ca@valencia]=Reprodueix CD de vídeo amb Kaffeine Name[cs]=Přehrát VCD v Kaffeine Name[csb]=Grôj wideò CD w Kaffeine Name[da]=Afspil video-cd med Kaffeine Name[de]=Video-CD mit Kaffeine abspielen Name[en_GB]=Play Video CD with Kaffeine Name[es]=Reproducir Vídeo CD con Kaffeine Name[et]=Esita video-CD Kaffeine'is Name[fi]=Toista video-CD Kaffeinessa Name[fr]=Lire un VCD avec Kaffeine Name[hr]=Reproduciraj video CD s Kaffeineom Name[hu]=Video CD lejátszása a Kaffeine-nel Name[is]=Spila Vídeó-CD með Kaffeine Name[it]=Riproduci Video CD con Kaffeine Name[km]=ចាក់​ស៊ីឌី​វីដេអូ​ដោយ​ប្រើ Kaffeine Name[ko]=Kaffeine으로 비디오 CD 재생하기 Name[nb]=Spill Video-VCD med Kaffeine Name[nds]=Video-CD mit Kaffeine afspelen Name[nl]=Video-cd met Kaffeine afspelen Name[pa]=ਕੈਫ਼ੀਨ ਨਾਲ ਵਿਡੀਓ CD ਚਲਾਓ Name[pt]=Ver o CD de Vídeo com o Kaffeine Name[pt_BR]=Reproduzir CD de vídeo com o Kaffeine Name[ro]=Redare disc video cu Kaffeine Name[ru]=Воспроизвести Video CD в Kaffeine Name[sk]=Prehrať Video CD v Kaffeine Name[sr]=Пусти видео ЦД Кафеином Name[sr@ijekavian]=Пусти видео ЦД Кафеином Name[sr@ijekavianlatin]=Pusti video CD Kaffeineom Name[sr@latin]=Pusti video CD Kaffeineom Name[sv]=Spela video-cd med Kaffeine Name[th]=เล่นแผ่นซีดีวีดิโอด้วย 'แคฟเฟอีน-K' Name[tr]=Video CD'sini Kaffeine ile Oynat Name[uk]=Відтворити відео-КД за допомогою Kaffeine Name[x-test]=xxPlay Video CD with Kaffeinexx Name[zh_CN]=用 Kaffeine 播放视频 CD Name[zh_TW]=用 Kaffeine 播放影像光碟 Exec=kaffeine --videocd %d Icon=kaffeine kaffeine-1.2.2/Changelog0000644000175000017500000000623211552636277014545 0ustar lxuserlxuser------------------ Kaffeine Changelog ------------------ Version 1.2.2 (2011-04-17): - fix crash after removing channels Version 1.2.1 (2011-04-05): - fix dvb-s2 tuning regression Version 1.2 (2011-04-04): - add search function to epg - implement ATSC support for epg - fix gnome screen saver inhibition - other fixes and improvements ... Version 1.1 (2010-09-01): - adapt to new shared-mime-info (so that .m2t is assigned to kaffeine again) - workaround issue that video isn't shown without changing tabs when using QT 4.7 - recording schedule: fix sorting, improve column and dialog sizes, show a warning about active and pending recordings when closing kaffeine - program guide: remove the "Refresh" button (not necessary anymore) - channel editor: allow sorting by drag and drop Version 1.0 (2010-05-31): - new dependency: libXss - scheduled programs are shown in the program guide - the begin and end margins for recordings are configurable - CICAM is supported - all audio pids are recorded during timeshift - subtitle support (also autoloading) - other fixes and improvements ... Version 1.0-pre3 (2010-01-31): - new dependencies: Qt SQLite plugin, xine-lib, libX11 (Phonon is no longer needed) - added configurable daily or weekly repetition of recording schedule entries - added support for dynamic audio / subtitles streams - reworked playlist support - added DBUS interface and partial MPRIS support - added dvd menu button and deinterlace option - added system tray icon and minimal mode option - other fixes and improvements ... Version 1.0-pre2 (2009-08-09): - added screen saver inhibition (using DBUS; org.freedesktop.ScreenSaver) - added basic playlist features: .m3u, .pls, .xspf (+ old kaffeine format), drag and drop, repeat mode and shuffle - added OSD: various notifications, now and next epg - added DVB-S2 support using S2 API (old API still supported for non-S2 usage) - improved epg: save and restore events, possibility to schedule programs - other fixes and improvements ... Version 1.0-pre1 (2009-04-26): - initial KDE4 release based on KDE4, QT4, Phonon and Solid much of the code base was rewritten; as a consequence not all features from old kaffeine are present yet - supports: - KDE integration - DVB-C, DVB-S, DVB-T and ATSC devices - multiple devices and device hot plug - scanning inclusive region-based DVB-T Autoscan - audio stream and subtitle selection - recordings inclusive instant record - time shifting - EPG (incomplete) - audio CDs, video CDs and DVDs - stuff you might miss: (working hard on them of course ;-) - localization (see below), full EPG support, CICAM, playlist handling, OSD, S2API, broadcast, DBUS interface - note: there will be a follow-up release in 1 - 1.5 months fixing important shortcomings and also giving time for translations - note: KDE 4.2, Phonon 4.3 and QT 4.4 are required to build / run Kaffeine - note: Kaffeine currently depends on phonon-xine for digital TV playback (due to the used phonon API) - note: you have to reconfigure / rescan if you were using snapshots before kaffeine-1.2.2/tools/0000755000175000017500000000000011552636277014070 5ustar lxuserlxuserkaffeine-1.2.2/tools/update_icons.sh0000755000175000017500000000072511552636277017110 0ustar lxuserlxuser#!/bin/sh set -eu cd kaffeine/icons rm -f hi* if [ `find /usr/share/icons/oxygen | grep -i kaffeine | wc --lines` != 6 ] ; then echo "recheck number of icons" exit 1 fi for SIZE in 16 22 32 48 64 128 ; do wget http://websvn.kde.org/*checkout*/trunk/kdesupport/oxygen-icons/$SIZE'x'$SIZE/apps/kaffeine.png -O hi$SIZE-apps-kaffeine.png done wget http://websvn.kde.org/*checkout*/trunk/kdesupport/oxygen-icons/scalable/apps/kaffeine.svgz -O hisc-apps-kaffeine.svgz kaffeine-1.2.2/tools/update_scanfile.sh0000755000175000017500000000027711552636277017563 0ustar lxuserlxuser#!/bin/sh set -eu mkdir -p kaffeine_build cd kaffeine_build cmake ../kaffeine -DBUILD_TOOLS=1 make convertscanfiles tools/convertscanfiles ../dvb-apps/util/scan ../kaffeine/src/scanfile.dvb kaffeine-1.2.2/tools/update_mimetypes.sh0000755000175000017500000000031311552636277020002 0ustar lxuserlxuser#!/bin/sh set -eu mkdir -p kaffeine_build cd kaffeine_build cmake ../kaffeine -DBUILD_TOOLS=1 make updatemimetypes tools/updatemimetypes ../kaffeine/src/kaffeine.desktop ../kaffeine/src/mediawidget.cpp kaffeine-1.2.2/tools/update_l10n.sh0000755000175000017500000000164111552636277016545 0ustar lxuserlxuser#!/bin/sh set -eu cd kaffeine rm -fr po mkdir po cd po cat >CMakeLists.txt << EOF find_package(Gettext REQUIRED) IF(NOT GETTEXT_MSGFMT_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgfmt binary") endif(NOT GETTEXT_MSGFMT_EXECUTABLE) if(NOT GETTEXT_MSGMERGE_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgmerge binary") endif(NOT GETTEXT_MSGMERGE_EXECUTABLE) EOF wget http://websvn.kde.org/*checkout*/trunk/l10n-kde4/subdirs SUBDIRS=$(cat subdirs | grep -vx "x-test") rm subdirs for SUBDIR in $SUBDIRS ; do mkdir $SUBDIR cd $SUBDIR wget http://websvn.kde.org/*checkout*/trunk/l10n-kde4/$SUBDIR/messages/extragear-multimedia/kaffeine.po || true cd .. if test -e $SUBDIR/kaffeine.po ; then echo "add_subdirectory($SUBDIR)" >>CMakeLists.txt echo "GETTEXT_PROCESS_PO_FILES($SUBDIR ALL INSTALL_DESTINATION \${LOCALE_INSTALL_DIR} kaffeine.po)" >$SUBDIR/CMakeLists.txt else rmdir $SUBDIR fi done kaffeine-1.2.2/tools/dvbsi.xml0000644000175000017500000001722011552636277015723 0ustar lxuserlxuser kaffeine-1.2.2/tools/update_headers.sh0000755000175000017500000000070211552636277017403 0ustar lxuserlxuser#!/bin/sh set -eu cd kaffeine/include rm -fr * wget "http://git.linuxtv.org/linux-2.6.git?a=blob_plain;f=include/linux/dvb/dmx.h;hb=HEAD" -O dmx.h.1 wget "http://git.linuxtv.org/linux-2.6.git?a=blob_plain;f=include/linux/dvb/frontend.h;hb=HEAD" -O frontend.h.1 unifdef -k -U__KERNEL__ dmx.h.1 >dmx.h || true unifdef -k -U__KERNEL__ frontend.h.1 >frontend.h || true sed 'N;s/,\n\}/\n\}/;P;D;' -i dmx.h sed 'N;s/,\n\}/\n\}/;P;D;' -i frontend.h rm *.1 kaffeine-1.2.2/tools/updatemimetypes.cpp0000644000175000017500000001150611552636277020016 0ustar lxuserlxuser/* * updatemimetypes.cpp * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include int main(int argc, char *argv[]) { // QCoreApplication is needed for proper file name handling QCoreApplication application(argc, argv); if (argc != 3) { qCritical() << "syntax:" << argv[0] << " "; return 1; } QFile file(argv[1]); QStringList lines; { if (!file.open(QFile::ReadOnly)) { qCritical() << "cannot open file" << file.fileName(); return 1; } QTextStream stream(&file); stream.setCodec("UTF-8"); while (!stream.atEnd()) { lines.append(stream.readLine()); } file.close(); } int mimeTypeIndex = -1; QStringList mimeTypes; for (int i = 0; i < lines.size(); ++i) { if (lines.at(i).startsWith(QLatin1String("MimeType="))) { if (mimeTypeIndex >= 0) { qCritical() << "more than one MimeType entry found in file" << file.fileName(); return 1; } mimeTypeIndex = i; mimeTypes = lines.at(i).mid(9).split(';', QString::SkipEmptyParts); } } if (mimeTypeIndex < 0) { qCritical() << "cannot find a MimeType entry in file" << file.fileName(); return 1; } mimeTypes.removeDuplicates(); mimeTypes.sort(); QStringList realExtensions; for (int skipMimeType = -1; skipMimeType < mimeTypes.size(); ++skipMimeType) { QStringList extensions; for (int i = 0; i < mimeTypes.size(); ++i) { if (i != skipMimeType) { KMimeType::Ptr mimetype = KMimeType::mimeType(mimeTypes.at(i), KMimeType::DontResolveAlias); if (mimetype.isNull()) { qCritical() << "unknown mime type" << mimeTypes.at(i); return 1; } extensions.append(mimetype->patterns()); } } QRegExp regExp("\\*\\.[a-z0-9+]+"); for (int i = 0; i < extensions.size(); ++i) { if (extensions.at(i) == "*.anim[1-9j]") { extensions.removeAt(i); extensions.insert(i, "*.anim1"); extensions.insert(i, "*.anim2"); extensions.insert(i, "*.anim3"); extensions.insert(i, "*.anim4"); extensions.insert(i, "*.anim5"); extensions.insert(i, "*.anim6"); extensions.insert(i, "*.anim7"); extensions.insert(i, "*.anim8"); extensions.insert(i, "*.anim9"); extensions.insert(i, "*.animj"); } if (!regExp.exactMatch(extensions.at(i))) { qCritical() << "unknown extension syntax" << extensions.at(i); return 1; } } extensions.removeDuplicates(); extensions.sort(); if (realExtensions.isEmpty()) { realExtensions = extensions; } else if (extensions.size() == realExtensions.size()) { qWarning() << "possibly unneeded mime type found" << mimeTypes.at(skipMimeType); } } { if (!file.open(QFile::WriteOnly | QFile::Truncate)) { qCritical() << "cannot open file" << file.fileName(); return 1; } QTextStream stream(&file); stream.setCodec("UTF-8"); lines[mimeTypeIndex] = "MimeType=" + mimeTypes.join(";") + ';'; foreach (const QString &line, lines) { stream << line << '\n'; } file.close(); } file.setFileName(argv[2]); lines.clear(); { if (!file.open(QFile::ReadOnly)) { qCritical() << "cannot open file" << file.fileName(); return 1; } QTextStream stream(&file); stream.setCodec("UTF-8"); while (!stream.atEnd()) { lines.append(stream.readLine()); } file.close(); } { if (!file.open(QFile::WriteOnly | QFile::Truncate)) { qCritical() << "cannot open file" << file.fileName(); return 1; } QTextStream stream(&file); stream.setCodec("UTF-8"); for (int i = 0; i < lines.size(); ++i) { stream << lines.at(i) << '\n'; if (lines.at(i) == "\t\t// generated from kaffeine.desktop's mime types") { QString line = "\t\t\""; foreach (const QString &extension, realExtensions) { if ((line.size() + extension.size()) > 83) { stream << line << "\"\n"; line = "\t\t\""; } line += extension; line += ' '; } stream << line << "\"\n"; while ((i < lines.size()) && (lines.at(i) != "\t\t// manual entries")) { ++i; } stream << lines.at(i) << '\n'; } } file.close(); } return 0; } kaffeine-1.2.2/tools/convertscanfiles.cpp0000644000175000017500000002003111552636277020140 0ustar lxuserlxuser/* * convertscanfiles.cpp * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include "../src/dvb/dvbtransponder.h" class NumericalLessThan { public: bool operator()(const QString &x, const QString &y) { int i = 0; while (true) { if ((i == x.length()) || (i == y.length())) { return x.length() < y.length(); } if (x.at(i) != y.at(i)) { break; } ++i; } int xIndex = x.indexOf(' ', i); if (xIndex == -1) { xIndex = x.length(); } int yIndex = y.indexOf(' ', i); if (yIndex == -1) { yIndex = y.length(); } if (xIndex != yIndex) { return xIndex < yIndex; } else { return x.at(i) < y.at(i); } } }; static QString parseLine(DvbTransponderBase::TransmissionType type, const QString &line, const QString &fileName) { switch (type) { case DvbTransponderBase::DvbC: { DvbCTransponder transponder; if (!transponder.fromString(line)) { break; } if (transponder.modulation == DvbCTransponder::ModulationAuto) { qWarning() << "Warning: modulation == AUTO in file" << fileName; } if (transponder.fecRate != DvbCTransponder::FecNone) { qWarning() << "Warning: fec rate != NONE in file" << fileName; } return transponder.toString(); } case DvbTransponderBase::DvbS: { if (line.startsWith(QLatin1String("S "))) { DvbSTransponder transponder; if (!transponder.fromString(line)) { break; } if (transponder.fecRate == DvbSTransponder::FecNone) { qWarning() << "Warning: fec rate == NONE in file" << fileName; } // fecRate == AUTO is ok return transponder.toString(); } else { DvbS2Transponder transponder; if (!transponder.fromString(line)) { break; } if (transponder.fecRate == DvbSTransponder::FecNone) { qWarning() << "Warning: fec rate == NONE in file" << fileName; } // fecRate == AUTO is ok return transponder.toString(); } } case DvbTransponderBase::DvbT: { DvbTTransponder transponder; if (!transponder.fromString(line)) { break; } if (transponder.bandwidth == DvbTTransponder::BandwidthAuto) { qWarning() << "Warning: bandwidth == AUTO in file" << fileName; } if ((transponder.modulation == DvbTTransponder::ModulationAuto) && !fileName.startsWith("auto-")) { qWarning() << "Warning: modulation == AUTO in file" << fileName; } if (transponder.fecRateHigh == DvbTTransponder::FecNone) { qWarning() << "Warning: fec rate high == NONE in file" << fileName; } // fecRateHigh == AUTO is ok if (transponder.fecRateLow != DvbTTransponder::FecNone) { qWarning() << "Warning: fec rate low != NONE in file" << fileName; } if ((transponder.transmissionMode == DvbTTransponder::TransmissionModeAuto) && !fileName.startsWith("auto-")) { qWarning() << "Warning: transmission mode == AUTO in file" << fileName; } if ((transponder.guardInterval == DvbTTransponder::GuardIntervalAuto) && !fileName.startsWith("auto-")) { qWarning() << "Warning: guard interval == AUTO in file" << fileName; } if (transponder.hierarchy != DvbTTransponder::HierarchyNone) { qWarning() << "Warning: hierarchy != NONE in file" << fileName; } return transponder.toString(); } case DvbTransponderBase::Atsc: { AtscTransponder transponder; if (!transponder.fromString(line)) { break; } if (transponder.modulation == AtscTransponder::ModulationAuto) { qWarning() << "Warning: modulation == AUTO in file" << fileName; } return transponder.toString(); } } return QString(); } static void readScanDirectory(QTextStream &out, const QString &path, DvbTransponderBase::TransmissionType type) { QDir dir; switch (type) { case DvbTransponderBase::DvbC: dir.setPath(path + "/dvb-c"); break; case DvbTransponderBase::DvbS: dir.setPath(path + "/dvb-s"); break; case DvbTransponderBase::DvbS2: break; case DvbTransponderBase::DvbT: dir.setPath(path + "/dvb-t"); break; case DvbTransponderBase::Atsc: dir.setPath(path + "/atsc"); break; } if (!dir.exists()) { qCritical() << "Error: can't open directory" << dir.path(); return; } foreach (const QString &fileName, dir.entryList(QDir::Files, QDir::Name)) { QFile file(dir.filePath(fileName)); if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Error: can't open file" << file.fileName(); return; } QTextStream stream(&file); stream.setCodec("UTF-8"); QList transponders; while (!stream.atEnd()) { QString line = stream.readLine(); int pos = line.indexOf('#'); if (pos != -1) { while ((pos > 0) && (line[pos - 1] == ' ')) { --pos; } line.truncate(pos); } if (line.isEmpty()) { continue; } QString string = parseLine(type, line, fileName); if (string.isEmpty()) { qCritical() << "Error: can't parse line" << line << "in file" << fileName; return; } // reduce multiple spaces to one space and remove leading zeros for (int i = 1; i < line.length(); ++i) { if (line.at(i - 1) != ' ') { continue; } if ((line.at(i) == ' ') || (line.at(i) == '0')) { line.remove(i, 1); --i; } } if (line != string) { qWarning() << "Warning: suboptimal representation" << line << "<-->" << string << "in file" << fileName; } transponders.append(string); } if (transponders.isEmpty()) { qWarning() << "Warning: no transponder found in file" << fileName; continue; } QString name = dir.dirName() + '/' + fileName; if (type == DvbSTransponder::DvbS) { // use upper case for orbital position name[name.size() - 1] = name.at(name.size() - 1).toUpper(); QString source = name; source.remove(0, source.lastIndexOf('-') + 1); bool ok = false; if (source.endsWith('E')) { source.chop(1); source.toDouble(&ok); } else if (source.endsWith('W')) { source.chop(1); source.toDouble(&ok); } if (!ok) { qWarning() << "Warning: invalid orbital position for file" << fileName; } } out << '[' << name << "]\n"; qSort(transponders.begin(), transponders.end(), NumericalLessThan()); foreach (const QString &transponder, transponders) { out << transponder << '\n'; } } } int main(int argc, char *argv[]) { // QCoreApplication is needed for proper file name handling QCoreApplication app(argc, argv); if (argc != 3) { qCritical() << "Syntax: convertscanfiles "; return 1; } QByteArray data; QTextStream out(&data); out.setCodec("UTF-8"); out << "# this file is automatically generated from http://linuxtv.org/hg/dvb-apps\n"; out << "[date]\n"; out << QDate::currentDate().toString(Qt::ISODate) << '\n'; QString path(argv[1]); readScanDirectory(out, path, DvbTransponderBase::DvbC); readScanDirectory(out, path, DvbTransponderBase::DvbS); readScanDirectory(out, path, DvbTransponderBase::DvbT); readScanDirectory(out, path, DvbTransponderBase::Atsc); out.flush(); QFile file(argv[2]); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { qCritical() << "Error: can't open file" << file.fileName(); return 1; } file.write(data); QFile compressedFile(QString(argv[2]) + ".qz"); if (!compressedFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { qCritical() << "Error: can't open file" << compressedFile.fileName(); return 1; } compressedFile.write(qCompress(data, 9)); return 0; } kaffeine-1.2.2/tools/CMakeLists.txt0000644000175000017500000000062011552636277016626 0ustar lxuserlxuseradd_executable(convertscanfiles convertscanfiles.cpp ../src/dvb/dvbtransponder.cpp) target_link_libraries(convertscanfiles ${QT_QTCORE_LIBRARY}) add_executable(updatedvbsi updatedvbsi.cpp) target_link_libraries(updatedvbsi ${QT_QTCORE_LIBRARY} ${QT_QTXML_LIBRARY}) add_executable(updatemimetypes updatemimetypes.cpp) target_link_libraries(updatemimetypes ${QT_QTCORE_LIBRARY} ${KDE4_KDECORE_LIBS}) kaffeine-1.2.2/tools/updatedvbsi.cpp0000644000175000017500000003720211552636277017112 0ustar lxuserlxuser/* * updatedvbsi.cpp * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include class Element { public: enum Type { Bool, Int, List }; Element() { } ~Element() { } QString toString() const; Type type; QString name; int bits; int bitIndex; QString offsetString; QString lengthFunc; QString listType; }; QString Element::toString() const { if (type == Bool) { int bitsLeft = 8 - (bitIndex % 8); int andValue = (1 << (bitsLeft - 1)); return (QString("(at(") + QString::number(bitIndex / 8) + offsetString + ") & 0x" + QString::number(andValue, 16) + ") != 0"); } if (type == List) { return (QString::number(bitIndex / 8) + offsetString); } QString result; int currentBitIndex = bitIndex; int currentBits = bits; while (true) { int bitsLeft = 8 - (currentBitIndex % 8); int andValue = (1 << (bitsLeft)) - 1; int leftShift = currentBits - bitsLeft; if (leftShift != 0) { result += '('; } if (andValue != 255) { result += '('; } result += "at(" + QString::number(currentBitIndex / 8) + offsetString + ')'; if (andValue != 255) { result += " & 0x" + QString::number(andValue, 16) + ')'; } if (leftShift != 0) { if (leftShift > 0) { result += " << " + QString::number(leftShift) + ')'; } else { result += " >> " + QString::number(-leftShift) + ')'; } } if (currentBits <= bitsLeft) { break; } result += " | "; currentBitIndex += bitsLeft; currentBits -= bitsLeft; } return result; } QTextStream &operator<<(QTextStream &stream, const Element &element) { stream << element.toString(); return stream; } class SiXmlParser { public: enum Type { Descriptor, Entry, Section }; static void parseEntry(QDomNode node, Type type, QTextStream &headerStream, QTextStream &cppStream); }; void SiXmlParser::parseEntry(QDomNode node, Type type, QTextStream &headerStream, QTextStream &cppStream) { QList elements; int bitIndex = 0; int minBits = 0; QString offsetString; switch (type) { case Descriptor: bitIndex = 2 * 8; minBits = 2 * 8; break; case Entry: bitIndex = 0; minBits = 0; break; case Section: bitIndex = 8 * 8; minBits = 12 * 8; break; } for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) { QDomNamedNodeMap attributes = child.attributes(); Element element; element.name = child.nodeName(); element.bits = attributes.namedItem("bits").nodeValue().toInt(); element.bitIndex = bitIndex; element.offsetString = offsetString; QString type = attributes.namedItem("type").nodeValue(); if ((element.name == "unused") || (type == "int")) { if (element.bits <= 0) { qCritical() << "invalid number of bits"; return; } element.type = Element::Int; } else if (type == "bool") { element.type = Element::Bool; if (element.bits != 1) { qCritical() << "invalid number of bits"; return; } } else if (type == "list") { element.type = Element::List; element.bits = 0; element.lengthFunc = attributes.namedItem("lengthFunc").nodeValue(); element.listType = attributes.namedItem("listType").nodeValue(); if ((element.bitIndex % 8) != 0) { qCritical() << "list doesn't start at a byte boundary"; return; } offsetString += " + " + element.name + "Length"; } else { qCritical() << "unknown type:" << type; return; } bitIndex += element.bits; minBits += element.bits; if (element.name != "unused") { elements.append(element); } } if ((minBits % 8) != 0) { qCritical() << "minBits isn't a multiple of 8"; return; } QString entryName = node.nodeName(); QString initFunctionName = QString(entryName).replace(QRegExp("^Dvb|^Atsc"), "init"); bool ignoreFirstNewLine = false; switch (type) { case Descriptor: cppStream << "\n"; cppStream << entryName << "::" << entryName << "(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor)\n"; cppStream << "{\n"; cppStream << "\tif (getLength() < " << (minBits / 8) << ") {\n"; cppStream << "\t\tkDebug() << \"invalid descriptor\";\n"; cppStream << "\t\tinitSectionData();\n"; cppStream << "\t\treturn;\n"; cppStream << "\t}\n"; break; case Entry: { cppStream << "\n"; cppStream << "void " << entryName << "::" << initFunctionName << "(const char *data, int size)\n"; cppStream << "{\n"; cppStream << "\tif (size < " << (minBits / 8) << ") {\n"; cppStream << "\t\tif (size != 0) {\n"; cppStream << "\t\t\tkDebug() << \"invalid entry\";\n"; cppStream << "\t\t}\n"; cppStream << "\n"; cppStream << "\t\tinitSectionData();\n"; cppStream << "\t\treturn;\n"; cppStream << "\t}\n"; cppStream << "\n"; bool fixedLength = true; for (int i = 0; i < elements.size(); ++i) { const Element &element = elements.at(i); if (element.name != "entryLength") { continue; } if (((element.bitIndex + element.bits) % 8) != 0) { qCritical() << "entry length doesn't start at a byte boundary"; return; } QString entryLengthCalculation = element.toString(); while (true) { int oldSize = entryLengthCalculation.size(); entryLengthCalculation.replace(QRegExp("at\\(([0-9]*)\\)"), "static_cast(data[\\1])"); if (entryLengthCalculation.size() == oldSize) { break; } } cppStream << "\tint entryLength = ((" << entryLengthCalculation << ") + " << ((element.bitIndex + element.bits) / 8) << ");\n"; cppStream << "\n"; cppStream << "\tif (entryLength > size) {\n"; cppStream << "\t\tkDebug() << \"adjusting length\";\n"; cppStream << "\t\tentryLength = size;\n"; cppStream << "\t}\n"; cppStream << "\n"; cppStream << "\tinitSectionData(data, entryLength, size);\n"; ignoreFirstNewLine = true; elements.removeAt(i); fixedLength = false; break; } if (fixedLength) { cppStream << "\tinitSectionData(data, " << (minBits / 8) << ", size);\n"; ignoreFirstNewLine = true; } break; } case Section: cppStream << "\n"; cppStream << "void " << entryName << "::" << initFunctionName << "(const char *data, int size)\n"; cppStream << "{\n"; cppStream << "\tif (size < " << (minBits / 8) << ") {\n"; cppStream << "\t\tinitSectionData();\n"; cppStream << "\t\treturn;\n"; cppStream << "\t}\n"; cppStream << "\n"; cppStream << "\tinitStandardSection(data, size);\n"; ignoreFirstNewLine = true; break; } QList privateVars; for (int i = 0; i < elements.size(); ++i) { const Element &element = elements.at(i); if ((element.type != Element::List) || element.lengthFunc.isEmpty()) { continue; } if ((i <= 0) || (elements.at(i - 1).name != element.lengthFunc)) { qCritical() << "lengthFunc isn't a valid back reference"; return; } if (ignoreFirstNewLine) { ignoreFirstNewLine = false; } else { cppStream << "\n"; } cppStream << "\t" << element.name << "Length = " << elements.at(i - 1) << ";\n"; cppStream << "\n"; if (element.offsetString.isEmpty()) { cppStream << "\tif (" << element.name << "Length > (getLength() - " << (minBits / 8) << ")) {\n"; cppStream << "\t\tkDebug() << \"adjusting length\";\n"; cppStream << "\t\t" << element.name << "Length = (getLength() - " << (minBits / 8) << ");\n"; } else { cppStream << "\tif (" << element.name << "Length > (getLength() - (" << (minBits / 8) << element.offsetString << "))) {\n"; cppStream << "\t\tkDebug() << \"adjusting length\";\n"; cppStream << "\t\t" << element.name << "Length = (getLength() - (" << (minBits / 8) << element.offsetString << "));\n"; } cppStream << "\t}\n"; elements.removeAt(i - 1); --i; privateVars.append(element.name + "Length"); } cppStream << "}\n"; switch (type) { case Descriptor: headerStream << "\n"; headerStream << "class " << entryName << " : public DvbDescriptor\n"; headerStream << "{\n"; headerStream << "public:\n"; headerStream << "\texplicit " << entryName << "(const DvbDescriptor &descriptor);\n"; break; case Entry: headerStream << "\n"; headerStream << "class " << entryName << " : public DvbSectionData\n"; headerStream << "{\n"; headerStream << "public:\n"; headerStream << "\t" << entryName << "(const char *data, int size)\n"; headerStream << "\t{\n"; headerStream << "\t\t" << initFunctionName << "(data, size);\n"; headerStream << "\t}\n"; headerStream << "\n"; break; case Section: headerStream << "\n"; headerStream << "class " << entryName << " : public DvbStandardSection\n"; headerStream << "{\n"; headerStream << "public:\n"; headerStream << "\t" << entryName << "(const char *data, int size)\n"; headerStream << "\t{\n"; headerStream << "\t\t" << initFunctionName << "(data, size);\n"; headerStream << "\t}\n"; headerStream << "\n"; headerStream << "\texplicit " << entryName << "(const QByteArray &byteArray)\n"; headerStream << "\t{\n"; headerStream << "\t\t" << initFunctionName << "(byteArray.constData(), byteArray.size());\n"; headerStream << "\t}\n"; headerStream << "\n"; break; } headerStream << "\t~" << entryName << "() { }\n"; if (type == Entry) { headerStream << "\n"; headerStream << "\tvoid advance()\n"; headerStream << "\t{\n"; headerStream << "\t\t" << initFunctionName << "(getData() + getLength(), getSize() - getLength());\n"; headerStream << "\t}\n"; } if (type == Section) { QString extension = node.attributes().namedItem("extension").nodeValue(); if (!extension.isEmpty()) { headerStream << "\n"; headerStream << "\tint " << extension << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn (at(3) << 8) | at(4);\n"; headerStream << "\t}\n"; } } foreach (const Element &element, elements) { switch (element.type) { case Element::Bool: headerStream << "\n"; headerStream << "\tbool " << element.name << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn (" << element << ");\n"; headerStream << "\t}\n"; break; case Element::Int: headerStream << "\n"; headerStream << "\tint " << element.name << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn " << element << ";\n"; headerStream << "\t}\n"; break; case Element::List: if (element.listType == "unused") { break; } if (element.listType == "DvbString") { headerStream << "\n"; headerStream << "\tQString " << element.name << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn DvbSiText::convertText(getData() + " << element << ", "; } else if (element.listType == "AtscString") { headerStream << "\n"; headerStream << "\tQString " << element.name << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn AtscPsipText::convertText(getData() + " << element << ", "; } else { headerStream << "\n"; headerStream << "\t" << element.listType << " " << element.name << "() const\n"; headerStream << "\t{\n"; headerStream << "\t\treturn " << element.listType << "(getData() + " << element << ", "; } if (element.lengthFunc.isEmpty()) { if (element.offsetString.isEmpty()) { headerStream << "getLength() - " << (minBits / 8) << ");\n"; } else { headerStream << "getLength() - (" << (minBits / 8) << element.offsetString << "));\n"; } } else { headerStream << element.name << "Length);\n"; } headerStream << "\t}\n"; break; } } headerStream << "\n"; headerStream << "private:\n"; if ((type == Descriptor) || (type == Section)) { headerStream << "\tQ_DISABLE_COPY(" << entryName << ")\n"; } if ((type == Entry) || (type == Section)) { headerStream << "\tvoid " << initFunctionName << "(const char *data, int size);\n"; } if (!privateVars.isEmpty()) { headerStream << '\n'; foreach (const QString &privateVar, privateVars) { headerStream << "\tint " << privateVar << ";\n"; } } headerStream << "};\n"; } class FileHelper { public: explicit FileHelper(const QString &name); bool isValid() const { return valid; } QTextStream &getStream() { return outStream; } void removeOrig() { if (!QFile::remove(origName)) { qCritical() << "can't remove" << origName; } } private: bool valid; QString origName; QFile outFile; QTextStream outStream; }; FileHelper::FileHelper(const QString &name) : valid(false) { origName = name + ".orig"; if (!QFile::rename(name, origName)) { qCritical() << "can't rename" << name << "to" << origName; return; } QFile inFile(origName); if (!inFile.open(QIODevice::ReadOnly)) { qCritical() << "can't open file" << inFile.fileName(); return; } outFile.setFileName(name); if (!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { qCritical() << "can't open file" << outFile.fileName(); } QTextStream inStream(&inFile); inStream.setCodec("UTF-8"); outStream.setDevice(&outFile); outStream.setCodec("UTF-8"); while (true) { if (inStream.atEnd()) { qCritical() << "can't find autogeneration boundary in" << inFile.fileName(); return; } QString line = inStream.readLine(); outStream << line << "\n"; if (line == "// everything below this line is automatically generated") { break; } } valid = true; } int main() { QFile xmlFile("dvbsi.xml"); if (!xmlFile.open(QIODevice::ReadOnly)) { qCritical() << "can't open file" << xmlFile.fileName(); return 1; } QDomDocument document; if (!document.setContent(&xmlFile)) { qCritical() << "can't read file" << xmlFile.fileName(); return 1; } QDomElement root = document.documentElement(); if (root.nodeName() != "dvbsi") { qCritical() << "invalid root name"; return 1; } FileHelper headerFile("../src/dvb/dvbsi.h"); if (!headerFile.isValid()) { return 1; } FileHelper cppFile("../src/dvb/dvbsi.cpp"); if (!cppFile.isValid()) { return 1; } QTextStream &headerStream = headerFile.getStream(); QTextStream &cppStream = cppFile.getStream(); for (QDomNode child = root.firstChild(); !child.isNull(); child = child.nextSibling()) { if (child.nodeName() == "descriptors") { for (QDomNode grandChild = child.firstChild(); !grandChild.isNull(); grandChild = grandChild.nextSibling()) { SiXmlParser::parseEntry(grandChild, SiXmlParser::Descriptor, headerStream, cppStream); } } else if (child.nodeName() == "entries") { for (QDomNode grandChild = child.firstChild(); !grandChild.isNull(); grandChild = grandChild.nextSibling()) { SiXmlParser::parseEntry(grandChild, SiXmlParser::Entry, headerStream, cppStream); } } else if (child.nodeName() == "sections") { for (QDomNode grandChild = child.firstChild(); !grandChild.isNull(); grandChild = grandChild.nextSibling()) { SiXmlParser::parseEntry(grandChild, SiXmlParser::Section, headerStream, cppStream); } } else { qCritical() << "unknown entry:" << child.nodeName(); } } headerStream << "\n"; headerStream << "#endif /* DVBSI_H */\n"; headerFile.removeOrig(); cppFile.removeOrig(); xmlFile.close(); if (xmlFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { xmlFile.write(document.toByteArray(2)); } return 0; } kaffeine-1.2.2/tools/update_dvbsi.sh0000755000175000017500000000025411552636277017101 0ustar lxuserlxuser#!/bin/sh set -eu mkdir -p kaffeine_build cd kaffeine_build cmake ../kaffeine -DBUILD_TOOLS=1 make updatedvbsi cd ../kaffeine/tools ../../kaffeine_build/tools/updatedvbsi kaffeine-1.2.2/COPYING0000644000175000017500000004325411552636277013773 0ustar lxuserlxuser GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. kaffeine-1.2.2/po/0000755000175000017500000000000011552636277013346 5ustar lxuserlxuserkaffeine-1.2.2/po/en_GB/0000755000175000017500000000000011552636277014320 5ustar lxuserlxuserkaffeine-1.2.2/po/en_GB/kaffeine.po0000644000175000017500000007050711552636277016441 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Andrew Coles , 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-05 17:26+0000\n" "Last-Translator: Andrew Coles \n" "Language-Team: British English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "Language: en_GB\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "A media player for KDE with digital TV support." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 The Kaffeine Authors" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Maintainer" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Play File" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Play Audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Play Video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Play DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digital TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configure Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Startup display mode:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normal Mode" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimal Mode" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Full Screen Mode" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Remember Last Setting" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Short skip duration:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Long skip duration:" #: mainwindow.cpp:282 msgid "&File" msgstr "&File" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Open URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Play Audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Play Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Play DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Play DVD Folder" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Playback" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Play&list" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Television" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Settings" #: mainwindow.cpp:352 msgid "Start" msgstr "Start" #: mainwindow.cpp:353 msgid "Playback" msgstr "Playback" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Playlist" #: mainwindow.cpp:356 msgid "Television" msgstr "Television" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Start in full screen mode" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(deprecated option)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Play TV channel" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Play last tuned TV channel" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Dump dvb data (debug option)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Files or URLs to play" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Open URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Enter a URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Jump to Position" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Enter a position:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Previous" #: mediawidget.cpp:245 msgid "Play" msgstr "Play" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stop" #: mediawidget.cpp:259 msgid "Next" msgstr "Next" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Full Screen Mode" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimal Mode" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "off" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Increase Volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Decrease Volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Mute Volume" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Deinterlace" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Aspect Ratio" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatic" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Fit to Window" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatic Resize" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Off" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Original Size" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Double Size" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Volume Slider" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Jump to Position..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Skip" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Skip %1s Backwards" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Skip %1s Forwards" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Seek Slider" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Toggle Menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Title" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Chapter" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Angle" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Switch between elapsed and remaining time display" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Supported Media Files" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "All Files" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Exit Full Screen Mode" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Exit Minimal Mode" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Stopped" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Mute On" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Mute Off" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Deinterlacing On" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Deinterlacing Off" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Paused" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Playing" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Andrew Coles" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "andrew_coles@yahoo.co.uk" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Please install the Qt SQLite plugin." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Cannot open the SQLite database." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Internal utility for Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Channel" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Number" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Edit" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Remove" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circular left" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circular right" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Edit channel" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Name:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Number:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Source:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequency (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbol rate (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulation:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC rate:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisation:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bandwidth:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC rate LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Transmission mode:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Guard interval:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchy:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Subtitle PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teletext PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Network ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transport stream ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Service ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audio channel:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Scrambled:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configure Television" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Recording folder:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Select Folder" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Time shift folder:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Begin margin (minutes):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "End margin (minutes):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Use ISO 8859-1 charset instead of ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Scan data last updated on %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Update scan data over Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Your position (only needed for USALS rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitude:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitude:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "General Options" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Device %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Update scan data over Internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Downloading scan data" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Scan data update failed." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialogue." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Name: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Move Left" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Reset" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Move Right" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Device not connected." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cable" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestrial" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoscan" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoscan with 167 kHz Offsets" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoscan Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoscan Italy" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoscan Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tuner timeout (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Source:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "No Source" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Name:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuration:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC Switch" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS Rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positions Rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 Settings" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB Settings" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Add Satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Position" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Remove Satellite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universal LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Custom LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Switch frequency (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Low band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "High band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertical LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Programme Guide" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Recording Schedule" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Search:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Duration" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Title" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "No available device found." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "No available device found." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Recording Schedule" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "New" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Name" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Edit Schedule Entry" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Name:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Channel:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Start" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Duration:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "End:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repeat:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Never" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Daily" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Provider" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Channels" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Clear" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Channel Scan" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Start Scan" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Tuned:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Free to air" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Provider:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Add Filtered" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Add Selected" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Scan Results" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Current Transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Stop Scan" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Program Guide" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Recording Schedule" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Instant Record" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configure Television..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Search:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Channel: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine is currently recording programmes.\n" "Do you really want to close the application?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Instant Record Started" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Instant Record Stopped" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Title" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artist" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Track Number" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Length" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Temporary Playlist" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repeat" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Random" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Add Subtitle" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Rename" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Unnamed Playlist" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Subtitle Files" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" #~ msgid "Channel Settings" #~ msgstr "Channel Settings" #~ msgid "Name" #~ msgstr "Name" #~ msgid "Edit" #~ msgstr "Edit" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Remove" #~ msgid "Remove" #~ msgstr "Remove" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Begin" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Begin:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "New" #~ msgid "Channel" #~ msgstr "Channel" #~ msgid "Duration" #~ msgstr "Duration" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Schedule Programme" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Name" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Refresh" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Programme successfully scheduled." #~ msgid "Cannot open %1." #~ msgstr "Cannot open %1." #~ msgid "Unknown playlist format." #~ msgstr "Unknown playlist format." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Shuffle" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Skip 1min Backwards" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Skip 1min Forwards" #~ msgid "Scan data last updated
on %1" #~ msgstr "Scan data last updated
on %1" #~ msgid "Remove All" #~ msgstr "Remove All" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgid "Navigation" #~ msgstr "Navigation" #~ msgid "Recordings" #~ msgstr "Recordings" #~ msgid "Edit Recording" #~ msgstr "Edit Recording" #~ msgid "Start scan" #~ msgstr "Start scan" #~ msgid "No source" #~ msgstr "No source" #~ msgid "&View" #~ msgstr "&View" #~ msgid "&Player" #~ msgstr "&Player" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Tune to the selected channel" #~ msgid "Open file" #~ msgstr "Open file" #~ msgid "Use right click to edit/delete" #~ msgstr "Use right click to edit/delete" #~ msgid "Channel search" #~ msgstr "Channel search" #~ msgid "Change icon" #~ msgstr "Change icon" #~ msgid "DVB Settings" #~ msgstr "DVB Settings" #~ msgid "Configure DVB" #~ msgstr "Configure DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Switch to Start Tab" #~ msgid "Switch to Player Tab" #~ msgstr "Switch to Player Tab" #~ msgid "Switch to Playlist Tab" #~ msgstr "Switch to Playlist Tab" #~ msgid "Switch to DVB Tab" #~ msgstr "Switch to DVB Tab" kaffeine-1.2.2/po/en_GB/CMakeLists.txt0000644000175000017500000000013211552636277017054 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(en_GB ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ro/0000755000175000017500000000000011552636277013766 5ustar lxuserlxuserkaffeine-1.2.2/po/ro/kaffeine.po0000644000175000017500000007377411552636277016120 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Sergiu Bivol , 2008, 2009. # Sergiu Bivol , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-01-03 00:05+0200\n" "Last-Translator: Sergiu Bivol \n" "Language-Team: Română \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" "Program KDE pentru redare multimedia cu suport pentru televiziune digitală." #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007-2009 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2009 Autorii Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Responsabil" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Redare fișier" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Redare CD audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Redare CD Video" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Redare DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV Digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurează Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mod pe tot ecranul" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Durată pășire scurtă:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Durată pășire lungă:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fișier" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Deschide URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Redare Audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Redare Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Redare DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Redare DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Redare" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Listă de redare" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televiziune" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Setări" #: mainwindow.cpp:352 msgid "Start" msgstr "Start" #: mainwindow.cpp:353 msgid "Playback" msgstr "Redare" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Listă de redare" #: mainwindow.cpp:356 msgid "Television" msgstr "Televiziune" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Pornește în regimul de ecran complet" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opțiune învechită)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Redă canal TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Redă ultimul canal reglat" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fișiere sau URL-uri de redat" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Deschide URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Introduceți un URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Salt la poziție" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Introduceți o poziție:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Redare" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauză" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stop" #: mediawidget.cpp:259 msgid "Next" msgstr "Următor" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mod pe tot ecranul" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "dezactivat" #: mediawidget.cpp:293 #, fuzzy #| msgid "Audio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 #, fuzzy #| msgid "Increase Volume" msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Mărește volumul" #: mediawidget.cpp:302 #, fuzzy #| msgid "Decrease Volume" msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Micșorează volumul" #: mediawidget.cpp:307 #, fuzzy #| msgid "Mute Volume" msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Muțește volumul" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "Redare Video CD" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 #, fuzzy #| msgid "Aspect Ratio" msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Raport de aspect" #: mediawidget.cpp:337 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Automatic" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automat" #: mediawidget.cpp:343 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Fit to Window" msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Potrivește la fereastră" #: mediawidget.cpp:348 #, fuzzy #| msgctxt "aspect ratio" #| msgid "4:3" msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 #, fuzzy #| msgctxt "aspect ratio" #| msgid "16:9" msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Redimensionare automată" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Dezactivat" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Dimensiune originală" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dimensiune dublă" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Glisorul volumului" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Salt la poziție" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Sari" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Derulează %1s înapoi" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Derulează %1s înainte" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Volume Slider" msgid "Seek Slider" msgstr "Glisorul volumului" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "Title" msgctxt "dvd navigation" msgid "Title" msgstr "Titlu" #: mediawidget.cpp:469 #, fuzzy #| msgid "Chapter" msgctxt "dvd navigation" msgid "Chapter" msgstr "Capitol" #: mediawidget.cpp:475 #, fuzzy #| msgid "Angle" msgctxt "dvd navigation" msgid "Angle" msgstr "Unghi" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Comută între afișarea timpului scurs și rămas" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Fișiere multimedia susținute" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Toate fișierele" #: mediawidget.cpp:563 #, fuzzy #| msgid "Exit Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Ieși din regimul de ecran complet" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Oprit" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Muțire activată" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Muțire dezactivată" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volum: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Întrerupt" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "În redare" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Marius Petrescu,Sergiu Bivol" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "silvatica2975@gmail.com,sergiu@ase.md" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Instalați modulul Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Baza de date SQLite nu poate fi deschisă." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Număr" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Editează" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Elimină" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Orizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circular stînga" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circular dreapta" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Editare canale" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nume:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Număr:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Sursă:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frecvență (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Rata de simboluri (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulare:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Rata FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizare:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Lățime de bandă:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Regim de transmisie:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Ierarhie:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 #, fuzzy #| msgid "Play Video CD" msgid "Video PID:" msgstr "Redare Video CD" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "Redare Video CD" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Id. rețea:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Id. serviciu:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal audio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Configurează televiziunea" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Dosar înregistrare:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Alege dosarul" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Date de scanare actualizate la %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Actualizează date scanare prin Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Poziția mea (necesară numai pentru rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitudine:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitudine:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[V -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opțiuni generale" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispozitiv %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Actualizează date scanare prin Internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Se descarcă datele de scanare" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 #, fuzzy #| msgid "Scan file last updated
on %1" msgid "Scan data update failed." msgstr "Scanează ultimul fișier actualizat
în %1" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nume: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mută la stînga" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Reinițializează" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mută la dreapta" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispozitiv neconectat." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cablu" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terestru" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Scanare automată" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Scanare automată cu decalaje de 167KHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Scanare automată Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Scanare automată Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Scanare automată Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Temporizare reglaj (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Sursă:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Fără sursă" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nume:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configurare:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Comutator DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de poziție" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Configurări LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Configurări LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Adaugă satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Poziție" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Elimină satelit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB Universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizat" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Comută frecvența (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Low band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "High band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF orizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Ghid de programe" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Program de înregistrare" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Caută:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Durată" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Titlu" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nici un dispozitiv disponibil găsit." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nici un dispozitiv disponibil găsit." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Program de înregistrare" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nou" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Denumire" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Redactează înregistrarea planificată" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nume:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Start" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Durată:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Sfîrșit:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repetare:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Niciodată" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Zilnic" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Furnizor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canale" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Curăță" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Scanare canale" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Pornește scanare" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Semnal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Reglat:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtru" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Liber în aer" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Furnizor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Adaugă filtrate" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Adaugă alese" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Rezultate scanare" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transpondor curent" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Oprește scanarea" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Ghid de programe" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Program de înregistrare" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Înregistrare instantanee" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurează televiziunea" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Caută:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Înregistrare instantanee pornită" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Înregistrare instantanee oprită" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titlu" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Interpret" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Număr pistă" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Durată" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Listă de redare temporară" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repetă" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleator" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Adaugă satelit" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Redenumește" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Listă de redare nedenumită" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "Redare Video CD" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Listă XSPF\n" "*.m3u|Listă M3U\n" "*.pls|Listă PLS" #~ msgid "Channel Settings" #~ msgstr "Configurări canal" #~ msgid "Name" #~ msgstr "Denumire" #~ msgid "Edit" #~ msgstr "Editează" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Elimină" #~ msgid "Remove" #~ msgstr "Elimină" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Început" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Început:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nou" #~ msgid "Channel" #~ msgstr "Canal" #~ msgid "Duration" #~ msgstr "Durată" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Planificare program" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Denumire" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Reîmprospătează" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Program planificat cu succes." #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "Nu se poate deschide %1." #~ msgid "Unknown playlist format." #~ msgstr "Format de listă necunoscut." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Amestecat" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Derulează 1min înapoi" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Derulează 1min înainte" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "Scanează ultimul fișier actualizat
în %1" #, fuzzy #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "Elimină" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine Player]
cofeină pentru " #~ "biroul tău!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Poziție" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Nou" #~ msgid "Start scan" #~ msgstr "Pornește scanare" #~ msgid "No source" #~ msgstr "Fără sursă" #~ msgid "&View" #~ msgstr "&Vizualizare" #~ msgid "&Player" #~ msgstr "&Program de redare" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "Șterge canal" #~ msgid "Open file" #~ msgstr "Deschide fișier" #~ msgid "Use right click to edit/delete" #~ msgstr "Folosiți clic dreapta pentru a edita/șterge" #~ msgid "Channel search" #~ msgstr "Caută canal" #~ msgid "Change icon" #~ msgstr "Schimbă pictograma" #~ msgid "DVB Settings" #~ msgstr "Setări DVB" #~ msgid "Configure DVB" #~ msgstr "Configurează DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Comută la fila de pornire" #~ msgid "Switch to Player Tab" #~ msgstr "Comută la fila de redare" #~ msgid "Switch to Playlist Tab" #~ msgstr "Comută la fila listei de redare" #~ msgid "Switch to DVB Tab" #~ msgstr "Comută la fila DVB" #~ msgid "Player" #~ msgstr "Program de redare" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Comenzi principale" #~ msgid "Position Slider" #~ msgstr "Glisor de poziție" #~ msgid "Tab Manager" #~ msgstr "Administrare sarcini" kaffeine-1.2.2/po/ro/CMakeLists.txt0000644000175000017500000000012711552636277016526 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ro ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/nl/0000755000175000017500000000000011552636277013757 5ustar lxuserlxuserkaffeine-1.2.2/po/nl/kaffeine.po0000644000175000017500000006446411552636277016105 0ustar lxuserlxuser# translation of kaffeine.po to Frysk # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Freek de Kruijf , 2008, 2009. # Kristof Bal , 2008, 2009. # Rinse de Vries , 2009. # Freek de Kruijf , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-31 17:49+0200\n" "Last-Translator: Freek de Kruijf \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Een mediaspeler voor KDE met ondersteuning voor digitale TV." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010, de auteurs van Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Onderhouder" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Bestand afspelen" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Audio-cd afspelen" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video-cd afspelen" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 dvd afspelen" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitale tv" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeine instellen" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Weergavemodus bij opstarten:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normale modus" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimale modus" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Volledig schermmodus" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Laatste instelling onthouden" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Tijdsduur van kort overslaan:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Tijdsduur van lang overslaan:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Bestand" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL-adres openen..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Audio-cd afspelen" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video-cd afspelen" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Dvd afspelen" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Dvd-map afspelen" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Afspelen" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Afspee&llijst" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisie" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Instellingen" #: mainwindow.cpp:352 msgid "Start" msgstr "Starten" #: mainwindow.cpp:353 msgid "Playback" msgstr "Afspelen" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Afspeellijst" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisie" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Starten in volledig scherm" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(verouderde optie)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "TV-kanaal afspelen" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Laatst afgestemde TV-kanaal afspelen" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "DVB-gegevens dumpen (verouderde optie)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Af te spelen bestanden of URL's" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "URL-adres openen" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Voer een URL-adres in:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Naar positie springen" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Voer een positie in:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Vorige" #: mediawidget.cpp:245 msgid "Play" msgstr "Afspelen" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauze" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stoppen" #: mediawidget.cpp:259 msgid "Next" msgstr "Volgende" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Volledig scherm" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimaal" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "uit" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Geluid" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Volume verhogen" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Volume verlagen" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Volume dempen" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Interlace weghalen" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Beeldverhouding" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatisch" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Passend in venster" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatisch herschalen" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Uit" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Oorspronkelijke grootte" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dubbele grootte" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Volumeschuifbalk" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Naar positie springen..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Overslaan" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "%1 s terugspoelen" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "%1 s vooruitspoelen" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Zoekschuifbalk" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menu omschakelen" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Hoofdstuk" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Hoek" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Schakel tussen tonen van verlopen tijd en overblijvende tijd" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Ondersteunde mediabestanden" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Alle bestanden" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Volledig scherm verlaten" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Minimaal verlaten" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Gestopt" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Gedempt" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Niet gedempt" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Interlacing weghalen aan" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Interlacing weghalen uit" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Gepauzeerd" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Speelt" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Wilbert Berendsen,Rinse de Vries,Kristof Bal,Freek de Kruijf" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" "wilbert@kde.nl,rinsedevries@kde.nl,kristof.bal@gmail.com,freekdekruijf@kde.nl" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Gaarne de Qt SQLite-plugin installeren." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Kan de SQLite-database niet openen." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Intern hulpmiddel voor Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanaal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Bewerken" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Verwijderen" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "De kanalen zullen op nummer gesorteerd worden om slepen en laten vallen toe " "te staan. Wilt u doorgaan?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontaal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Verticaal" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Linksom" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Rechtsom" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanaal bewerken" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Naam:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Bron:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequentie (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symboolsnelheid (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulatie:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC-rate:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisatie:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bandbreedte:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC-rate LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Transmissiemodus:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Guardinterval:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hiërarchie:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT-PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video-pid:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Ondertitel PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teletext-pid:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Network-ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transportstroom-id:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Dienst-pid:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audiokanaal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Gecodeerd:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Televisie instellen" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Opnamemap:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Map selecteren" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Map voor tijdverschuiving:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Beginmarge (minuten):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Eindmarge (minuten):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "ISO 8859-1 tekenset gebruiken in plaats van ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Scangegevens laatst bijgewerkt op %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Scandata bijwerken over het internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Uw positie (alleen nodig voor USALS-rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Breedtegraad:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Lengtegraad:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Algemene opties" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Apparaat %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Scandata bijwerken" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Scangegevens downloaden" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Scandata bijwerken is mislukt" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Scangegevens met succes bijgewerkt. Wijzigingen zijn\n" "effectief nadat u de configuratiedialoog hebt gesloten." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Naam: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Naar links" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Terugzetten" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Naar rechts" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Apparaat is verbonden." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Antenne" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoscan" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoscan met 167 kHz offsets" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoscan Australië" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoscan Italië" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoscan Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Verlooptijd van tuner:" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Bron:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Geen bron" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Naam:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuratie:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC-switch" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Posities van rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Instellingen van LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-instellingen" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Satelliet toevoegen" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelliet" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Positie" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Satelliet verwijderen" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universele LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Aangepaste LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frequentie wisselen (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Lowband LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Highband LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontale LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Verticale LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Programmagids" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Uitzending opnemen" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Zoeken:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Starten" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Tijdsduur" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "Alle apparaten zijn gebruikt voor opnamen." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Geen apparaat gevonden." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Geen beschikbaar apparaat gevonden." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Opname planning" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Nieuw" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Naam" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Planningitem bewerken" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Naam:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Kanaal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Begin:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Duur:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Einde:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Herhalen:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nooit" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Dagelijks" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Provider" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanalen" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Wissen" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanaal scannen" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Scan starten" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signaal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Tuned:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Vrij in de lucht" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Provider:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Gefilterde toevoegen" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Selectie toevoegen" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Scanresultaten" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Huidige transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Scan stoppen" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programmagids" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Opname planning" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Direct opnemen" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Televisie instellen..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Zoeken:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanaal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine is nu programma's aan het opnemen.\n" "Wilt u toch de applicatie sluiten?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine bevat geplande opnamen.\n" "Wilt u toch de applicatie sluiten?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Direct opnemen gestart" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Direct opnemen gestopt" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artiest" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Track nummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Lengte" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Tijdelijke afspeellijst" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Herhalen" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Willekeurig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Ondertitel toevoegen" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Hernoemen" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Afspeellijst zonder naam" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Bestanden met ondertitels" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-afspeellijst\n" "*.m3u|M3U-afspeellijst\n" "*.pls|PLS-afspeellijst" #~ msgid "Channel Settings" #~ msgstr "Kanaalinstellingen" #~ msgid "Name" #~ msgstr "Naam" #~ msgid "Edit" #~ msgstr "Bewerken" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Verwijderen" #~ msgid "Remove" #~ msgstr "Verwijderen" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Begin" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Begin:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nieuw" #~ msgid "Duration" #~ msgstr "Tijdsduur" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Planning programma" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Naam" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Verversen" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Programma met succes gepland" #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "Kan %1 niet openen." #~ msgid "Unknown playlist format." #~ msgstr "Onbekend afspeellijstformaat." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Door elkaar" kaffeine-1.2.2/po/nl/CMakeLists.txt0000644000175000017500000000012711552636277016517 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(nl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/es/0000755000175000017500000000000011552636277013755 5ustar lxuserlxuserkaffeine-1.2.2/po/es/kaffeine.po0000644000175000017500000006570511552636277016102 0ustar lxuserlxuser# translation of kaffeine.po to Spanish # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Javier Vinal , 2009, 2010, 2011. # javier Vinal , 2009, 2010. # Javier Viñal , 2010. # Eloy Cuadra , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-12 22:57+0100\n" "Last-Translator: Javier Vinal \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "Language: es\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Un reproductor de medios para KDE que reconoce televisión digital." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007-2010 Los autores de Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Responsable" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reproducir archivo" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reproducir CD de audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reproducir CD de vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reproducir DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV Digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurar Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Modo de visualización de inicio:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Modo normal" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Modo mínimo" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Modo de pantalla completa" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Recordar la última configuración" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Acortar duración del salto:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Alargar duración del salto:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Archivo" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Abrir URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reproducir CD de audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reproducir CD de vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reproducir DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reproducir carpeta de DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Re&producir" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista de reproducción" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisión" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Preferencias" #: mainwindow.cpp:352 msgid "Start" msgstr "Inicio" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reproducción" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista de reproducción" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisión" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Inicio en modo de pantalla completa" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opción obsoleta)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Reproducir canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Reproducir el último canal de TV sintonizado" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Volcar datos de dvb (opción de depuración)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Archivos o URL a reproducir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Abrir URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Introduzca una URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Saltar a posición" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Introduzca una posición:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reproducir" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Detener" #: mediawidget.cpp:259 msgid "Next" msgstr "Siguiente" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Modo de pantalla completa" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Modo mínimo" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "desactivado" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Aumentar volumen" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Reducir volumen" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Silenciar volumen" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vídeo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Desentrelazar" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Relación de Aspecto" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automático" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajustar a la ventana" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Tamaño Automático" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Desactivado" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Tamaño original" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Tamaño doble" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Deslizador de volumen" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Saltar a posición..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Saltar" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Retroceder %1s" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Avanzar %1s" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Deslizador de búsqueda" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Conmutar menú" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Título" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítulo" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ángulo" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Conmutar entre visualización de tiempo transcurrido y restante" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Archivos de medios admitidos" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Todos los archivos" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Salir del modo de pantalla completa" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Salir del modo mínimo" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Parado" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silenciar" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Quitar silenciar" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volumen: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Desentrelazado activado" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Desentrelazado desactivado" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pausado" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Reproduciendo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Fco. Javier Viñal Gutiérrez" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "fjvinal@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Por favor instale el complemento de SQLite para Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "No se puede abrir la base de datos SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilidad interna para Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Editar" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Eliminar" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Los canales se ordenarán por número para permitir arrastrar y soltar.\n" "¿Quiere usted continuar?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Cursor izquierdo" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Cursor derecho" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nombre:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Número:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Origen:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frecuencia (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Tasa de símbolos (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulación:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Ratio FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarización:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Ancho de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Ratio FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Modo de transmisión:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervalo de guardia:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Jerarquía:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID de vídeo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID de subtítulos:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID de teletexto:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Id. de red:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Id. de flujo de transporte:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Id. de servicio:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal de audio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Mezclado:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configurar televisión" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Carpeta de grabación:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Seleccionar carpeta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Carpeta de desplazamiento temporal:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Margen de inicio (minutos):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Margen de fin (minutos):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usar el juego de caracteres ISO 8859-1 en lugar de ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Datos de exploración actualizados por última vez el %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Actualización de datos de exploración mediante Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Su posición (solo se necesita para el motor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitud:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitud:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opciones generales" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositivo %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Actualizar datos de exploración " #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Descargando datos de exploración" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Fallo de la actualización de los datos de exploración." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Exploración de datos actualizada satisfactoriamente. Los cambios tendrán\n" "efecto una vez se cierre el diálogo de configuración." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nombre: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mover a la izquierda" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Reiniciar" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mover a la derecha" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositivo no conectado." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cable" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoexploración" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoexploración con compensación de 167 Hz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoexploración Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoexploración Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoexploración Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tiempo de espera del sintonizador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Origen:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Sin origen" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nombre:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuración:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Conmutador DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de posiciones" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Preferencias de LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Preferencias de LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Añadir satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posición" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Eliminar satélite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB C-banda" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB C-banda multipunto" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizado" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frecuencia de intercambio (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Banda baja de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Banda alta de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guía de programas" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Mostrar registro" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Buscar:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Inicio" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Duración" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Título" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "No se ha encontrado ningún dispositivo." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "No se ha encontrado ningún dispositivo." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Calendario de grabación" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nuevo" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nombre" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Editar entrada de programa" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nombre:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Inicio" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Duración:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Fin:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repetir:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nunca" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diariamente" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Proveedor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canales" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Borrar" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Exploración de canal" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Iniciar exploración" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Señal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizado:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtro" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Al aire libre" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Proveedor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Añadir filtrado" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Añadir seleccionado" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultados de la exploración" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transponedor actual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Detener exploración" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guía de programas" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Calendario de grabación" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Grabación instantánea" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurar televisión..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Buscar:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine está grabando programas en este momento.\n" "¿Realmente quiere usted cerrar la aplicación?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine tiene grabaciones programadas.\n" "¿Realmente quiere usted cerrar la aplicación?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Grabación instantánea iniciada" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Grabación instantánea parada" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Título" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Álbum" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Número de pista" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Duración" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Lista de reproducción temporal" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repetir" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleatorio" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Añadir subtítulo" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Cambiar nombre" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Lista de reproducción sin nombre" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Archivos de subtítulos:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "Lista de reproducción *.xspf|XSPF\n" "Lista de reproducción *.m3u|M3U\n" "Lista de reproducción *.pls|PLS" #~ msgid "Channel Settings" #~ msgstr "Preferencias de canales" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Eliminar" #~ msgid "Begin" #~ msgstr "Inicio" #~ msgid "Duration" #~ msgstr "Duración" #~ msgid "Begin:" #~ msgstr "Inicio:" kaffeine-1.2.2/po/es/CMakeLists.txt0000644000175000017500000000012711552636277016515 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(es ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/pt_BR/0000755000175000017500000000000011552636277014354 5ustar lxuserlxuserkaffeine-1.2.2/po/pt_BR/kaffeine.po0000644000175000017500000006506011552636277016473 0ustar lxuserlxuser# Tradução do kaffeine.po para Brazilian Portuguese # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # # Helio Chissini de Castro , 2004. # Gustavo Pichorim Boiko , 2004. # Jose Monteiro , 2007. # André Marcelo Alvarenga , 2008, 2009, 2010, 2011. # Luiz Fernando Ranghetti , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-04-02 01:08-0300\n" "Last-Translator: André Marcelo Alvarenga \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Um reprodutor de mídias para o KDE com suporte à TV digital." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Os autores do Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Mantenedor" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reproduzir arquivo" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reproduzir CD de áudio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reproduzir CD de vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reproduzir DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV Digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurar o Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Modo de apresentação inicial:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Modo normal" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Modo mínimo" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Modo de tela cheia" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Lembrar a última configuração" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Duração do salto curto:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Duração do salto longo:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Arquivo" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Abrir URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reproduzir CD de áudio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reproduzir CD de vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reproduzir DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reproduzir pasta de DVDs" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Reproduzir" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista de reprodução" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisão" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Configurações" #: mainwindow.cpp:352 msgid "Start" msgstr "Iniciar" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reproduzir" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista de reprodução" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisão" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Iniciar no modo de tela cheia" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opção obsoleta)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Reproduzir canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Reproduzir o último canal de TV sintonizado" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Apresentar os dados do DVB (opção de depuração)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Arquivos ou URLs a reproduzir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Abrir URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Digite uma URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Ir para a posição" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Digite uma posição:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reproduzir" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausar" #: mediawidget.cpp:253 msgid "Stop" msgstr "Parar" #: mediawidget.cpp:259 msgid "Next" msgstr "Próximo" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Modo de tela inteira" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Modo mínimo" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "desligado" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Áudio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Aumentar volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Diminuir volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Mudo" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vídeo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Desentrelaçar" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Taxa de proporção" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automático" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajustar à janela" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Redimensionar automaticamente" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Desligado" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Tamanho original" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Tamanho duplo" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Barra deslizante de volume" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Ir para a posição..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Saltar" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Saltar %1s para trás" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Saltar %1s para frente" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Barra deslizante de posicionamento" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Alternar menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Título" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítulo" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ângulo" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Alternar entre a exibição do tempo decorrido e o tempo restante" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Arquivos de mídia suportados" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Todos os arquivos" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Sair do modo de tela cheia" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Sair do modo mínimo" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Parado" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Mudo ligado" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Mudo desligado" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Desentrelaçar ligado" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Desentrelaçar desligado" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pausado" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Reproduzindo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "André Marcelo Alvarenga" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "andrealvarenga@gmx.net" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Instale o plug-in do Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Não foi possível abrir o banco de dados SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilitário interno para o Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Editar" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Remover" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Os canais serão ordenados pelo número, para permitir arrastar e soltar.\n" "Deseja continuar?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circular para a esquerda" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circular para a direita" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Editar canal" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Nome:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Número:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Origem:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequência (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Taxa de símbolo (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulação:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Taxa FEC (correção de erros):" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarização:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Seguimento:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Largura de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Taxa FEC de baixa prioridade:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Modo de transmissão:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervalo de guarda:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarquia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID do vídeo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID da legenda:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID do teletexto:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID da rede:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID do fluxo de transporte:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID do serviço:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal de áudio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Embaralhado:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configurar televisão" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Pasta de gravações:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Selecionar pasta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Pasta do deslocamento de tempo:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Margem inicial (minutos):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Margem final (minutos):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usar a codificação ISO 8859-1 em vez da ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Última atualização do arquivo de busca em %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Atualizar o arquivo de busca pela Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Sua posição (somente necessário para o rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitude:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitude:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180 ... 180 L]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opções gerais" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositivo %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Atualizar os dados da busca" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Baixando o arquivo de busca" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Falha ao atualizar o arquivo de busca." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Arquivo de busca atualizado com sucesso. As alterações\n" "terão efeito após você fechar o diálogo de configuração." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nome: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mover à esquerda" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Redefinir" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mover à direita" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositivo não conectado." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cabo" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Busca automática" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Busca automática com descolamento de 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Busca automática na Austrália" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Busca automática na Itália" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Busca automática em Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tempo de espera do sintonizador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Origem:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Sem origem" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nome:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuração:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Interruptor DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de posições" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Configurações do LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Configurações do LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Adicionar satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posição" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Remover satélite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB banda C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB multi-ponto banda C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizado" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frequência de troca (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF de banda baixa (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF de banda alta (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guia de programação" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Gravar programa" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Pesquisar:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Iniciar" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Duração" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Título" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "Todos os dispositivos são usados para gravações." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Nenhum dispositivo encontrado." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nenhum dispositivo disponível foi encontrado." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Agenda de gravações" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Novo" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Nome" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Editar entrada da agenda" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Nome:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Início:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Duração:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Fim:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Repetir:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nunca" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diariamente" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Provedor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canais" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Limpar" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Pesquisar canal" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Iniciar busca" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sinal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizado:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtro" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Livre para transmitir" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Rádio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Provedor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Adicionar filtrado" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Adicionar selecionado" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultados da pesquisa" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transponder atual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Parar a busca" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guia de programação" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Mensagem na tela" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Agenda de gravações" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Gravação instantânea" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurar televisão..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Pesquisar:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "O Kaffeine está gravando programas.\n" "Deseja realmente fechar o aplicativo?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "O Kaffeine tem gravações agendadas.\n" "Deseja realmente fechar o aplicativo?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Gravação instantânea iniciada" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Gravação instantânea parada" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Título" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Álbum" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Número da faixa" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Duração" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Lista de reprodução temporária" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repetir" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleatório" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Adicionar legenda" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Renomear" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Lista de reprodução sem nome" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Arquivos de legenda" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Lista de reprodução XSPF\n" "*.m3u|Lista de reprodução M3U\n" "*.pls|Lista de reprodução PLS" #~ msgid "Channel Settings" #~ msgstr "Configurações dos canais" #~ msgid "Name" #~ msgstr "Nome" #~ msgid "Edit" #~ msgstr "Editar" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Remover" #~ msgid "Remove" #~ msgstr "Remover" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Início" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Início:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Novo" #~ msgid "Duration" #~ msgstr "Duração" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Agendar programa" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nome" kaffeine-1.2.2/po/pt_BR/CMakeLists.txt0000644000175000017500000000013211552636277017110 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(pt_BR ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/zh_TW/0000755000175000017500000000000011552636277014401 5ustar lxuserlxuserkaffeine-1.2.2/po/zh_TW/kaffeine.po0000644000175000017500000006311511552636277016517 0ustar lxuserlxuser# # Franklin Weng , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-18 08:11+0800\n" "Last-Translator: Franklin Weng \n" "Language-Team: Chinese Traditional \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 1.1\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE 的媒體播放器,有支援數位電視。" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Kaffeine 作者群" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "維護者" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 播放檔案" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 播放音樂光碟" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 播放影像光碟" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 播放 DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 數位電視" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "設定 Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "啟動顯示模式:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "正常模式" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "最小化模式" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "全螢幕模式" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "記住上次的設定" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "短暫跳過期間:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "長時跳過期間:" #: mainwindow.cpp:282 msgid "&File" msgstr "檔案(&F)" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "開啟網址..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "播放音樂光碟" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "播放影像光碟" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "播放 DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "播放 DVD 資料夾" #: mainwindow.cpp:322 msgid "&Playback" msgstr "播放(&P)" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "播放清單(&L)" #: mainwindow.cpp:329 msgid "&Television" msgstr "電視(&T)" #: mainwindow.cpp:333 msgid "&Settings" msgstr "設定(&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "開始" #: mainwindow.cpp:353 msgid "Playback" msgstr "播放" #: mainwindow.cpp:354 msgid "Playlist" msgstr "播放清單" #: mainwindow.cpp:356 msgid "Television" msgstr "電視" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "以全螢幕模式開始" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(已廢棄選項)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "播放電視頻道" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "播放上次調整的電視頻道" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "印出 dvb 資料(除錯選項)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "要播放的檔案或網址" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "開啟網址" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "輸入網址:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "跳到特定位置" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "輸入位置:" #: mediawidget.cpp:237 msgid "Previous" msgstr "前一個" #: mediawidget.cpp:245 msgid "Play" msgstr "播放" #: mediawidget.cpp:246 msgid "Pause" msgstr "暫停" #: mediawidget.cpp:253 msgid "Stop" msgstr "停止" #: mediawidget.cpp:259 msgid "Next" msgstr "下一個" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "全螢幕模式" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "最小化模式" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "關" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "音效" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "遞增音量" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "遞減音量" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "靜音" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "影像" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "解交錯" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "外觀比例" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "自動" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "調整到適合視窗" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "自動調整大小" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "關" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "原始大小" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "雙倍大小" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "音量滑動器" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "跳到特定位置..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "略過" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "往前跳 %1 秒" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "往後跳 %1 秒" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "搜尋滑動器" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "切換選單" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "標題" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "章節" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "角度" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "切換顯示已播放時間或剩餘時間" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "支援的媒體檔" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "所有檔案" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "離開全螢幕模式" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "離開最小化模式" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "已停止" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "靜音" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "解除靜音" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "音量:%1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "開啟解交錯" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "關閉解交錯" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "已暫停" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "播放中" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Frank Weng (a.k.a. Franklin)" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "franklin at goodhorse dot idv dot tw" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "請安裝 Qt SQLite 外掛程式。" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "無法開啟 SQLite 資料庫。" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Kaffeine 內部工具。" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "頻道" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "編號" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "編輯" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "移除" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "頻道將會以編號排序,以便允許拖曳。\n" "您要繼續嗎?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "水平" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "垂直" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "往左繞圈" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "往右繞圈" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "頻道" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "名稱:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "編號:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "來源:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "頻率(MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "符碼率(Symbol rate,kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "調變方式(Modulation):" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "前向糾錯(FEC rate):" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "偏振(Polarization):" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "下降(Roll-off):" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "頻寬:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "前向糾錯─LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "傳輸模式:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "防護間隔:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "階層:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "影像 PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "字幕 PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "圖文電視 PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "網路代碼:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "傳輸串流代碼:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "服務代碼:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "聲道:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "擾頻:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "設定電視" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "錄影資料夾:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "選擇資料夾" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "暫時錄影資料夾:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "開頭界限(分):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "結尾界線(分):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "使用 ISO 8859-1 字元集而不是用 ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "掃描資料上次更新於 %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "從網際網路上更新掃描資料" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "您的位置(只有在 USALS rotor 需要)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "緯度:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "【南 -90...90 北】" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "經度:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "【西 -180...180 東】" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "一般選項" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "裝置 %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "更新掃描資料" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "下載掃描資料" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "掃描資料更新失敗。" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "掃描資料已成功更新。變更將在您關閉設定對話框後生效。" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "名稱: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "左移" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "重置" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "右移" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "裝置未連線。" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "有線訊號(Cable)" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "地面訊號" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "自動掃描" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "以 167 kHz 位移自動掃描" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "自動掃描澳大利亞" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "自動掃描義大利" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "自動掃描台灣" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "調諧器逾時(毫秒):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "來源:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "沒有來源" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "名稱:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "設定:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC 切換" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS Rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positions Rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 設定" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB 設定" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "新增衛星" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "衛星" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "位置" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "移除衛星" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "通用 LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band 多點 LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "自訂 LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "切換頻率(MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "低頻 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "高頻 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "水平 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "垂直 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF(MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "節目指南" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "錄影顯示" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "搜尋:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "開始" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "期間" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "標題" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "找不到可用的裝置。" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "找不到可用的裝置。" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "預約錄影排程" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "新增" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "名稱" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "編輯預約錄影" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "名稱:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "頻道:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "開始:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "期間:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "結束:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "重覆:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "永不" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "每天" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "提供者:" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "頻道" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "清除" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "頻道掃描" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "開始掃描" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "信號:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "調諧:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "過濾器" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "免費廣播" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "收音機" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "電視" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "提供者:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "新增過濾器" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "新增選擇的" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "掃描結果" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "目前的發射器" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "停止掃描" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "節目指南" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "螢幕字幕" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "預約錄影" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "立即錄影" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "設定電視..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "搜尋:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "頻道:%1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine 正在錄節目。\n" "您要關閉應用程式嗎?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine 已經設定好預錄。\n" "您要關閉應用程式嗎?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "立即錄影已開始" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "立即錄影已停止" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "標題" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "演出者" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "專輯" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "音軌數量" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "長度" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "暫時播放清單" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "重覆" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "隨機" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "新增字幕" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "重新命名" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "未命名播放清單" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "字幕檔" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF 播放清單\n" "*.m3u|M3U 播放清單\n" "*.pls|PLS 播放清單" #~ msgid "Channel Settings" #~ msgstr "頻道設定" #~ msgid "Name" #~ msgstr "名稱" #~ msgid "Edit" #~ msgstr "編輯" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "移除" #~ msgid "Remove" #~ msgstr "移除" #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "開始" #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "開始:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "新增" #~ msgid "Duration" #~ msgstr "期間" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "節目表" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "名稱" kaffeine-1.2.2/po/zh_TW/CMakeLists.txt0000644000175000017500000000013211552636277017135 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(zh_TW ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/pl/0000755000175000017500000000000011552636277013761 5ustar lxuserlxuserkaffeine-1.2.2/po/pl/kaffeine.po0000644000175000017500000007367311552636277016111 0ustar lxuserlxuser# translation of kaffeine.po to # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Maciej Wikło , 2009. # Mateusz Stanisław Włodarski , 2010. # Marta Rybczyńska , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-04-13 22:36+0200\n" "Last-Translator: Marta Rybczyńska \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Odtwarzacz multimedialny z obsługą telewizji cyfrowej dla KDE." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Autorzy Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Opiekun" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Odtwórz plik" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Odtwórz CD Audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Odtwórz VCD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Odtwórz DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Telewizja cyfrowa" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Konfiguracja Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Tryb zminimalizowany" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Tryb zminimalizowany" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Tryb pełnoekranowy" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Czas trwania krótkiego skoku:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Czas trwania długiego skoku:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Plik" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Otwórz URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Odtwórz CD Audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Odtwórz VCD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Odtwórz DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Odtwórz DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Odtwarzanie" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista odtwarzania" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Telewizja" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Ustawienia" #: mainwindow.cpp:352 msgid "Start" msgstr "Rozpocznij" #: mainwindow.cpp:353 msgid "Playback" msgstr "Odtwarzanie" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista odtwarzania" #: mainwindow.cpp:356 msgid "Television" msgstr "Telewizja" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Rozpocznij w trybie pełnoekranowym" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(przestarzała opcja)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Odtwórz kanał TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Odtwórz ostatni kanał TV" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Zrzut danych dvb (opcja debugowania)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Pliki lub adresy URL do odtworzenia" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Otwórz URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Podaj URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Przejdź do pozycji" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Podaj pozycję:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Poprzedni" #: mediawidget.cpp:245 msgid "Play" msgstr "Odtwórz" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauza" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stop" #: mediawidget.cpp:259 msgid "Next" msgstr "Następny" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Tryb pełnoekranowy" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Tryb zminimalizowany" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "wył." #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Dźwięk" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Zwiększ głośność" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Zmniejsz głośność" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Wycisz dźwięk" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Wideo" # zgaduje ze to przeplot #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Przeplot" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proporcje" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatycznie" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Dopasuj do okna" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatyczna zmiana rozmiaru" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Wyłączona" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Rozmiar oryginalny" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Rozmiar podwójny" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Suwak głośności" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Przejdź do pozycji" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Przeskocz" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Przeskocz %1s do tyłu" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Przeskocz %1s do przodu" # #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Suwak postępu" # Nie jestem pewien #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menu przełączania" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Tytuł" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Rozdział" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Kąt" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Przełącz pomiędzy wyświetlaniem czasu zużytego a pozostałego" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Obsługiwane pliki multimedialne" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Wszystkie pliki" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Zakończ tryb pełnoekranowy" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Zakończ tryb zminimalizowany" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Zatrzymano" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Wyciszenie wł." #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Wyciszenie wył." #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Głośność: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Przeplot wł." #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Przeplot wył." #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Wstrzymano" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Odtwarzanie" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Maciej Wikło,Mateusz Włodarski" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "maciej.wiklo@wp.pl" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Proszę zainstalować wtyczkę Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Nie można otworzyć bazy danych SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Wewnętrzne narzędzia dla Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanał" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Liczba" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Edycja" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Usuń" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Poziomy" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Pionowy" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Zaokrąglony lewy" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Zaokrąglony prawy" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Edytuj kanał" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nazwa:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Numer:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Źródło:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Częstotliwość (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symboliczna szybkość (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulacja:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Szybkość FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polaryzacja:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Szerokość pasma:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Szybkość FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Tryb transmisji:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Częstotliwość przerw:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID wideo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID napisów:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID teletekstu:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Identyfikator sieci:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Identyfikator strumienia transportu:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Identyfikator serwisu:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Kanał audio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Zaszyfrowany:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Konfiguracja telewizji" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Katalog nagrań\"" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Wybierz katalog" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Katalog przesunięcia czasu:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Przeszukaj dane ostatnio zmienione dnia %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Aktualizuj dane przeszukiwania przez internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Twoja pozycja (potrzebna tylko dla wirnika USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Długość geograficzna:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Szerokość geograficzna:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opcje ogólne" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Urządzenie %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Aktualizuj dane przeszukiwania przez internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Pobieranie danych przeszukiwania" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Aktualizacja danych przeszukiwania nie powiodła się." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Pomyślnie uaktualniono dane przeszukiwania. Zmiany odniosą\n" "efekt po zamknięciu okna konfiguracji." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nazwa: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Przesuń w lewo" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Przywróć" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Przesuń w prawo" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Urządzenie niepodłączone." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Naziemny" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automatyczne przeszukiwanie" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automatyczne przeszukiwanie z przesunięciami 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automatyczne przeszukiwanie Australii" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automatyczne przeszukiwanie Włoch" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automatyczne przeszukiwanie Tajwanu" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Limit czasu tunera (ms)" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Źródło:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Brak źródła" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nazwa:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Konfiguracja:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Przełącznik DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Wirnik USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Wirniki pozycji" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Ustawienia LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Ustawienia LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Dodaj satelitę" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelita" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Pozycja" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Usuń satelitę" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Uniwersalny LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB C-band" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "Wielopunktowy LNB C-band" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Własny LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Przełącz częstotliwość (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Wąskopasmowy LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Szerokopasmowy LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Poziomy LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Pionowy LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Przewodnik po programach" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Planowanie nagrywania" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Znajdź:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Rozpocznij" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Czas trwania" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Tytuł" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nie znaleziono odpowiedniego urządzenia." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nie znaleziono odpowiedniego urządzenia." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Planowanie nagrywania" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nowy" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nazwa" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Modyfikuj harmonogram" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nazwa:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanał:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Rozpocznij" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Czas trwania:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Koniec:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Powtórz:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nigdy" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Codziennie" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Dostawca" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanały" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Wyczyść" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Przeszukiwanie kanałów" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Rozpocznij przeszukiwanie" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sygnał:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Dostrojony:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtr" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Free to air" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Telewizja" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Dostawca:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Dodaj filtrowany" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Dodaj wybrany" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Wyniki przeszukiwania" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Bieżący transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Zatrzymaj przeszukiwanie" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Przewodnik po programach" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Planowanie nagrywania" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Nagrywanie błyskawiczne" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Konfiguracja telewizji" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Znajdź:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanał: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Rozpoczęto nagrywanie błyskawiczne" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Zatrzymano nagrywanie błyskawiczne" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Tytuł" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Wykonawca" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Numer ścieżki" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Długość" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Tymczasowa lista odtwarzania" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Powtórz" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Losowo" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Dodaj satelitę" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Zmień nazwę" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Lista odtwarzania bez nazwy" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "PID napisów:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Lista odtwarzania\n" "*.m3u|M3U Lista odtwarzania\n" "*.pls|PLS Lista odtwarzania" #~ msgid "Channel Settings" #~ msgstr "Ustawienia kanału" #~ msgid "Name" #~ msgstr "Nazwa" #~ msgid "Edit" #~ msgstr "Edycja" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Usuń" #~ msgid "Remove" #~ msgstr "Usuń" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Rozpocznij" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Początek:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nowy" #~ msgid "Channel" #~ msgstr "Kanał" #~ msgid "Duration" #~ msgstr "Czas trwania" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Zaplanuj program" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nazwa" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Odśwież" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Program pomyślnie zaplanowano." #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "Nie można otworzyć %1." #~ msgid "Unknown playlist format." #~ msgstr "Nieznany format listy odtwarzania." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Losowo" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Przeskocz o 1min do tyłu" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Przeskocz o 1min do przodu" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "Skanuj plik ostatnio zmodyfikowany
dnia %1" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Odtwarzacz Kaffeine]
kofeina dla " #~ "Twojego pulpitu!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Pozycja" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Nowy" #~ msgid "Start scan" #~ msgstr "Rozpocznij skanowanie" #~ msgid "No source" #~ msgstr "Brak źródła" #~ msgid "&View" #~ msgstr "&Widok" #, fuzzy #~| msgid "Play" #~ msgid "&Player" #~ msgstr "Odtwórz" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "Usuń kanał" #~ msgid "Open file" #~ msgstr "Otwórz plik" #~ msgid "Use right click to edit/delete" #~ msgstr "Użyj prawego przycisku myszy, aby zmienić/usunąć" #~ msgid "Channel search" #~ msgstr "Znajdź kanał" #~ msgid "Change icon" #~ msgstr "Zmień ikonę" #~ msgid "DVB Settings" #~ msgstr "Ustawienia DVB" #~ msgid "Configure DVB" #~ msgstr "Konfiguracja DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Przejdź do karty startowej" #~ msgid "Switch to Player Tab" #~ msgstr "Przejdź do karty odtwarzacza" #, fuzzy #~| msgid "Switch to Player Tab" #~ msgid "Switch to Playlist Tab" #~ msgstr "Przejdź do karty odtwarzacza" #~ msgid "Switch to DVB Tab" #~ msgstr "Przejdź do karty DVB" kaffeine-1.2.2/po/pl/CMakeLists.txt0000644000175000017500000000012711552636277016521 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(pl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sr@ijekavianlatin/0000755000175000017500000000000011552636277017004 5ustar lxuserlxuserkaffeine-1.2.2/po/sr@ijekavianlatin/kaffeine.po0000644000175000017500000006511511552636277021124 0ustar lxuserlxuser# Translation of kaffeine.po into Serbian. # Slobodan Simic , 2009, 2010. # Dalibor Djuric , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-04-22 17:40+0200\n" "Last-Translator: Dalibor Djuric \n" "Language-Team: Serbian \n" "Language: sr@ijekavianlatin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Generator: Lokalize 1.0\n" "X-Environment: kde\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Medija plejer za KDE sa podrškom za digitalnu televiziju." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2010, autori Kaffeinea" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Kristof Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Održavalac" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Pusti fajl" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Pusti audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Pusti video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Pusti DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitalna TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Podesi Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Minimalistički režim" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimalistički režim" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Režim punog ekrana" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Mali preskok:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Veliki preskok:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fajl" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Otvori URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Pusti audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Pusti video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Pusti DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Pusti DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Puštanje" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista puštanja" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televizija" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Podešavanje" #: mainwindow.cpp:352 msgid "Start" msgstr "Početna" #: mainwindow.cpp:353 msgid "Playback" msgstr "Puštanje" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista puštanja" #: mainwindow.cpp:356 msgid "Television" msgstr "Televizija" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Pokreni u režimu punog ekrana" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(zastarela opcija)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Pusti TV kanal" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Pusti poslednje podešen TV kanal" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Popiši DVB podatke (ispravljačka opcija)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fajlovi ili URL‑ovi za puštanje" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Otvori URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Unesite URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Skoči na poziciju" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Unesite poziciju:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Prethodno" #: mediawidget.cpp:245 msgid "Play" msgstr "Pusti" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauziraj" #: mediawidget.cpp:253 msgid "Stop" msgstr "Zaustavi" #: mediawidget.cpp:259 msgid "Next" msgstr "Sljedeće" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Režim punog ekrana" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimalistički režim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "isključeno" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Povećaj jačinu zvuka" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Smanji jačinu zvuka" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Umukni zvuk" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Rasplići" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proporcija" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatski" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Uklopi u prozor" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Sam promijeni veličinu" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Isključeno" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Originalna veličina" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dvostruka veličina" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Klizač jačine zvuka" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Skoči na poziciju" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Skoči" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Skoči %1 sek. unazad" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Skoči %1 sek. unaprijed" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Klizač traženja" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Uključenost menija" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Naslov" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Poglavlje" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ugao" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Prebacivanje između prikaza proteklog i preostalog vremena" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Podržani medija fajlovi" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Svi fajlovi" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Napusti režim punog ekrana" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Napusti minimalistički režim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Zaustavljeno" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Utišano" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Čujno" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Jačina: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Rasplitanje uključeno" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Rasplitanje isključeno" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pauzirano" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Pušteno" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Slobodan Simić" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "slsimic@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Instalirajte priključak SQLitea za Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Ne mogu da otvorim SQLiteovu bazu." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Interna alatka za Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "broj" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Uredi" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Ukloni" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "horizontalna" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "vertikalna" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Kružno lijevo" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Kružno desno" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Ime:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Broj:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Izvor:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvencija (MHz):" # http://en.wikipedia.org/wiki/Symbol_rate #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Modulacioni protok (Bd):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulacija:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC protok:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizacija:" # http://en.wikipedia.org/wiki/Roll-off #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Frekventni pad:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Opseg:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC protok niskog prioriteta:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Režim prenosa:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Zaštitni period:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hijerarhija:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT‑a:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID videa:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID titla:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID teleteksta:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID mreže:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID prenosnog toka:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID servisa:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audio kanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Kodiran:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Podešavanje televizije" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Fascikla za snimanje:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Izaberite fasciklu" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Fascikla za pomjeraj:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Podaci o skeniranju ažurirani %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Osveži podatke o skeniranju sa Interneta" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Vaš položaj (potrebno samo za USALS rotore)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Geo. širina:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[J -90 ... 90 S]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Geo. dužina:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Z -180 ... 180 I]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opšte opcije" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Uređaj %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Osveži podatke o skeniranju sa Interneta" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Preuzimam podatke o skeniranju" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Neuspelo osvežavanje podataka o skeniranju." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Podaci o skeniranju uspješno ažurirani. Promjene\n" "će imati uticaja nakon što zatvorite dijalog za podešavanje." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Ime: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Pomjeri ulijevo" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Resetuj" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Pomjeri udesno" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Uređaj nije povezan." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB‑C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB‑S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB‑S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB‑T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kablovska" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Zemaljska" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoskeniranje" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoskeniranje sa pomjerajem od 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoskeniranje za Australiju" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoskeniranje za Italiju" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoskeniranje za Tajvan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Prekovreme birača (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Izvor:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Nema izvora" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Ime:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Podešavanje:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC prekidač" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Pozicioni rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Postavke LNB‑a %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Postavke LNB‑a" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Dodaj satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Položaj" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Ukloni satelit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Univerzalni LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C‑pojasni LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C‑pojasni višeodredišni LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Poseban LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frekvencija prebacivanja (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Niskopojasni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Visokopojasni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontalni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikalni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Programski vodič" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Raspored snimanja" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Traži:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 — %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Početna" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "trajanje" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "naslov" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nije nađen dostupan uređaj." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nije nađen dostupan uređaj." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Raspored snimanja" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Novo" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "ime" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Uredi unos rasporeda" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Ime:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Početna" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Trajanje:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Završetak:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Ponovi:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "nikad" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "dnevno" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "provajder" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanali" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Očisti" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Skeniranje kanala" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Počni skeniranje" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Podešeno:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Slobodno za emitovanje" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Provajder:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Dodaj filtrirano" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Dodaj izabrano" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Rezultati skeniranja" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Trenutni transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Zaustavi skeniranje" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programski vodič" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Raspored snimanja" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Trenutno snimanje" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Podešavanje televizije" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Traži:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Trenutno snimanje je pokrenuto" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Trenutno snimanje je zaustavljeno" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "naslov" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "izvođač" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "broj numere" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "trajanje" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Privremena lista puštanja" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Ponovi" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Nasumično" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Dodaj satelit" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Preimenuj" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Neimenovana lista puštanja" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "PID titla:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF lista\n" "*.m3u|M3U lista\n" "*.pls|PLS lista" kaffeine-1.2.2/po/sr@ijekavianlatin/CMakeLists.txt0000644000175000017500000000014611552636277021545 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sr@ijekavianlatin ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/mai/0000755000175000017500000000000011552636277014114 5ustar lxuserlxuserkaffeine-1.2.2/po/mai/kaffeine.po0000644000175000017500000006140211552636277016227 0ustar lxuserlxuser# translation of kaffeine.po to Maithili # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Sangeeta Kumari , 2009. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-04-21 23:39+0530\n" "Last-Translator: Sangeeta Kumari \n" "Language-Team: Maithili \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "\n" "\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "पूर्ण स्क्रीन मोड" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:282 msgid "&File" msgstr "फाइल (&F)" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:322 #, fuzzy #| msgid "Play" msgid "&Playback" msgstr "बजाउ" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "बजाउ" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "जमावट (&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "" #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "बजाउ" #: mainwindow.cpp:354 #, fuzzy #| msgid "Play" msgid "Playlist" msgstr "बजाउ" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Start in fullscreen mode" msgid "Start in full screen mode" msgstr "पूर्णस्क्रीन मोड आरंभ करू" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "(deprecated option)" msgstr "चैनल मेटाबू" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "चैनल मेटाबू" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "चैनल मेटाबू" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "यूआरएल भरू:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "स्थिति" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "पछिला" #: mediawidget.cpp:245 msgid "Play" msgstr "बजाउ" #: mediawidget.cpp:246 msgid "Pause" msgstr "ठहरू" #: mediawidget.cpp:253 msgid "Stop" msgstr "रोकू" #: mediawidget.cpp:259 msgid "Next" msgstr "अगिला" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "पूर्ण स्क्रीन मोड" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 #, fuzzy #| msgid "off" msgctxt "subtitle selection entry" msgid "off" msgstr "बन्न" #: mediawidget.cpp:293 #, fuzzy #| msgid "Audio" msgctxt "'Playback' menu" msgid "Audio" msgstr "ऑडियो" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "&View" msgctxt "'Playback' menu" msgid "Video" msgstr "दृश्य (&V)" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Audio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "ऑडियो" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Audio" msgid "Automatic Resize" msgstr "ऑडियो" #: mediawidget.cpp:366 #, fuzzy #| msgid "off" msgctxt "automatic resize" msgid "Off" msgstr "बन्न" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "Title" msgctxt "dvd navigation" msgid "Title" msgstr "शीर्षक" #: mediawidget.cpp:469 #, fuzzy #| msgid "Chapter" msgctxt "dvd navigation" msgid "Chapter" msgstr "अध्याय" #: mediawidget.cpp:475 #, fuzzy #| msgid "Angle" msgctxt "dvd navigation" msgid "Angle" msgstr "कोण" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "पूर्ण स्क्रीन मोड" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "रोकू" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "ठहरू" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "बजाउ" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "संगीता कुमारी" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "sangeeta09@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "चैनल" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "संख्या" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "संपादन" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "हटाबू" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "क्षैतिज" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "लम्बवत" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "चैनल" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "नाम:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number" msgctxt "@label tv channel" msgid "Number:" msgstr "संख्या" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "श्रोत:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "सामान्य विकल्प" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Audio" msgid "Autoscan" msgstr "ऑडियो" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "श्रोत:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "Source:" msgid "No Source" msgstr "श्रोत:" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "नाम:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Position" msgid "Positions Rotor" msgstr "स्थिति" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "&Settings" msgid "LNB %1 Settings" msgstr "जमावट (&S)" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "&Settings" msgid "LNB Settings" msgstr "जमावट (&S)" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "स्थिति" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "खोजू:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "अवधि" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "शीर्षक" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "नवीन" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "नाम" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "नाम:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "चैनलः" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Search:" msgctxt "@label tv show" msgid "Start:" msgstr "खोजू:" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "अवधिः" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "अंत:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "चैनल" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channel" msgid "Channel Scan" msgstr "चैनल" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "फिल्टर" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "रेडियो" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Filter" msgid "Add Filtered" msgstr "फिल्टर" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop" msgid "Stop Scan" msgstr "रोकू" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "खोजू:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channel:" msgctxt "osd" msgid "Channel: %1_" msgstr "चैनलः" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "Title" msgctxt "playlist track" msgid "Title" msgstr "शीर्षक" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "संख्या" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "बजाउ" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "रेडियो" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove" msgctxt "rename an entry in a list" msgid "Rename" msgstr "हटाबू" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "बजाउ" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #~ msgid "Name" #~ msgstr "नाम" #~ msgid "Edit" #~ msgstr "संपादन" #, fuzzy #~| msgid "Remove" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "हटाबू" #, fuzzy #~| msgid "Remove" #~ msgid "Remove" #~ msgstr "हटाबू" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "शुरू करू" #, fuzzy #~| msgid "Begin" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "शुरू करू" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "नवीन" #~ msgid "Duration" #~ msgstr "अवधि" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "नाम" #, fuzzy #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "हटाबू" #~ msgid "Navigation" #~ msgstr "नेविगेशन" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "नवीन" #~ msgid "Open file" #~ msgstr "फाइल खोलू" kaffeine-1.2.2/po/mai/CMakeLists.txt0000644000175000017500000000013011552636277016646 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(mai ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/de/0000755000175000017500000000000011552636277013736 5ustar lxuserlxuserkaffeine-1.2.2/po/de/kaffeine.po0000644000175000017500000022404511552636277016055 0ustar lxuserlxuser# translation of kaffeine.po to German # translation of kaffeine.po to # translation of de.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # # Jürgen Kofler , 2003,2004, 2005. # Jürgen Kofler , 2004, 2005. # Jürgen Kofler , 2005. # Thomas Ohms , 2006, 2007. # Thomas Reitelbach , 2006, 2009. # Burkhard Lück , 2008, 2009. # Frederik Schwarzer , 2009, 2010. # Markus Slopianka , 2010. # Panagiotis Papadopoulos , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-09-24 18:49+0200\n" "Last-Translator: Panagiotis Papadopoulos \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Eine KDE-Medienwiedergabe mit Unterstützung für digitales Fernsehen." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2009 Die Kaffeine-Autoren" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Betreuer" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Datei abspielen" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Audio-CD abspielen" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video-CD abspielen" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD abspielen" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitales Fernsehen" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeine einrichten" #: mainwindow.cpp:210 #, fuzzy #| msgid "Start playing immediately" msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Sofort abspielen" #: mainwindow.cpp:224 #, fuzzy #| msgid "Normal mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normaler Modus" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimaler Modus" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Vollbildmodus" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 #, fuzzy #| msgid "Saturation" msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Sättigung" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Konfiguration:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Datei" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Adresse öffnen ..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Audio-CD abspielen" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video-CD abspielen" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD abspielen" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD abspielen" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Wiedergabe" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Wiedergabe&liste" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Fernsehen" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Einstellungen" #: mainwindow.cpp:352 msgid "Start" msgstr "Start" #: mainwindow.cpp:353 msgid "Playback" msgstr "Wiedergabe" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Wiedergabeliste" #: mainwindow.cpp:356 msgid "Television" msgstr "Fernsehen" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Im Vollbildmodus starten" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(veraltete Einstellung)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "TV-Kanal abspielen" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Zuletzt eingestellten TV-Kanal abspielen" #: mainwindow.cpp:513 #, fuzzy msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Ausgabe der DVB-Daten (Debug-Option)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Abzuspielende Dateien oder Adressen" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Adresse öffnen" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Adresse eingeben:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Zu Position gehen" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Position eingeben:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Zurück" #: mediawidget.cpp:245 msgid "Play" msgstr "Abspielen" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stopp" #: mediawidget.cpp:259 msgid "Next" msgstr "Weiter" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Vollbildmodus" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimaler Modus" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "aus" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Lautstärke erhöhen" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Lautstärke verringern" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Stumm" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Deinterlace" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Seitenverhältnis" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatisch" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "An Fenster anpassen" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatische Größenänderung" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Aus" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Orginalgröße" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Doppelte Größe" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Lautstärkeregler" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Zu Position gehen" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Überspringen" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "%1 Sekunden zurück" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "%1 Sekunden vorwärts" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Lautstärkeregler" #: mediawidget.cpp:459 #, fuzzy #| msgid "Toggle Minimal Mode" msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Minimal-Modus umschalten" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitel" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Winkel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Zwischen abgelaufener und verbleibender Zeitanzeige umschalten" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Unterstützte Medienformate" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Alle Dateien" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Vollbildmodus verlassen" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Minimalen Modus verlassen" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Angehalten" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Stummschaltung" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Stummschaltung aus" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Lautstärke: %1 %" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Deinterlace: ein" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Deinterlace: aus" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Angehalten" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Wiedergabe" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Thomas Reitelbach" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "tr@erdfunkstelle.de" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Bitte installieren Sie das SQLite-Modul für Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Die SQLite-Datenbank kann nicht geöffnet werden." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Internes Werkzeug für Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Bearbeiten" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Entfernen" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikal" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Zirkular links" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Zirkular rechts" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanal bearbeiten" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Name:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Quelle:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequenz (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbolrate (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulation:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Fehlerkorrekturrate:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisation:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-Off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bandbreite:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Fehlerkorrekturrate LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Übertragungsmodus:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Schutzintervall:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchie:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT-PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Untertitel-PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teletext-PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Netzwerk-ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transportstrom-ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Service-ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audiokanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Verschlüsselt:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Fernsehen einrichten" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Ordner für Aufnahmen:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Ordner auswählen" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Ordner für Zeitversetzung:" #: dvb/dvbconfigdialog.cpp:81 #, fuzzy #| msgid "Begin margin:" msgid "Begin margin (minutes):" msgstr "Startmarkierung:" #: dvb/dvbconfigdialog.cpp:88 #, fuzzy #| msgid "End margin:" msgid "End margin (minutes):" msgstr "Endmarkierung:" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Den Zeichensatz ISO 8859-1 anstelle von ISO 6937 verwenden:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Suchlaufdaten zuletzt am %1 aktualisiert" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Suchlaufdaten über Internet aktualisieren" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Ihre Position (nur nötig für USALS-Rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Breitengrad:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Längengrad:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 O]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Allgemeine Einstellungen" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Gerät %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Suchlaufdaten über Internet aktualisieren" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Suchlaufdaten werden heruntergeladen" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Die Aktualisierung der Suchlaufdaten ist fehlgeschlagen." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Die Suchlaufdaten wurden erfolgreich aktualisiert. Die\n" "Änderungen werden aktiv, sobald Sie den Einrichtungsdialog schließen." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Name: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Nach links" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Zurücksetzen" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Nach rechts" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Gerät nicht angeschlossen." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestrisch" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automatischer Suchlauf" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automatischer Suchlauf mit 167-kHz-Versatz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automatischer Suchlauf für Australien" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automatischer Suchlauf für Italien" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automatischer Suchlauf für Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tuner-Timeout (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Quelle:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Keine Quelle" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Name:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Konfiguration:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC-Schalter" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-Rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positionen-Rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Einstellungen von LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-Einstellungen" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Satelliten hinzufügen" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Position" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Satelliten entfernen" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universal-LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-Band-LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-Band-Mehrfach-LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Benutzerdefinierter LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Umschaltfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Lowband-Zwischenfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Highband-Zwischenfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontale Zwischenfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikale Zwischenfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "Zwischenfrequenz (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Programmführer" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgid "Record as:" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Aufnehmen als:" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Suchen:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 – %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Dauer" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Titel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Kein passendes Gerät gefunden." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Kein passendes Gerät gefunden." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Aufnahmeplan" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Neu" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Name" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Einträg ändern" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Name:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Start" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Dauer:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Ende:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Wiederholung:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Niemals" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Täglich" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0 %" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1 %" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Anbieter" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanäle" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Löschen" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanalsuche" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Suchlauf starten" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Eingestellt:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Freie Programme" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Fernsehen" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Anbieter:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Gefilterte hinzufügen" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Ausgewählte hinzufügen" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Suchergebnisse" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Aktueller Transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Suchlauf anhalten" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programmführer" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Aufnahmeplan" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Sofortaufnahme" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Fernsehen einrichten" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Suchen:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1" #: dvb/dvbtab.cpp:291 #, fuzzy #| msgid "Kaffeine is still recording. Do you really want to quit?" msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "Kaffeine zeichnet gerade auf. Soll wirklich beendet werden?" #: dvb/dvbtab.cpp:301 #, fuzzy #| msgid "Kaffeine is still recording. Do you really want to quit?" msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "Kaffeine zeichnet gerade auf. Soll wirklich beendet werden?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Sofortaufnahme gestartet" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Sofortaufnahme angehalten" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Künstler" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Stücknummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Länge" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Temporäre Wiedergabeliste" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Wiederholen" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Zufällig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Untertitel hinzufügen" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Umbenennen" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Unbenannte Wiedergabeliste " #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Untertitel-Dateien" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.m3u|M3U-Wiedergabeliste\n" "*.pls|PLS-Wiedergabeliste\n" "*.xspf|XSPF-Wiedergabeliste" #~ msgid "Channel Settings" #~ msgstr "Kanaleinstellungen" #~ msgid "Name" #~ msgstr "Name" #~ msgid "Edit" #~ msgstr "Bearbeiten" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Entfernen" #~ msgid "Remove" #~ msgstr "Entfernen" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Anfang" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Anfang:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Neu" #~ msgid "Channel" #~ msgstr "Kanal" #~ msgid "Duration" #~ msgstr "Dauer" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Programm zur Aufnahme planen" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Name" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Aktualisieren" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Programm erfolgreich zur Aufnahme geplant." #~ msgid "Cannot open %1." #~ msgstr "%1 kann nicht geöffnet werden." #~ msgid "Unknown playlist format." #~ msgstr "Unbekanntes Wiedergabelisten-Format." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Zufällige Wiedergabe" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "1 Minute zurück" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "1 Minute vorwärts" #~ msgid "Scan data last updated
on %1" #~ msgstr "Suchlaufdaten zuletzt aktualisiert
am %1" #~ msgid "Remove All" #~ msgstr "Alle entfernen" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine-Player]
Energie für Ihre " #~ "Arbeitsfläche!
" #~ msgid "Navigation" #~ msgstr "Navigation" #~ msgid "Recordings" #~ msgstr "Aufnahmezeiten" #~ msgid "Edit Recording" #~ msgstr "Aufnahmezeit bearbeiten" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Neu" #~ msgid "Start scan" #~ msgstr "Suchlauf starten" #~ msgid "No source" #~ msgstr "Keine Quelle" #~ msgid "&View" #~ msgstr "&Ansicht" #~ msgid "&Player" #~ msgstr "Abs&pielgerät" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete the selected timer?" #~ msgid "Tune to the selected channel" #~ msgstr "Markierte Aufnahmezeit löschen?" #~ msgid "Open file" #~ msgstr "Datei öffnen" #, fuzzy #~| msgid "(Right click to edit/delete)" #~ msgid "Use right click to edit/delete" #~ msgstr "(Rechts-Klick um zu bearbeiten/löschen)" #~ msgid "Channel search" #~ msgstr "Kanalsuche" #~ msgid "Change icon" #~ msgstr "Symbol ändern" #~ msgid "DVB Settings" #~ msgstr "DVB-Einstellungen" #~ msgid "EPG" #~ msgstr "EPF" #~ msgid "Configure DVB" #~ msgstr "DVB einrichten" #, fuzzy #~| msgid "Quit After Playlist" #~ msgid "Switch to Playlist Tab" #~ msgstr "Beenden wenn Wiedergabeliste abgespielt" #~ msgid "Kaffeine Player" #~ msgstr "Kaffeine" #~ msgid "Player" #~ msgstr "Abspielgerät" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #, fuzzy #~| msgid "Position Toolbar" #~ msgid "Position Slider" #~ msgstr "Position" #~ msgid "Current/Next" #~ msgstr "Aktuelles/Nächstes" #~ msgid "View All Programs" #~ msgstr "Alle Programme betrachten" #~ msgid "Add to Timers" #~ msgstr "Zu Aufnahmezeiten hinzufügen" #~ msgid "None" #~ msgstr "Nichts" #~ msgid "Weekly" #~ msgstr "Wöchentlich" #~ msgid "Monthly" #~ msgstr "Monatlich" #~ msgid "Repeat..." #~ msgstr "Wiederholen ..." #~ msgid "Timer Editor" #~ msgstr "Aufnahmezeiten-Editor" #~ msgid "You must give it a name!" #~ msgstr "Es muss ein Name angegeben werden!" #~ msgid "Duration must be at least 1 minute!" #~ msgstr "Die Dauer muss mindestens eine Minute betragen!" #~ msgid "" #~ "Name must not contain any of the following characters: > < \\ / : \" |" #~ msgstr "Der Name darf keines der folgenden Zeichen enthalten: ><\\/:\"|" #~ msgid "Initial Transponder Settings" #~ msgstr "Beginnende Transponder-Einstellungen" #~ msgid "This name is not unique." #~ msgstr "Diese Bezeichnung ist nicht eindeutig." #~ msgid "Missing audio pid(s)!" #~ msgstr "Audio-PID(s) fehlen!" #~ msgid "Pid must be non zero!" #~ msgstr "PID darf nicht gleich Null sein!" #~ msgid "You have to choose some days." #~ msgstr "Es müssen einige Tage ausgewählt werden." #~ msgid "Timers" #~ msgstr "Aufnahmezeiten" #~ msgid "DVB settings" #~ msgstr "DVB-Einstellungen" #~ msgid "Broadcast" #~ msgstr "Übertragen" #~ msgid "Time shifting" #~ msgstr "Zeitversetzung" #~ msgid "Broadcasting" #~ msgstr "Netzwerkübertragung" #~ msgid "Select icon..." #~ msgstr "Symbol auswählen ..." #~ msgid "Choose channel icon" #~ msgstr "Symbol für Kanal auswählen" #~ msgid "Live digital TV only works with the xine engine." #~ msgstr "" #~ "Die Übertragung für Digitales Fernsehen funktioniert nur mit xine-" #~ "Treibern." #~ msgid "OSD Next Channel" #~ msgstr "OSD Nächster Kanal" #~ msgid "OSD Previous Channel" #~ msgstr "OSD Vorheriger Kanal" #~ msgid "OSD Zap" #~ msgstr "OSD Durchschalten" #~ msgid "OSD Next Event" #~ msgstr "OSD Nächstes Ereignis" #~ msgid "Show OSD" #~ msgstr "OSD anzeigen" #~ msgid "EPG..." #~ msgstr "EPF ..." #~ msgid "Timers..." #~ msgstr "Aufnahmezeiten ..." #~ msgid "Broadcasting..." #~ msgstr "Übertragung ..." #~ msgid "Channels..." #~ msgstr "Kanäle ..." #~ msgid "All" #~ msgstr "Alles" #~ msgid "New Category..." #~ msgstr "Neue Kategorie ..." #~ msgid "Delete Category..." #~ msgstr "Kategorie löschen ..." #~ msgid "New Category" #~ msgstr "Neue Kategorie" #~ msgid "Enter a name for this category:" #~ msgstr "Name für die Kategorie eingeben:" #~ msgid "Do you really want to delete this category?" #~ msgstr "Soll diese Kategorie wirklich gelöscht werden?" #~ msgid "" #~ "Can't get DVB data from http://hftom.free.fr/kaxtv/dvbdata.tar.gz!
" #~ "\t\t\tCheck your internet connection, and say Yes to try again.
\t\t" #~ "\tOr say No to cancel.
\t\t\tIf you already have this archive, copy it " #~ "to ~/.kde/share/apps/kaffeine/dvbdata.tar.gz and say Yes.

Should I " #~ "try again?
" #~ msgstr "" #~ "Es können keine DVB-Daten von http://hftom.free.fr/kaxtv/dvbdata.tar." #~ "gz bezogen werden!
\t\t\tBitte Internet-Verbindung überprüfen und " #~ "„Ja“ wählen, um es erneut zu versuchen.
\t\t\tOder „Nein“ wählen, um " #~ "abzubrechen.
\t\t\t Ist dieses Archiv bereits heruntergeladen, muss es " #~ "in das Verzeichnis ~/.kde/share/apps/kaffeine/dvbdata.tar.gz kopiert und " #~ "mit „Ja“ bestätigt werden.

Erneut versuchen?
" #~ msgid "Broadcasting failed." #~ msgstr "Übertragung fehlgeschlagen." #~ msgid "Can't start broadcasting." #~ msgstr "Übertragung kann nicht gestartet werden." #~ msgid "Timer successfully created and started." #~ msgstr "Aufnahmezeit erfolgreich erstellt und gestartet." #~ msgid "You may want to define some channel first!" #~ msgstr "Es sollten zuerst einige Kanäle bestimmt werden!" #~ msgid "Still recording." #~ msgstr "Aufnahme läuft." #~ msgid "Still broadcasting." #~ msgstr "Übertragung läuft." #~ msgid "Can't tune dvb!" #~ msgstr "DVB kann nicht eingestellt werden!" #~ msgid "Can't set pid(s)" #~ msgstr "PID(s) können nicht gesetzt werden" #~ msgid "No CAM free" #~ msgstr "Keine Kamera frei" #~ msgid "Kaffeine has queued timers. Do you really want to quit?" #~ msgstr "" #~ "Es sind vorprogrammierte Aufnahmezeiten vorhanden. Soll wirklich beendet " #~ "werden?" #~ msgid "Lock:" #~ msgstr "Gesperrt:" #~ msgid "Do you really want to delete all channels?" #~ msgstr "Sollen alle Kanäle gelöscht werden?" #~ msgid "START scan" #~ msgstr "Suchlauf BEGINNEN" #~ msgid "Stopping..." #~ msgstr "Wird angehalten ..." #~ msgid "Found: %1 TV - %2 radio" #~ msgstr "Gefunden : %1 TV - %2 Radio" #~ msgid "Can't open DVB info socket." #~ msgstr "DVB-Info-Socket kann nicht geöffnet werden." #~ msgid "Timers list:" #~ msgstr "Liste der Aufnahmezeiten:" #~ msgid "Stop/Delete" #~ msgstr "Anhalten/Löschen" #~ msgid "" #~ "This timer is repeated. Do you want to skip the current job or delete the " #~ "timer?" #~ msgstr "" #~ "Diese Aufnahmezeit wird wiederholt. Soll der derzeitige Auftrag " #~ "übersprungen oder die Aufnahmezeit gelöscht werden?" #~ msgid "Skip Current" #~ msgstr "Derzeitigen überspringen" #~ msgid "Copying data files..." #~ msgstr "Dateien werden kopiert ..." #~ msgid "Device Settings" #~ msgstr "Geräte-Einstellungen" #~ msgid "Name:" #~ msgstr "Name:" #~ msgid "Type:" #~ msgstr "Ausführung:" #~ msgid "Unknown" #~ msgstr "Unbekannt" #~ msgid "Number of LNBs:" #~ msgstr "Anzahl der LNBs:" #~ msgid "1st sat:" #~ msgstr "1. Satellit:" #~ msgid "LNB Settings..." #~ msgstr "LNB-Einstellungen ..." #~ msgid "2nd sat:" #~ msgstr "2. Satellit:" #~ msgid "3rd sat:" #~ msgstr "3. Satellit:" #~ msgid "4th sat:" #~ msgstr "4. Satellit:" #~ msgid "LNB settings..." #~ msgstr "LNB-Einstellungen ..." #~ msgid "" #~ "This device seems to support the autoscan feature. You " #~ "can choose AUTO in Source list to let Kaffeine search for a range " #~ "of frequencies.
If autoscan fails to find your channels, " #~ "choose a real Source in list.
" #~ msgstr "" #~ "Dieses Gerät scheint den automatischen Suchlauf zu " #~ "unterstützen. Es kann AUTOMATISCH in der Liste der Quellen " #~ "ausgewählt werden, um Kaffeine nach einem Frequenzbereich suchen zu " #~ "lassen.
Falls der automatische Suchlauf fehlschlägt, " #~ "muss eine echte Quelle aus der Liste ausgewählt werden.
" #~ msgid "" #~ "If you can't find your network/location in the list, you'll have " #~ "to create one. Look in $HOME/.kde/share/apps/kaffeine/dvb-x/ and take an " #~ "existing file as start point. Fill in with the values for your network/" #~ "location and give it a sensible name (follow the naming convention). If " #~ "you think your new file could be usefull for others, send it to kaffeine-" #~ "user(AT)lists.sf.net." #~ msgstr "" #~ "Es muss ein Netzwerk/Speicherort erstellt werden, falls in der " #~ "Liste nichts gefunden werden kann. Unter $HOME/.kde/share/apps/kaffeine/" #~ "dvb-x/ kann eine vorhandene Datei als Startpunkt genommen werden. Danach " #~ "müssen die Werte für Netzwerk/Speicherort und ein sinnvoller Namen (der " #~ "Namenskonvention folgend) angegeben werden. Sollten Sie der Meinung sein, " #~ "dass Ihre neue Datei nützlich für Andere sein könnte, senden Sie diese an " #~ "kaffeine-user(AT)lists.sf.net." #~ msgid "DVB Recording Options" #~ msgstr "DVB-Aufnahme-Optionen" #~ msgid "Records directory:" #~ msgstr "Aufnahmen-Verzeichnis:" #~ msgid "(minutes)" #~ msgstr "(Minuten)" #~ msgid "Instant record duration:" #~ msgstr "Sofortaufnahme Dauer:" #~ msgid "Preferred format:" #~ msgstr "Bevorzugtes Format:" #~ msgid "DVB Broadcasting" #~ msgstr "DVB-Übertragung" #~ msgid "Broadcast address:" #~ msgstr "Adresse:" #~ msgid "Broadcast port:" #~ msgstr "Port der Übertragung:" #~ msgid "Info port:" #~ msgstr "Info-Port:" #~ msgid "Misc" #~ msgstr "Sonstiges" #~ msgid "Default charset (restart needed):" #~ msgstr "Standard-Schriftsatz (benötigt Neustart):" #~ msgid "Download" #~ msgstr "Herunterladen" #~ msgid "" #~ "Dump epg's events to \n" #~ "~/kaffeine_dvb_events.tx:" #~ msgstr "" #~ "Speichere Auszüge der EPF-Ereignisse nach \n" #~ "~/kaffeine_dvb_events.tx :" #~ msgid "Dump" #~ msgstr "Speicherauszug" #~ msgid "DVB plugins" #~ msgstr "DVB-Plugins" #~ msgid "" #~ "Can't get DVB data from http://hftom.free.fr/kaxtv/dvbdata.tar.gz!
" #~ "\t\t\tCheck your internet connection, and say Yes to try again.
\t\t" #~ "\tOr say No to cancel.
Should I try again?
" #~ msgstr "" #~ "Es konnten keine Dateien von http://hftom.free.fr/kaxtv/dvbdata.tar." #~ "gz bezogen werden!
\t\t\t Bitte Internet-Verbindung überprüfen und Ja " #~ "wählen, um es erneut zu versuchen.
\t\t\tOder Nein wählen, um " #~ "abzubrechen
Erneut versuchen?
" #~ msgid "Invalid records directory." #~ msgstr "Ungültiges Aufnahme-Verzeichnis." #~ msgid "Invalid time shifting directory." #~ msgstr "Verzeichnis für die Zeitversetzung ist ungültig." #~ msgid "Broadcast and Info ports must be different." #~ msgstr "Übertragungs- und Info-Port müssen unterschiedlich sein." #~ msgid "Invalid broadcast address." #~ msgstr "Ungültige Adresse." #~ msgid "Dual LO" #~ msgstr "Dual LO" #~ msgid "Single LO" #~ msgstr "Einzel LO" #~ msgid "H/V LO" #~ msgstr "H/V LO" #~ msgid "Lo-band frequency:" #~ msgstr "Niedrige Bandbreiten-Frequenz:" #~ msgid "Hi-band frequency:" #~ msgstr "Hohe Bandbreiten-Frequenz:" #~ msgid "Single LO frequency:" #~ msgstr "Single LO-Frequenz:" #~ msgid "Vertical pol. LO frequency:" #~ msgstr "Vertikal pol. LO-Frequenz:" #~ msgid "Horizontal pol. LO frequency:" #~ msgstr "Horizontale pol. LO-Frequenz:" #~ msgid "Can't open DVB broadcast socket." #~ msgstr "DVB-Übertragungs-Socket kann nicht geöffnet werden." #~ msgid "Can't init DVB broadcast socket." #~ msgstr "DVB-Übertragungs-Socket kann nicht initialisiert werden." #~ msgid "No audio encoders could be found." #~ msgstr "Keine Audiokodierer gefunden." #~ msgid "Loading of encoder '%1' failed." #~ msgstr "Laden des Kodierers ‚%1‘ fehlgeschlagen." #~ msgid "Unable to create folder: " #~ msgstr "Ordner konnte nicht erstellt werden: " #~ msgid "MB" #~ msgstr "MB" #~ msgid "KB" #~ msgstr "KB" #~ msgid "Bytes" #~ msgstr "Bytes" #~ msgid "Audio CD" #~ msgstr "Audio-CD" #~ msgid "Play CD" #~ msgstr "CD abspielen" #~ msgid "Rip CD" #~ msgstr "CD kopieren" #~ msgid "Artist:" #~ msgstr "Künstler:" #~ msgid "Album:" #~ msgstr "Album:" #~ msgid "Track" #~ msgstr "Stück" #~ msgid "" #~ "Select the tracks you want to rip and click the Encode button." #~ msgstr "" #~ "Bitte die Stücke auswählen, die kopiert werden sollen und den " #~ "Kodieren-Knopf betätigen." #~ msgid "Encode..." #~ msgstr "Kodieren ..." #~ msgid "Audio CD encoding" #~ msgstr "Audio-CD kodieren" #~ msgid "Play VCD" #~ msgstr "VCD abspielen" #~ msgid "Open &DVD" #~ msgstr "&DVD öffnen" #~ msgid "Open &VCD" #~ msgstr "&VCD öffnen" #~ msgid "Open &Audio-CD" #~ msgstr "&Audio-CD öffnen" #~ msgid "You must select the tracks to rip." #~ msgstr "Bitte die Stücke auswählen, die kopiert werden sollen." #~ msgid "Several Audio CD found. Choose one:" #~ msgstr "Es wurden mehrere Audio-CDs gefunden. Bitte eine auswählen:" #~ msgid "No audio CD found." #~ msgstr "Keine Audio-CD gefunden." #~ msgid "DVD Video" #~ msgstr "DVD-Video" #~ msgid "Several DVD Video found. Choose one:" #~ msgstr "Mehrere DVD-Videos gefunden. Bitte eines auswählen:" #~ msgid "VCD-SVCD" #~ msgstr "VCD-SVCD" #~ msgid "Several (S)VCD found. Choose one:" #~ msgstr "Mehrere (S)VCDs gefunden. Bitte eine auswählen:" #~ msgid "No Title" #~ msgstr "Kein Titel" #~ msgid "Track %1" #~ msgstr "Stück %1" #~ msgid "Searching local cddb entry ..." #~ msgstr "Lokaler CDDB-Eintrag wird gesucht ..." #~ msgid "Searching remote cddb entry ..." #~ msgstr "Entfernter CDDB-Eintrag wird gesucht ..." #~ msgid "Found exact match cddb entry ..." #~ msgstr "Genauer Treffer in einem CDDB-Eintrag gefunden ..." #~ msgid "Found close cddb entry ..." #~ msgstr "Ähnlichen CDDB-Eintrag gefunden ..." #~ msgid "CDDB Matches" #~ msgstr "CDDB Treffer" #~ msgid "Several close CDDB entries found. Choose one:" #~ msgstr "" #~ "Es wurden mehrere Einträge in der CDDB gefunden. Bitte einen auswählen:" #~ msgid "KaffeineMp3Lame" #~ msgstr "Kaffeine-Mp3Lame" #~ msgid "A Lame mp3 encoder plugin for Kaffeine." #~ msgstr "Ein Lame mp3 Kodierungsmodul für Kaffeine." #~ msgid "KaffeineOggVorbis" #~ msgstr "KaffeineOggVorbis" #~ msgid "A Ogg Vorbis encoder plugin for Kaffeine." #~ msgstr "Ein Ogg Vorbis Kodierungsmodul für Kaffeine." #~ msgid "DVB Client" #~ msgstr "DVB-Client" #~ msgid "Can't open info socket." #~ msgstr "Info-Socket kann nicht geöffnet werden." #~ msgid "Can't bind info socket!!!" #~ msgstr "Bindung zum Info-Socket kann nicht hergestellt werden!" #~ msgid "Can't set socket option!!!" #~ msgstr "Socket-Option kann nicht gesetzt werden!" #~ msgid "Can't bind socket!!!" #~ msgstr "Bindung zum Socket kann nicht hergestellt werden!" #~ msgid "All Sizes" #~ msgstr "Alle Größen" #~ msgid "Very Small" #~ msgstr "Sehr klein" #~ msgid "Small" #~ msgstr "Klein" #~ msgid "Medium" #~ msgstr "Mittel" #~ msgid "Large" #~ msgstr "Groß" #~ msgid "Very Large" #~ msgstr "Sehr groß" #~ msgid "New Search" #~ msgstr "Neue Suche" #~ msgid "The cover you have selected is unavailable. Please select another." #~ msgstr "" #~ "Das ausgewählte Deckblatt ist nicht verfügbar. Bitte ein anderes " #~ "auswählen." #~ msgid "Cover Unavailable" #~ msgstr "Deckblatt nicht verfügbar" #~ msgid "Cover Downloader" #~ msgstr "Deckblatt herunterladen" #~ msgid "No matching images found, please enter new search terms:" #~ msgstr "Keine passenden Bilder gefunden. Bitte neue Suchkriterien eingeben:" #~ msgid "Enter new search terms:" #~ msgstr "Neue Suchkriterien eingeben:" #~ msgid "Play Next/Add to Queue" #~ msgstr "Als nächstes abspielen/Zur Warteschlange hinzufügen" #~ msgid "Select &All" #~ msgstr "&Alles auswählen" #~ msgid "Create Playlist From Selected" #~ msgstr "Wiedergabeliste mit Ausgewählten erstellen" #~ msgid "&Edit Title" #~ msgstr "Titel b&earbeiten" #~ msgid "&Info" #~ msgstr "&Info" #~ msgid "URL" #~ msgstr "Adresse" #~ msgid "Genre" #~ msgstr "Genre" #~ msgid "Subtitles" #~ msgstr "Untertitel" #~ msgid "in use" #~ msgstr "wird benutzt" #~ msgid "" #~ "*.smi *.srt *.sub *.txt *.ssa *.asc|Subtitle Files\n" #~ "*.*|All Files" #~ msgstr "" #~ "*.smi *.srt *.sub *.txt *.ssa *.asc|Untertitel Dateien\n" #~ "*.*|Alle Dateien" #~ msgid "Select Subtitle File" #~ msgstr "Untertitel auswählen" #~ msgid "Choose a Cover..." #~ msgstr "Deckblatt auswählen ..." #~ msgid "Gallery..." #~ msgstr "Galerie ..." #~ msgid "Playlist:" #~ msgstr "Wiedergabeliste:" #~ msgid "" #~ "Select the active playlist. To change playlist name edit it and confirm " #~ "with 'Return'." #~ msgstr "" #~ "Aktive Wiedergabeliste wählen. Um den Namen der Wiedergabeliste zu " #~ "ändern, muss dieser bearbeitet und mit der ‚Eingabetaste‘ bestätigt " #~ "werden." #~ msgid "Loop playlist" #~ msgstr "Wiedergabeliste in Schleife abspielen" #~ msgid "Play items in random order" #~ msgstr "Einträge in zufälliger Reihenfolge spielen" #~ msgid "Autodownload covers" #~ msgstr "Cover automatisch herunterladen" #~ msgid "Automatic dowloading of covers" #~ msgstr "Automatisches Herunterladen von Cover-Bildern" #~ msgid "&Clear Current Playlist" #~ msgstr "Derzeitige Wiedergabeliste &leeren" #~ msgid "Ne&w Playlist" #~ msgstr "Neue &Wiedergabeliste" #~ msgid "&Import Playlist..." #~ msgstr "Wiedergabeliste &importieren ..." #~ msgid "&Save Current Playlist As..." #~ msgstr "Derzeitige Wiedergabeliste speichern &unter ..." #~ msgid "Re&move Current Playlist" #~ msgstr "Derzeitige Wiedergabeliste ent&fernen" #~ msgid "Kaffeine Playlists" #~ msgstr "Kaffeine Wiedergabelisten" #~ msgid "Open Playlist" #~ msgstr "Wiedergabeliste öffnen" #~ msgid "M3U Playlists" #~ msgstr "M3U Wiedergabelisten" #~ msgid "PLS Playlists" #~ msgstr "PLS Wiedergabelisten" #~ msgid "NEW" #~ msgstr "NEU" #~ msgid "Importing media resources..." #~ msgstr "Medienquellen importieren ..." #~ msgid "(no subtitles)" #~ msgstr "(keine Untertitel)" #~ msgid "Other subtitle..." #~ msgstr "Anderer Untertitel ..." #~ msgid "Gallery" #~ msgstr "Galerie" #~ msgid "Queue: %1 Entries, Playtime: %2" #~ msgstr "Warteschlange: %1 Einträge, Spielzeit: %2" #~ msgid "Entries: %1, Playtime: %2" #~ msgstr "Einträge: %1, Spielzeit: %2" #~ msgid "Remove '%1' from list and from disk?" #~ msgstr "‚%1‘ aus Liste und von der Festplatte entfernen?" #~ msgid "Playlist Name Already Exists" #~ msgstr "Der Name dieser Wiedergabeliste existiert bereits" #~ msgid "Enter different playlist name:" #~ msgstr "Bitte einen anderen Namen für die Wiedergabeliste eingeben:" #~ msgid "Select Subtitle" #~ msgstr "Untertitel auswählen" #~ msgid "Media file:" #~ msgstr "Mediendatei:" #~ msgid "Subtitle file:" #~ msgstr "Untertitel-Datei:" #~ msgid "Play / Pause" #~ msgstr "Abspielen / Pause" #~ msgid "&Mute" #~ msgstr "Stu&mm" #~ msgid "[Kaffeine Player]" #~ msgstr "[Kaffeine]" #~ msgid "" #~ "_: NAME OF TRANSLATORS\n" #~ "Your names" #~ msgstr "Thomas Ohms" #~ msgid "" #~ "_: EMAIL OF TRANSLATORS\n" #~ "Your emails" #~ msgstr "t.ohms@freenet.de" #~ msgid "" #~ "A media player for KDE 3. Can use multiple backends for playback, default " #~ "(and recommended) is xine." #~ msgstr "" #~ "Ein Medienabspieler für KDE 3. Kann verschiedene Schnittstellen zum " #~ "Abspielen benutzen.\n" #~ "Grundsätzlich wird xine verwendet." #~ msgid "Original author" #~ msgstr "Ursprünglicher Autor" #~ msgid "CICAM support." #~ msgstr "CICAM-Unterstützung." #~ msgid "Various valuable patches." #~ msgstr "Verschiedene Patches." #~ msgid "DVB OSD browsing patch." #~ msgstr "Patch zum Durchsuchen via DVB-OSD." #~ msgid "DVB categories patches." #~ msgstr "Patch für DVB-Kategorien." #~ msgid "Logo for Kaffeine 0.8 and other artwork." #~ msgstr "Logo für Kaffeine 0.8 und weitere Illustrationen." #~ msgid "Logo animation for Kaffeine 0.5" #~ msgstr "Logo-Animation für Kaffeine 0.5" #~ msgid "Alternate encoding for meta tags. Many patches." #~ msgstr "Alternative Kodierung für Meta-Tags. Viele Patches." #~ msgid "xine post plugin handling. Many patches." #~ msgstr "Vorbehandlung für xine-Modul. Viele Patches." #~ msgid "Subtitle file import." #~ msgstr "Untertitel importieren." #~ msgid "M3U import. Testing." #~ msgstr "M3U-Import. Testweise." #~ msgid "Subtitle PIDs Editor" #~ msgstr "Untertitel-PIDs Editor" #~ msgid "New Item" #~ msgstr "Neues Element" #~ msgid "Move Up" #~ msgstr "Nach oben verschieben" #~ msgid "Move Down" #~ msgstr "Nach unten verschieben" #~ msgid "<< Update Selected" #~ msgstr "<< Markierte aktualisieren" #~ msgid "<< New" #~ msgstr "<< Neu" #~ msgid "Pid:" #~ msgstr "PID:" #~ msgid "Page:" #~ msgstr "Seite:" #~ msgid "Sub page:" #~ msgstr "Unterseite:" #~ msgid "Lang:" #~ msgstr "Sprache:" #~ msgid "Repeated Timer" #~ msgstr "Wiederholte Aufnahmezeit " #~ msgid "Audio PIDs editor" #~ msgstr "Audio-PID(s) Editor" #~ msgid "Audio PIDs" #~ msgstr "Audio-PIDs" #~ msgid "AC3" #~ msgstr "AC3" #~ msgid "Broadcasting Editor" #~ msgstr "Übertragungseditor" #~ msgid "Available channels:" #~ msgstr "Verfügbare Kanäle:" #~ msgid "Broadcasting list:" #~ msgstr "Übertragungsliste:" #~ msgid "New..." #~ msgstr "Neu ..." #~ msgid "Offset (KHz)" #~ msgstr "Versatz (KHz)" #~ msgid "+167" #~ msgstr "+167" #~ msgid "-167" #~ msgstr "-167" #~ msgid "Filters" #~ msgstr "Filter" #~ msgid "<< Add Filtered" #~ msgstr "<< Gefilterte hinzufügen" #~ msgid "Found" #~ msgstr "Gefunden" #~ msgid "Done" #~ msgstr "Fertig" #~ msgid "Channel Editor" #~ msgstr "Kanaleditor" #~ msgid "Nr:" #~ msgstr "Nr:" #~ msgid "Polarity" #~ msgstr "Polarität" #~ msgid "Subtitle PIDs..." #~ msgstr "Untertitel-PIDs ..." #~ msgid "Audio PIDs..." #~ msgstr "Audio-PIDs ..." #~ msgid "FEC high:" #~ msgstr "FEC Hoch:" #~ msgid "FEC low:" #~ msgstr "FEC Niedrig:" #~ msgid "Inversion:" #~ msgstr "Umkehrung:" #~ msgid "Encoding Preferences" #~ msgstr "Kodierung Eigenschaften" #~ msgid "Base directory:" #~ msgstr "Hauptverzeichnis:" #~ msgid "..." #~ msgstr "..." #~ msgid "Paranoia:" #~ msgstr "Paranoia:" #~ msgid "Disable all checking" #~ msgstr "Alles Ausgewählte abschalten" #~ msgid "Paranoia mode" #~ msgstr "Paranoia Modus" #~ msgid "Normalize" #~ msgstr "Normalisieren" #~ msgid "CD Toolbar" #~ msgstr "CD" #~ msgid "Lame mp3 options" #~ msgstr "Lame mp3 Optionen" #~ msgid "VBR" #~ msgstr "VBR" #~ msgid "Bitrate:" #~ msgstr "Bitrate:" #~ msgid "Kb/s" #~ msgstr "Kb/s" #~ msgid "Ogg Vorbis Options" #~ msgstr "Ogg Vorbis Optionen" #~ msgid "Quality :" #~ msgstr "Qualität:" #~ msgid "Quit Options" #~ msgstr "Abschaltoptionen" #~ msgid "Enable Auto &Resize" #~ msgstr "Automatische G&rößenanpassung aktivieren" #~ msgid "&Network Broadcasting" #~ msgstr "&Netzwerkübertragung" #~ msgid "&DVD" #~ msgstr "&DVD" #~ msgid "&DVD Menus" #~ msgstr "&DVD Menüs" #~ msgid "&Audio" #~ msgstr "&Audio" #~ msgid "&Aspect Ratio" #~ msgstr "&Seitenverhältnis" #~ msgid "Screenshot Toolbar" #~ msgstr "Bildschirmfoto" #~ msgid "Controls Toolbar" #~ msgstr "Steuerungen" #~ msgid "Kaffeine Setup" #~ msgstr "Kaffeine einrichten" #~ msgid "Behavior" #~ msgstr "Verhalten" #~ msgid "Pause video when window is minimized" #~ msgstr "Video bei minimiertem Fenster anhalten" #~ msgid "Embed in system tray" #~ msgstr "In Kontrollleiste einbetten" #~ msgid " sec" #~ msgstr " Sek" #~ msgid "Duration of title announcement in system tray" #~ msgstr "Dauer der Titelanzeige in Kontrollleiste" #~ msgid "Enable DVB client" #~ msgstr "DVB-Client aktivieren" #~ msgid "Miscellaneous Options" #~ msgstr "Sonstige Optionen" #~ msgid "Use alternate (non-Unicode) encoding for Meta tags" #~ msgstr "Alternative (nicht Unicode) Kodierung für Meta-Tags verwenden" #~ msgid "" #~ "Choose alternate encoding name for Meta tags\n" #~ "(in order to convert to Unicode)" #~ msgstr "" #~ "Alternative Kodierung für Meta-Tags auswählen\n" #~ "(um sie in Unicode umzuwandeln)" #~ msgid "Clear recent files list" #~ msgstr "Liste der zuletzt geöffneten Dateien leeren" #~ msgid "Set audio driver" #~ msgstr "Audiotreiber einstellen" #~ msgid "Set video driver" #~ msgstr "Videotreiber einstellen" #~ msgid "Set Audio-CD/VCD/DVD device path." #~ msgstr "Pfad zur Audio-CD/VCD/DVD setzen." #~ msgid "Output xine debug messages" #~ msgstr "Ausgabe der xine-Speicherauszüge" #~ msgid "Run installation wizard" #~ msgstr "Installationshelfer starten" #~ msgid "" #~ "File(s) to play. Can be a local file, a URL, a directory or 'DVD', 'VCD', " #~ "'AudioCD'." #~ msgstr "" #~ "Datei(en) zum abspielen. Lokale Datei, eine Adresse, ein Verzeichnis oder " #~ "‚DVD‘, ‚VCD‘, ‚Audio-CD‘ sind möglich." #~ msgid "Player Window" #~ msgstr "Wiedergabe-Fenster" #~ msgid "MPEG Audio Files" #~ msgstr "MPEG Audio Dateien" #~ msgid "MPEG Video Files" #~ msgstr "MPEG Video Dateien" #~ msgid "Ogg Vorbis Files" #~ msgstr "Ogg Vorbis Dateien" #~ msgid "AVI Files" #~ msgstr "AVI Dateien" #~ msgid "Quicktime Files" #~ msgstr "Quicktime Dateien" #~ msgid "Real Media Files" #~ msgstr "Real Media Dateien" #~ msgid "Matroska Files" #~ msgstr "Matroska Dateien" #~ msgid "FLAC Files" #~ msgstr "FLAC Dateien" #~ msgid "Windows Media Files" #~ msgstr "Windows Media Dateien" #~ msgid "WAV Files" #~ msgstr "WAV Dateien" #~ msgid "Loading of player part '%1' failed." #~ msgstr "Laden des Abspielgerätes ‚%1‘ fehlgeschlagen." #~ msgid "%1 not found in search path." #~ msgstr "%1 nicht im Suchpfad gefunden." #~ msgid "Open D&irectory..." #~ msgstr "Verze&ichnis öffnen ..." #~ msgid "Quit && Shutoff Monitor After This Track" #~ msgstr "Beenden und Monitor ausschalten nach diesem Stück" #~ msgid "Quit After This Track" #~ msgstr "Beenden nach diesem Stück" #~ msgid "Toggle &Playlist/Player" #~ msgstr "Zwischen Wiedergabeliste/Abs&pielgerät umschalten" #~ msgid "Keep &Original Aspect" #~ msgstr "&Ursprüngliches Seitenverhältnis beibehalten" #~ msgid "Triple Size" #~ msgstr "Dreifache Größe" #~ msgid "&Player Engine" #~ msgstr "Abs&pielgerät" #~ msgid "DVB client" #~ msgstr "DVB-Client" #~ msgid "DPMS Xserver extension was not found." #~ msgstr "DPMS XServer-Erweiterung wurde nicht gefunden." #~ msgid "" #~ "This will quit Kaffeine and shut off the monitor's power after the file/" #~ "playlist has finished. Option \"dpms\" must be in your X config file for " #~ "the monitor to power off." #~ msgstr "" #~ "Kaffeine wird nach diesem Stück/dieser Wiedergabeliste beendet und der " #~ "Monitor ausgeschaltet. Die Option „dpms“ muss in der X-Config Datei sein " #~ "um den Monitor ausschalten zu können." #~ msgid "Open Folder" #~ msgstr "Ordner öffnen" #~ msgid "No %1 in drive, or wrong path to device." #~ msgstr "Keine %1 im Laufwerk, oder falsch gesetzter Pfad zum Gerät." #~ msgid "Please select correct drive:" #~ msgstr "Bitte das richtige Laufwerk auswählen:" #~ msgid "Kaffeine %1 Installation Wizard" #~ msgstr "Kaffeine %1 Installationshelfer" #~ msgid "Installation Check" #~ msgstr "Installationsprüfung" #~ msgid "Ok." #~ msgstr "OK." #~ msgid "Part not found. Please check your installation!" #~ msgstr "Modul nicht gefunden. Bitte die Installation prüfen!" #~ msgid "Found version" #~ msgstr "Gefundene Version" #~ msgid "Kaffeine requires KDE >= %1." #~ msgstr "Kaffeine benötigt KDE >= %1." #~ msgid "WIN32 Codecs" #~ msgstr "WIN32 Codecs" #~ msgid "" #~ "No WIN32 codecs found in /usr/lib/win32. You're not able to play Windows " #~ "Media 9 files, newer Real Media files and some less common formats. " #~ "Download the codecs here:" #~ msgstr "" #~ "Keine WIN32 Codecs gefunden in /usr/lib/win32. Es können keine Windows " #~ "Media 9 Dateien, neuere Real Media Dateien und einige weniger " #~ "gebräuchlichere Formate abgespielt werden. Die Codecs können hier " #~ "heruntergeladen werden:" #~ msgid "" #~ "libdvdcss not found. You're not able to play encrypted (most commercial) " #~ "DVD's. You can get the library here (but using it may violate copyright " #~ "regulations of your country!):" #~ msgstr "" #~ "libdvdcss nicht gefunden. Es können keine verschlüsselten (die meisten " #~ "kommerziellen) DVD's abgespielt werden. Die Bibliothek gibt es hier (aber " #~ "ihre Benutzung könnte geltende Copyright-Bestimmungen Ihres Landes " #~ "verletzen):" #~ msgid "DVD Drive" #~ msgstr "DVD-Laufwerk" #~ msgid "DMA mode off! For smooth DVD playback run as root:" #~ msgstr "" #~ "DMA Modus deaktiviert! Für flüssige DVD Wiedergabe muss folgendes als " #~ "„root“ eingegeben werden:" #~ msgid "Can't check DMA mode. Permission denied or no such device:" #~ msgstr "" #~ "Kann DMA Modus nicht prüfen. Zugriff verweigert oder kein solches Gerät:" #~ msgid "DVB-Device" #~ msgstr "DVB-Gerät" #~ msgid "No DVB-Devices found. The DVB related functions will be hidden." #~ msgstr "" #~ "Keine DVB-Geräte gefunden. Alle DVB-bezogene Funktionalität wird " #~ "ausgeblendet." #~ msgid "Distribution" #~ msgstr "Distribution" #~ msgid "" #~ "The xine-lib shipped by SuSE \"may lack certain features because of legal " #~ "requirements (potential patent violation)\". You should use the packages " #~ "from here:" #~ msgstr "" #~ "Die xine-lib die von SuSE mitgeliefert wird lässt einige Fähigkeiten " #~ "nicht zu (wegen möglicher Patentverletzungen). Es sollten die Pakete von " #~ "hier benutzt werden:" #~ msgid "RESULT" #~ msgstr "ERGEBNIS" #~ msgid "Found some problems, but nevertheless Kaffeine may work." #~ msgstr "" #~ "Einige Probleme gefunden, aber Kaffeine dürfte trotzdem funktionieren." #~ msgid "All ok!" #~ msgstr "Alles in Ordnung!" #~ msgid "" #~ "Use Kaffeine as helper application for mms:// (Microsoft Media) streams" #~ msgstr "" #~ "Kaffeine als Helfer-Applikation für mms:// (Microsoft Media) Streams " #~ "benutzen" #~ msgid "" #~ "Use Kaffeine as helper application for rtsp:// (Real Media and others) " #~ "streams" #~ msgstr "" #~ "Kaffeine als Helfer-Applikation für rtsp:// (Real Media und andere) " #~ "Streams benutzen" #~ msgid "Create a Kaffeine icon on desktop" #~ msgstr "Ein Kaffeine-Symbol auf der Arbeitsfläche erzeugen" #~ msgid "Installation Options" #~ msgstr "Installationsoptionen" #~ msgid "Deinterlace Quality" #~ msgstr "Deinterlace Qualität" #~ msgid "" #~ "Very low cpu usage, worst quality.
Half of vertical resolution " #~ "is lost. For some systems (with PCI video cards) this might decrease the " #~ "cpu usage when compared to plain video playback (no deinterlacing)." #~ msgstr "" #~ "Sehr, sehr geringe CPU Last, schlechteste Qualität.
Die Hälfte " #~ "der vertikalen Auflösung geht verloren. Für einige Systeme (mit PCI-" #~ "Videokarten) kann das zu einer Verringerung der CPU-Last im Vergleich zur " #~ "Wiedergabe ohne Deinterlacing führen." #~ msgid "" #~ "Low cpu usage, poor quality.
Image is blurred vertically so " #~ "interlacing effects are removed." #~ msgstr "" #~ "Geringe CPU-Last, geringe Qualität.
Interlacing Effekte werden " #~ "behoben durch vertikales Verwischen des Bildes." #~ msgid "" #~ "Medium cpu usage, medium quality.
Image is analysed and areas " #~ "showing interlacing artifacts are fixed (interpolated)." #~ msgstr "" #~ "Mittlere CPU-Last, mittlere Qualität.
Das Bild wird analysiert " #~ "und Interlacing-Artefakte werden behoben (interpoliert)." #~ msgid "" #~ "High cpu usage, good quality.
Conversion of dvd image format " #~ "improves quality and fixes chroma upsampling bug." #~ msgstr "" #~ "Hohe CPU-Last, gute Qualität.
Die Konvertierung des DVD " #~ "Bildformats verbessert die Qualität und behebt einen Fehler in der " #~ "Farbreinheit." #~ msgid "" #~ "Very high cpu usage, great quality.
Besides using smart " #~ "deinterlacing algorithms it will also double the frame rate (30->60fps) " #~ "to match the field rate of TVs. Detects and reverts 3-2 pulldown. *" #~ msgstr "" #~ "Sehr hohe CPU-Last, hervorragende Qualität.
Benutzt hochwertige " #~ "Deinterlacing-Algorithmen und verdoppelt die Bildrate (30->60 Bilder/" #~ "Sekunde) um die Frequenz von TV Geräten zu treffen. Erkennt 3:2 Raten und " #~ "macht diese rückgängig. *" #~ msgid "" #~ "Very very high cpu usage, great quality with (experimental) " #~ "improvements.
Enables judder correction (play films at their " #~ "original 24 fps speed) and vertical color smoothing (fixes small color " #~ "stripes seen in some dvds). *" #~ msgstr "" #~ "Sehr sehr hohe CPU Last, hervorragende Qualität mit (experimentellen) " #~ "Verbesserungen.
Aktiviert die Korrektur der Abspielgeschwindigkeit " #~ "(spielt Filme mit originalen 24 Bildern/Sekunde) und vertikale " #~ "Farbglättung (behebt kleine Farbstreifen, die bei einigen DVDs " #~ "auftreten). *" #~ msgid "User defined" #~ msgstr "Benutzerdefiniert" #~ msgid "Configure tvtime Deinterlace Plugin..." #~ msgstr "tvtime Deinterlace-Modul konfigurieren ..." #~ msgid "" #~ "* May require a patched 2.4 kernel (like RedHat one) or 2.6 kernel." #~ msgstr "" #~ "* Benötigt möglicherweise einen gepatchten 2.4 Kernel (wie den von " #~ "RedHat) oder Kernel 2.6.x" #~ msgid "Configure tvtime Deinterlace Plugin" #~ msgstr "tvtime Deinterlace-Modul konfigurieren" #~ msgid "Effect Plugins" #~ msgstr "Effektmodule" #~ msgid "Audio Filters" #~ msgstr "Audiofilter" #~ msgid "Enable audio filters" #~ msgstr "Audiofilter aktivieren" #~ msgid "Video Filters" #~ msgstr "Videofilter" #~ msgid "Enable video filters" #~ msgstr "Videofilter aktivieren" #~ msgid "xine Engine Parameters" #~ msgstr "xine-Parameter" #~ msgid "%1 Options" #~ msgstr "%1 Optionen" #~ msgid "Expert Options" #~ msgstr "Experten Optionen" #~ msgid "XinePart" #~ msgstr "Xine-Komponente" #~ msgid "A xine based player part for Kaffeine." #~ msgstr "Ein auf xine basierender Spieler für Kaffeine." #~ msgid "" #~ "SMIL (Synchronized Multimedia Integration Language) support is " #~ "rudimentary!\n" #~ "XinePart can now try to playback contained video sources without any " #~ "layout. Proceed?" #~ msgstr "" #~ "SMIL (Synchronized Multimedia Integration Language) wird nur ansatzweise " #~ "unterstützt.\n" #~ "Die Xine-Komponente kann nun versuchen, die enthaltenen Videoquellen ohne " #~ "Gestaltung wiederzugeben. Fortfahren?" #~ msgid "Save Stream As" #~ msgstr "Datenstrom speichern unter" #~ msgid "Subtitle" #~ msgstr "Untertitel" #~ msgid "%1 of %2" #~ msgstr "%1 von %2" #~ msgid "" #~ "*.png|PNG-File\n" #~ "*.bmp|BMP-File\n" #~ "*.xbm|XBM-File" #~ msgstr "" #~ "*.png|PNG-Datei\n" #~ "*.bmp|BMP-Datei\n" #~ "*.xbm|XBM-Datei" #~ msgid "Save Screenshot As" #~ msgstr "Bildschirmfoto speichern unter" #~ msgid "Broadcasting port:" #~ msgstr "Port der Übertragung:" #~ msgid "Configure Receive Broadcast Stream" #~ msgstr "Netzwerk-Empfang konfigurieren" #~ msgid "Sender address:" #~ msgstr "Senderadresse:" #~ msgid "Port:" #~ msgstr "Port:" #~ msgid "xine Error" #~ msgstr "xine- Fehler" #~ msgid "xine Message" #~ msgstr "xine-Meldung" #~ msgid "Ready" #~ msgstr "Bereit" #~ msgid "Mime" #~ msgstr "Mime" #~ msgid "Save Stream as" #~ msgstr "Datenstrom speichern unter" #~ msgid "Track info" #~ msgstr "Stück-Info" #~ msgid "Copy URL to Clipboard" #~ msgstr "Adresse in die Zwischenablage kopieren" #~ msgid "Play in Kaffeine Externally" #~ msgstr "Außerhalb von Kaffeine abspielen" #~ msgid "&Send Broadcast Stream..." #~ msgstr "Übertragungsstrom &senden ..." #~ msgid "&Receive Broadcast Stream..." #~ msgstr "Übert&ragungsstrom empfangen ..." #~ msgid "&Save Screenshot..." #~ msgstr "Bildschirmfoto &speichern ..." #~ msgid "Save Stream..." #~ msgstr "Datenstrom speichern ..." #~ msgid "" #~ "Saves current stream to harddisc. This feature was disabled for some " #~ "formats (e.g. Real Media) to prevent potential legal problems." #~ msgstr "" #~ "Speichert den aktuellen Datenstrom auf die Festplatte. Diese Funktion " #~ "wurde für einige Formate (z.b. Real Media) deaktiviert um rechtliche " #~ "Probleme zu vermeiden." #~ msgid "&Fast Forward" #~ msgstr "Schneller Vorlau&f" #~ msgid "Slow &Motion" #~ msgstr "&Zeitlupe" #~ msgid "Skip Forward (20s)" #~ msgstr "Vorspulen (20s)" #~ msgid "Skip Backward (20s)" #~ msgstr "Zurückspulen (20s)" #~ msgid "Skip Forward (10m)" #~ msgstr "Vorspulen (10min)" #~ msgid "Skip Backward (10m)" #~ msgstr "Zurückspulen (10min)" #~ msgid "DVD Menu Up" #~ msgstr "DVD-Menü aufwärts" #~ msgid "DVD Menu Down" #~ msgstr "DVD-Menü abwärts" #~ msgid "DVD Menu Select" #~ msgstr "DVD-Menü auswählen" #~ msgid "Audio &Visualization" #~ msgstr "Audio-&Visualisierung" #~ msgid "Volume Down" #~ msgstr "Lautstärke verringern" #~ msgid "Activate this for interlaced streams, some DVD's for example." #~ msgstr "" #~ "Aktiviere diesen Punkt für Interlaced-Datenströme (einige DVD's zum " #~ "Beispiel)." #~ msgid "&Auto" #~ msgstr "&Automatisch" #~ msgid "&4:3" #~ msgstr "&4:3" #~ msgid "A&namorphic" #~ msgstr "A&namorph (16:9)" #~ msgid "&Square" #~ msgstr "Quadrati&sch (1:1)" #~ msgid "Zoom Out Horizontal" #~ msgstr "Horizontal verkleinern" #~ msgid "Zoom Out Vertical" #~ msgstr "Vertikal verkleinern" #~ msgid "Deinterlace &Quality" #~ msgstr "Deinterlace &Qualität" #~ msgid "&Video Settings" #~ msgstr "&Videoeinstellungen" #~ msgid "&Equalizer" #~ msgstr "&Equalizer" #~ msgid "&Menu Toggle" #~ msgstr "&Menü umschalten" #~ msgid "&Title" #~ msgstr "&Titel" #~ msgid "&Root" #~ msgstr "&Hauptmenü" #~ msgid "&Subpicture" #~ msgstr "&Unterbild" #~ msgid "&Part" #~ msgstr "T&eil" #~ msgid "Titles" #~ msgstr "Titel" #~ msgid "Angles" #~ msgstr "Winkel" #~ msgid "Track &Info" #~ msgstr "Stück-&Info" #~ msgid "Effect &Plugins..." #~ msgstr "Effekt&module ..." #~ msgid "&xine Engine Parameters" #~ msgstr "&xine-Parameter" #~ msgid "" #~ "Short click: Toggle Timer Forward/Backward\n" #~ "Long click: Toggle Timer OSD" #~ msgstr "" #~ "Kurzer Klick: Zähler Vorwärts/Rückwärts\n" #~ "Langer Klick: Zähler OSD Ein/Aus" #~ msgid "Looking for CDDB entries..." #~ msgstr "Suche nach CDDB Einträgen ..." #~ msgid "AudioCD Track %1" #~ msgstr "Audio-CD Stück %1" #~ msgid "VCD Track %1" #~ msgstr "VCD Titel %1" #~ msgid "Video Settings" #~ msgstr "Videoeinstellungen" #~ msgid "Hue" #~ msgstr "Farbe" #~ msgid "Contrast" #~ msgstr "Kontrast" #~ msgid "Brightness" #~ msgstr "Helligkeit" #~ msgid "Audio/Video Offset" #~ msgstr "Audio/Video Versatz" #~ msgid "Subtitle Offset" #~ msgstr "Untertitel Versatz" #~ msgid "auto" #~ msgstr "automatisch" #~ msgid "General Warning: \n" #~ msgstr "Allgemeine Warnung: \n" #~ msgid "No Informations available." #~ msgstr "Keine Informationen verfügbar." #~ msgid "Security Warning: \n" #~ msgstr "Sicherheitswarnung: \n" #~ msgid "" #~ "The host you're trying to connect is unknown.\n" #~ "Check the validity of the specified hostname. " #~ msgstr "" #~ "Der Host ist unbekannt.\n" #~ "Bitte den Namen/Adresse prüfen. " #~ msgid "The device name you specified seems invalid. " #~ msgstr "Das angegebene Gerät scheint ungültig zu sein. " #~ msgid "" #~ "The network looks unreachable.\n" #~ "Check your network setup and the server name. " #~ msgstr "" #~ "Das Netzwerk scheint nicht erreichbar zu sein.\n" #~ "Bitte Netzwerk-Einstellungen und den Server-Namen prüfen. " #~ msgid "Audio output unavailable. Device is busy. " #~ msgstr "Audio-Ausgang nicht verfügbar. Gerät ist belegt. " #~ msgid "" #~ "The connection was refused.\n" #~ "Check the host name. " #~ msgstr "" #~ "Verbindung fehlgeschlagen.\n" #~ "Bitte Host-Namen prüfen. " #~ msgid "The specified file or url was not found. Please check it. " #~ msgstr "" #~ "Der angegebene Dateiname oder die Adresse wurde nicht gefunden. Bitte " #~ "prüfen. " #~ msgid "Permission to this source was denied. " #~ msgstr "Zugriff auf die Quelle wurde verweigert. " #~ msgid "" #~ "The source can't be read.\n" #~ "Maybe you don't have enough rights for this, or source doesn't contain " #~ "data (e.g: no disc in drive). " #~ msgstr "" #~ "Die Quelle kann nicht gelesen werden.\n" #~ "Entweder haben Sie nicht genügend Rechte, oder die Quelle enthält keine " #~ "Daten (z.B.: keine CD im Laufwerk) " #~ msgid "A problem occur while loading a library or a decoder: " #~ msgstr "" #~ "Es trat ein Problem beim Laden einer Bibliothek oder eines Dekodierers " #~ "auf: " #~ msgid "The source seems encrypted, and can't be read. " #~ msgstr "" #~ "Die Quelle scheint verschlüsselt zu sein und kann nicht gelesen werden. " #~ msgid "" #~ "\n" #~ "Your DVD is probably crypted. According to your country laws, you can or " #~ "can't use libdvdcss to be able to read this disc. " #~ msgstr "" #~ "\n" #~ "Die DVD ist wahrscheinlich verschlüsselt. Entsprechend den Gesetzen Ihres " #~ "Landes kann libdvdcss installiert werden um sie abzuspielen oder nicht. " #~ msgid "Unknown error: \n" #~ msgstr "Unbekannter Fehler: \n" #~ msgid "Error: Can't init new Video Driver %1 - using %2!" #~ msgstr "" #~ "Fehler: Neuer Videotreiber %1 kann nicht eingerichtet werden -%2 wird " #~ "benutzt!" #~ msgid "Using Video Driver: %1" #~ msgstr "Benutze Videotreiber: %1" #~ msgid "Error: Can't init new Audio Driver %1 - using %2!" #~ msgstr "" #~ "Fehler: Audiotreiber %1 kann nicht eingerichtet werden - %2 wird benutzt!" #~ msgid "Using Audio Driver: %1" #~ msgstr "Benutze Audiotreiber: %1" #~ msgid "Init xine..." #~ msgstr "xine wird eingerichtet ..." #~ msgid "Can't init xine Engine!" #~ msgstr "xine kann nicht eingerichtet werden!" #~ msgid "Audiodriver to use (default: auto)" #~ msgstr "Zu benutzender Audiotreiber (Standard: automatisch)" #~ msgid "Videodriver to use (default: auto)" #~ msgstr "Zu benutzender Videotreiber (Standard: automatisch)" #~ msgid "Use software audio mixer" #~ msgstr "Software-Audiomischgerät benutzen" #~ msgid "Show OSD Messages" #~ msgstr "OSD Meldungen anzeigen" #~ msgid "Size of OSD text" #~ msgstr "Größe des OSD-Textes" #~ msgid "Font for OSD Messages" #~ msgstr "Schriftart für OSD-Meldungen" #~ msgid "Can't init Video Driver '%1' - trying 'auto'..." #~ msgstr "" #~ "Videotreiber ‚%1‘ kann nicht eingerichtet werden - ‚automatisch‘ wird " #~ "versucht ..." #~ msgid "All Video Drivers failed to initialize!" #~ msgstr "Einrichtung aller Videotreiber fehlgeschlagen!" #~ msgid "Can't init Audio Driver '%1' - trying 'auto'..." #~ msgstr "" #~ "Audiotreiber ‚%1‘ kann nicht eingerichtet werden - ‚automatisch‘ wird " #~ "versucht ..." #~ msgid "All Audio Drivers failed to initialize!" #~ msgstr "Einrichtung aller Audiotreiber fehlgeschlagen!" #~ msgid "Can't create a new xine Stream!" #~ msgstr "Neuer xine-Datenstrom kann nicht erzeugt werden!" #~ msgid "DVB: opening..." #~ msgstr "DVB: öffnen ..." #~ msgid "Opening..." #~ msgstr "Öffnen ..." #~ msgid "Audio Codec" #~ msgstr "Audiocodec" #~ msgid "Video Codec" #~ msgstr "Videocodec" #~ msgid "No plugin found to handle this resource" #~ msgstr "Kein Modul gefunden um diese Quelle zu handhaben" #~ msgid "Resource seems to be broken" #~ msgstr "Quelle scheint fehlerhaft zu sein" #~ msgid "Requested resource does not exist" #~ msgstr "Angefragte Quelle existiert nicht" #~ msgid "Resource can not be opened" #~ msgstr "Quelle kann nicht geöffnet werden" #~ msgid "Generic error" #~ msgstr "Allgemeiner Fehler" #~ msgid "Fast Forward %1" #~ msgstr "Schneller Vorlauf %1" #~ msgid "Slow Motion %1" #~ msgstr "Zeitlupe %1" #~ msgid "1:1" #~ msgstr "1:1" #~ msgid "2.11:1" #~ msgstr "2.11:1" #~ msgid "Zoom X" #~ msgstr "Zoom X" #~ msgid "Zoom Y" #~ msgstr "Zoom Y" #~ msgid "msec" #~ msgstr "msek" #~ msgid "Equalizer Settings" #~ msgstr "Equalizer Einstellungen" #~ msgid "Volume gain" #~ msgstr "Tonverstärkung" #~ msgid "Volume Gain for Equalizer - If the sound becomes noisy disable this" #~ msgstr "" #~ "Verstärkung für den Equalizer - Sollte deaktiviert werden falls " #~ "Störgeräusche hörbar sind" #~ msgid "Seeking to %s" #~ msgstr "Suchen nach %s" #~ msgid "GStreamer initializing failed!" #~ msgstr "GStreamer Einrichtung fehlgeschlagen!" #~ msgid "GStreamerPart" #~ msgstr "GStreamerPart" #~ msgid "Mute" #~ msgstr "Stumm" #~ msgid "Comment" #~ msgstr "Kommentar" #~ msgid "&GStreamer Engine Parameters" #~ msgstr "&GStreamer-Parameter" #~ msgid "GStreamer could not be initialized!" #~ msgstr "GStreamer konnte nicht eingerichtet werden!" #~ msgid "" #~ "Missing GStreamer-registry! Did you forget to run gst-register (as " #~ "root) after installation?" #~ msgstr "" #~ "GStreamer-Eintrag nicht gefunden! Haben Sie vergessen gst-register" #~ "(als „root“) nach der Installation auszuführen?" #~ msgid "Can't init Audio Driver '%1' - trying another one..." #~ msgstr "" #~ "Audiotreiber ‚%1‘ kann nicht eingerichtet werden - ein weiterer wird " #~ "versucht ..." #~ msgid "No useable audio-driver found!" #~ msgstr "Kein brauchbarer Audiotreiber gefunden!" #~ msgid "Can't init Video Driver '%1' - trying another one..." #~ msgstr "" #~ "Videotreiber ‚%1‘ kann nicht eingerichtet werden - ein weiterer wird " #~ "versucht ..." #~ msgid "GStreamer Engine Parameters" #~ msgstr "GStreamer-Parameter" #~ msgid "Audio Options" #~ msgstr "Audio Optionen" #~ msgid "Prefered audio driver" #~ msgstr "Bevorzugter Audiotreiber" #~ msgid "Video Options" #~ msgstr "Video Optionen" #~ msgid "Prefered video driver" #~ msgstr "Bevorzugter Videotreiber" #~ msgid "* Restart required!" #~ msgstr "* Neustart erforderlich!" #~ msgid "Media" #~ msgstr "Medien" #~ msgid "Media Options" #~ msgstr "Medien Optionen" #~ msgid "CD, VCD, DVD drive" #~ msgstr "CD, VCD, DVD Laufwerk" #~ msgid "DummyPart" #~ msgstr "DummyPart" kaffeine-1.2.2/po/de/CMakeLists.txt0000644000175000017500000000012711552636277016476 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(de ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/zh_CN/0000755000175000017500000000000011552636277014347 5ustar lxuserlxuserkaffeine-1.2.2/po/zh_CN/kaffeine.po0000644000175000017500000006364711552636277016477 0ustar lxuserlxuser# translation of kaffeine.po to 简体中文 # This file is distributed under the same license as the Kaffeine package. # # KanKer , 2004. # qianzheng , 2004, 2005. # Ni Hui , 2008, 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-07 19:07+0800\n" "Last-Translator: Ni Hui \n" "Language-Team: 简体中文 \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "一款带有数字电视支持的 KDE 媒体播放器。" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Kaffeine 作者" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "维护者" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "播放文件(&1)" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "播放音频 CD(&2)" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "播放视频 CD(&3)" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "播放 DVD(&4)" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "数字电视(&5)" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "配置 Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "启动显示模式:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "普通模式" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "迷你模式" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "全屏模式" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "记住上次的设置" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "短跳转时长:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "长跳转时长:" #: mainwindow.cpp:282 msgid "&File" msgstr "文件(&F)" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "打开 URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "播放音频 CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "播放视频 CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "播放 DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "播放 DVD 文件夹" #: mainwindow.cpp:322 msgid "&Playback" msgstr "播放(&P)" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "播放列表(&L)" #: mainwindow.cpp:329 msgid "&Television" msgstr "电视(&T)" #: mainwindow.cpp:333 msgid "&Settings" msgstr "设置(&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "开始" #: mainwindow.cpp:353 msgid "Playback" msgstr "播放" #: mainwindow.cpp:354 msgid "Playlist" msgstr "播放列表" #: mainwindow.cpp:356 msgid "Television" msgstr "电视" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "以全屏模式启动" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(不建议使用的选项)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "播放电视频道" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "播放上次调谐的电视频道" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "输出 dvb 数据(调试选项)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "要播放的文件或 URL" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "打开 URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "输入 URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "跳转到位置" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "输入位置:" #: mediawidget.cpp:237 msgid "Previous" msgstr "上一首" #: mediawidget.cpp:245 msgid "Play" msgstr "播放" #: mediawidget.cpp:246 msgid "Pause" msgstr "暂停" #: mediawidget.cpp:253 msgid "Stop" msgstr "停止" #: mediawidget.cpp:259 msgid "Next" msgstr "下一首" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "全屏模式" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "迷你模式" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "关闭" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "音频" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "增大音量" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "减小音量" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "静音" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "视频" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "反交错" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "纵横比" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "自动" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "适应窗口" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "自动调整大小" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "关闭" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "原始大小" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "双倍大小" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "音量滑块" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "跳转到位置..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "跳过" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "向后跳过 %1 秒" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "向前跳过 %1 秒" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "定位滑块" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "切换菜单" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "标题" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "章节" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "角度" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "切换已用时间和剩余时间的显示" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "支持的媒体文件" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "全部文件" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "退出全屏模式" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "退出迷你模式" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "已停止" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "静音" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "未静音" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "音量:%1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "反交错开启" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "反交错关闭" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "已暂停" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "播放中" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Ni Hui" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "shuizhuyuanluo@126.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "请安装 Qt SQLite 插件。" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "无法打开 SQLite 数据库。" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Kaffeine 的内部工具。" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "频道" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "编号" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "编辑" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "删除" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "频道将按数字排序以便拖放。\n" "您想要继续吗?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "水平" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "垂直" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "左旋" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "右旋" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "频道" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "名称:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "编号:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "来源:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "频率(MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "符号率(kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "调制:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC 率:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "偏振:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "滚降:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "带宽:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC 率 LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "传输模式:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "安全间隔:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "分级:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "视频 PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "字幕 PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "电视电报 PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "网络 ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "转送流 ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "服务 ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "声道:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "扰频:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "配置电视" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "录制文件夹:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "选择文件夹" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "时间偏移文件夹:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "开头预留(分钟):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "结尾预留(分钟):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "使用 ISO 8859-1 字符集而不是 ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "扫描数据上次更新于 %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "通过互联网更新扫描数据" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "您的位置(仅对 USALS 转轴需要)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "纬度:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "经度:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "常规选项" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "设备 %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "更新扫描数据" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "正在下载扫描数据" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "更新扫描数据失败。" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "扫描数据更新成功。\n" "关闭配置对话框以使更改生效。" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "名称:%1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "左移" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "重置" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "右移" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "设备未连接。" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "有线" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "地面" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "自动扫描" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "以偏移 167 kHz 自动扫描" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "自动扫描澳大利亚" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "自动扫描意大利" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "自动扫描台湾" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "调谐延迟(ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "来源:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "没有来源" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "名称:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "配置:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC 切换" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS 旋钮" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "位置旋钮" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 设置" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB 设置" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "添加卫星" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "卫星" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "位置" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "删除卫星" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "通用 LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band 多点 LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "自定义 LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "通信频率(MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "低波段 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "高波段 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "水平 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "垂直 LOF(MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF(MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "节目导航" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "录制节目" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "搜索:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "开始" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "持续时间" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "标题" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "未找到可用的设备。" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "未找到可用的设备。" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "录制时间表" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "新建" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "名称" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "编辑时间表条目" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "名称:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "频道:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "开始" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "持续时间:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "结束:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "重复:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "从不" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "每天" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "提供者" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "频道" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "清除" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "频道扫描" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "开始扫描" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "信号:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "信噪比:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "调谐:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "过滤器" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "发送广播" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "广播" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "电视" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "提供者:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "添加所过滤的" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "添加所选择的" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "扫描结果" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "当前应答器" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "停止扫描" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "节目导航" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "录制时间表" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "即时录制" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "配置电视..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "搜索:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "频道:%1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine 正在录制节目。\n" "您确实想要关闭应用程序吗?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine 已安排了录制任务。\n" "您确实想要关闭应用程序吗?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "即时录制已启动" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "即时录制已停止" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "标题" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "艺人" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "专辑" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "音轨编号" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "长度" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "临时播放列表" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "重复" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "随机" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "添加字幕" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "重命名" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "未命名播放列表" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "字幕文件" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF 播放列表\n" "*.m3u|M3U 播放列表\n" "*.pls|PLS 播放列表" #~ msgid "Channel Settings" #~ msgstr "频道设置" #~ msgid "Name" #~ msgstr "名称" #~ msgid "Edit" #~ msgstr "编辑" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "删除" #~ msgid "Remove" #~ msgstr "删除" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "开始" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "开始:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "新建" #~ msgid "Duration" #~ msgstr "持续时间" kaffeine-1.2.2/po/zh_CN/CMakeLists.txt0000644000175000017500000000013211552636277017103 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(zh_CN ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ja/0000755000175000017500000000000011552636277013740 5ustar lxuserlxuserkaffeine-1.2.2/po/ja/kaffeine.po0000644000175000017500000006460511552636277016063 0ustar lxuserlxuser# Translation of kaffeine to Japanese. # This file is distributed under the same license as the kaffeine package. # Noriyuki Suzuki , 2003, 2004. # Yukiko Bando , 2005, 2006, 2008. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2008-10-09 21:31+0900\n" "Last-Translator: Yukiko Bando \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 #, fuzzy #| msgid "Kaffeine Player" msgid "Kaffeine" msgstr "Kaffeine Player" #: main.cpp:67 #, fuzzy #| msgid "A media player for KDE with digital tv support" msgid "A media player for KDE with digital TV support." msgstr "デジタル TV 対応の KDE のメディアプレーヤー" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007, Kaffeine 作者" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 #, fuzzy #| msgid "Play File" msgid "&1 Play File" msgstr "ファイルを再生" #: mainwindow.cpp:91 #, fuzzy #| msgid "Play Audio CD" msgid "&2 Play Audio CD" msgstr "オーディオ CD を再生" #: mainwindow.cpp:96 #, fuzzy #| msgid "Play Video CD" msgid "&3 Play Video CD" msgstr "ビデオ CD を再生" #: mainwindow.cpp:101 #, fuzzy #| msgid "Play DVD" msgid "&4 Play DVD" msgstr "DVD を再生" #: mainwindow.cpp:107 #, fuzzy #| msgid "Digital TV" msgid "&5 Digital TV" msgstr "デジタル TV" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "チャンネルを設定" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "フルスクリーンモード" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "設定:" #: mainwindow.cpp:282 msgid "&File" msgstr "ファイル(&F)" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL を開く" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "オーディオ CD を再生" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "ビデオ CD を再生" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD を再生" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD を再生" #: mainwindow.cpp:322 #, fuzzy #| msgid "&Player" msgid "&Playback" msgstr "プレーヤー(&P)" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "再生" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "設定(&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "開始" #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "再生" #: mainwindow.cpp:354 msgid "Playlist" msgstr "プレイリスト" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Full Screen Mode" msgid "Start in full screen mode" msgstr "フルスクリーンモード" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "チャンネルを削除" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "チャンネルを削除" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "URL を開く" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "URL を入力:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "位置" #: mediawidget.cpp:161 #, fuzzy #| msgid "Enter a URL:" msgid "Enter a position:" msgstr "URL を入力:" #: mediawidget.cpp:237 msgid "Previous" msgstr "前へ" #: mediawidget.cpp:245 msgid "Play" msgstr "再生" #: mediawidget.cpp:246 msgid "Pause" msgstr "一時停止" #: mediawidget.cpp:253 msgid "Stop" msgstr "停止" #: mediawidget.cpp:259 msgid "Next" msgstr "次へ" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "フルスクリーンモード" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "ラジオ" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "ビデオ CD を再生" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Radio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "ラジオ" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Radio" msgid "Automatic Resize" msgstr "ラジオ" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy #| msgid "Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "位置" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select source:" msgid "Seek Slider" msgstr "ソースを選択:" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "ファイル(&F)" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "フルスクリーンモード" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "停止" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format #| msgid "Name: %1" msgctxt "osd" msgid "Volume: %1%" msgstr "名前: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "一時停止" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "再生" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Yukiko Bando" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "ybando@k6.dion.ne.jp" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "チャンネル" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "番号" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove satellite" msgctxt "@action" msgid "Remove" msgstr "衛星を削除" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "" #: dvb/dvbchanneldialog.cpp:403 #, fuzzy #| msgid "Terrestrial" msgid "Vertical" msgstr "地上波" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "チャンネル" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "名前:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number" msgctxt "@label tv channel" msgid "Number:" msgstr "番号" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "ソース:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy #| msgid "Configuration:" msgid "Modulation:" msgstr "設定:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "位置" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "帯域幅:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "検索:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "ビデオ PID:" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "ビデオ CD を再生" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "テレテキスト PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "トランスポートストリーム ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "サービス ID:" #: dvb/dvbchanneldialog.cpp:676 #, fuzzy #| msgid "Edit channel" msgid "Audio channel:" msgstr "チャンネルを編集" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Channels" msgctxt "@title:window" msgid "Configure Television" msgstr "チャンネルを設定" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 #, fuzzy #| msgid "Select source:" msgid "Select Folder" msgstr "ソースを選択:" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "デバイス %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "名前: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "リセット" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 #, fuzzy #| msgid "device not connected" msgid "Device not connected." msgstr "デバイスが接続されていません" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "ケーブル" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "地上波" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Stop scan" msgid "Autoscan" msgstr "スキャンを停止" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "チューナーのタイムアウト (ミリ秒):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "ソース:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "No source" msgid "No Source" msgstr "ソースなし" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "名前:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "設定:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Position" msgid "Positions Rotor" msgstr "位置" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "LNB %1 settings" msgid "LNB %1 Settings" msgstr "LNB %1 の設定" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "LNB settings" msgid "LNB Settings" msgstr "LNB の設定" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy #| msgid "Add satellite" msgid "Add Satellite" msgstr "衛星を追加" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "衛星" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "位置" #: dvb/dvbconfigdialog.cpp:872 #, fuzzy #| msgid "Remove satellite" msgid "Remove Satellite" msgstr "衛星を削除" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "カスタム LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "検索:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "開始" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "時間" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "タイトル" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgid "No suitable device found." msgctxt "@info" msgid "No device found." msgstr "適切なデバイスドライバが見つかりません。" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 #, fuzzy #| msgid "No suitable device found." msgctxt "message box" msgid "No available device found." msgstr "適切なデバイスドライバが見つかりません。" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "新規" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "名前" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "名前:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "チャンネル:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "開始" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Configuration:" msgctxt "@label tv show" msgid "Duration:" msgstr "設定:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Reset" msgctxt "@label recording" msgid "Repeat:" msgstr "リセット" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "プロバイダ" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "チャンネル" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 #, fuzzy #| msgid "Cable" msgctxt "remove all items from a list" msgid "Clear" msgstr "ケーブル" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channels" msgid "Channel Scan" msgstr "チャンネル" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy #| msgid "Start scan" msgid "Start Scan" msgstr "スキャンを開始" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "シグナル:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "フィルタ" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "FTA (Free To Air)" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "ラジオ" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "テレビ" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "プロバイダ:" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Add filtered" msgid "Add Filtered" msgstr "フィルタされたものを追加" #: dvb/dvbscandialog.cpp:334 #, fuzzy #| msgid "Add selected" msgid "Add Selected" msgstr "選択したものを追加" #: dvb/dvbscandialog.cpp:340 #, fuzzy #| msgid "Scan results" msgid "Scan Results" msgstr "スキャン結果" #: dvb/dvbscandialog.cpp:356 #, fuzzy #| msgid "Current transponder" msgid "Current Transponder" msgstr "現在のトランスポンダ" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop scan" msgid "Stop Scan" msgstr "スキャンを停止" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "即時レコーディング" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Channels" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "チャンネルを設定" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "検索:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channels" msgctxt "osd" msgid "Channel: %1_" msgstr "チャンネル" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "ファイル(&F)" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "番号" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "再生" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "ラジオ" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add satellite" msgid "Add Subtitle" msgstr "衛星を追加" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove satellite" msgctxt "rename an entry in a list" msgid "Rename" msgstr "衛星を削除" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "再生" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "ビデオ CD を再生" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #, fuzzy #~| msgid "Channels" #~ msgid "Channel Settings" #~ msgstr "チャンネル" #~ msgid "Name" #~ msgstr "名前" #, fuzzy #~| msgid "Remove satellite" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "衛星を削除" #, fuzzy #~| msgid "Remove satellite" #~ msgid "Remove" #~ msgstr "衛星を削除" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "開始" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "開始:" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "新規" #~ msgid "Duration" #~ msgstr "時間" kaffeine-1.2.2/po/ja/CMakeLists.txt0000644000175000017500000000012711552636277016500 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ja ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ca/0000755000175000017500000000000011552636277013731 5ustar lxuserlxuserkaffeine-1.2.2/po/ca/kaffeine.po0000644000175000017500000007004611552636277016050 0ustar lxuserlxuser# Translation of kaffeine.po to Catalan # Copyright (C) 2009 This_file_is_part_of_KDE. # This file is distributed under the license LGPL version 2 or later. # # Manuel Tortosa , 2009. # Josep Ma. Ferrer , 2010. # Joan Maspons , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-03 01:26+0100\n" "Last-Translator: Joan Maspons \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Language: ca_ES\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Un reproductor de suports pel KDE amb implementació de TV digital." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Els autors del Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Mantenidor" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reprodueix fitxer" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reprodueix CD d'àudio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reprodueix CD de vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reprodueix DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configura Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Mode de visualització inicial:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Mode normal" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Mode mínim" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mode de pantalla completa" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Recorda l'últim arranjament" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Mida del salt curt:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Mida del salt llarg:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fitxer" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Obre l'URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reprodueix CD d'àudio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reprodueix CD de vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reprodueix DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reprodueix la carpeta del DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Re&producció" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Llista de reproducció" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisió" #: mainwindow.cpp:333 msgid "&Settings" msgstr "A&rranjament" #: mainwindow.cpp:352 msgid "Start" msgstr "Inicia" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reprodueix" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Llista de reproducció" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisió" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Inicia en mode de pantalla completa" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(Opció obsoleta)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Reprodueix el canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Reprodueix l'últim canal de TV sintonitzat" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Bolca la informació del DVD (opció del depurador)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fitxers o URL a reproduir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Obre l'URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Introduïu un URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Salta a la posició" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Introduïu una posició:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reprodueix" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Atura" #: mediawidget.cpp:259 msgid "Next" msgstr "Següent" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mode de pantalla completa" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Mode mínim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "desactivats" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Àudio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Puja el volum" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Baixa el volum" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Silencia el volum" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vídeo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Desentrellaça" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Relació d'aspecte" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automàtica" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajusta a la finestra" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Reamidament automàtic" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Desactivat" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Mida original" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Mida doble" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Botó lliscador de volum" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Salta a la posició..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Salta" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Salta %1s enrere" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Salta %1s endavant" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Botó lliscador de cerca" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Commuta el menú" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Títol" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítol" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Angle" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Commuta el visor del temps entre passat i restant" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Fitxers de suports acceptats" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tots els fitxers" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Surt del mode de pantalla completa" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Surt del mode mínim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Aturat" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silenci" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Volum activat" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volum: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Desentrellaçat activat" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Desentrellaçat desactivat" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pausat" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "En reproducció" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Manuel Tortosa Moreno,Joan Maspons Ventura" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "manutortosa@gmail.com,joanmaspons@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Si us plau, instal·leu el connector Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "No es pot obrir la base de dades SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilitat interna pel Kaffeine" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Edita" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Elimina" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Els canals s'ordenaran per número per permetre arrossegar-los i deixar-los " "anar.\n" "Voleu continuar?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horitzontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Cursor esquerre" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Cursor dret" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nom:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Número:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Font:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Freqüència (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Taxa de símbols (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulació:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Ràtio FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarització:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Amplada de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Ràtio FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Mode de transmissió:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Interval de guàrdia:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Jerarquia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID de PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID de vídeo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID de subtítols:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID de teletext:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID de xarxa:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID de flux de transport:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID de servei:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal d'àudio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Mesclat:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configura la televisió" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Carpeta d'enregistrament:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Selecció de carpeta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Carpeta de desplaçament temporal:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Comença marge (minuts):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Acaba marge (minuts):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usa el joc de caràcters ISO 8859-1 en comptes de l'ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Dades d'exploració actualitzats per darrera vegada el %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Actualització de dades d'exploració mitjançant Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "La vostra posició (només és necessari pel Rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitud:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitud:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opcions generals" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositiu %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Actualització de dades d'exploració mitjançant Internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "S'estan baixant les dades d'exploració" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Ha fallat en actualitzar les dades d'exploració." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Les dades d'exploració s'han actualitzat amb èxit. Els canvis\n" "seran efectius una vegada que tanqueu el diàleg de configuració." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nom: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mou a l'esquerra" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Inicialitza" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mou a la dreta" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositiu no connectat." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cable" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoscan" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoscan amb compensacions de 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoscan Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoscan Itàlia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoscan Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Temps d'espera del sintonitzador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Font:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Cap font" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nom:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuració:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Interruptor DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de posicions" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Arranjament de LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Arranjament de LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Afegeix satèl·lit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satèl·lit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posició" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Elimina satèl·lit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB de banda C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB multipunt de banda C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalitzat" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Freqüència d'intercanvi (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Banda baixa de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Banda alta de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horitzontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guia de programes" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Planificació d'enregistrament" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Cerca:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Inici" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Durada" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Títol" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "No hi ha cap dispositiu disponible." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "No hi ha cap dispositiu disponible." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Planificació d'enregistrament" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nou" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nom" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Edita l'entrada planificada" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nom:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Inicia" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Durada:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Final:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repeteix:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Mai" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diàriament" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Proveïdor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canals" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Neteja" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Exploració de canals" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Inicia l'exploració" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Senyal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonitzat:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtre" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "A l'aire lliure" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Proveïdor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Afegeix filtrat" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Afegeix seleccionat" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultats de l'exploració" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transponedor actual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Atura l'exploració" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guia de programes" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Planificació d'enregistrament" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Enregistrament instantani" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configura la televisió..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Cerca:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Actualment el Kaffeine està gravant programes.\n" "Segur que voleu tancar l'aplicació?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "El Kaffeine té gravacions programades.\n" "Segur que voleu tancar l'aplicació?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "S'ha iniciat l'enregistrament instantani" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "S'ha aturat l'enregistrament instantani" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Títol" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Àlbum" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Número de peça" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Durada" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Llista de reproducció temporal" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repeteix" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleatòria" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Afegeix subtítols" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Reanomena" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Llista de reproducció sense nom" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Fitxers de subtítols" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Llista de reproducció XSPF\n" "*.m3u|Llista de reproducció M3U\n" "*.pls|Llista de reproducció PLS" #~ msgid "Channel Settings" #~ msgstr "Paràmetres del canal" #~ msgid "Name" #~ msgstr "Nom" #~ msgid "Edit" #~ msgstr "Edita" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Elimina" #~ msgid "Remove" #~ msgstr "Elimina" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Inici" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Inici:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nou" #~ msgid "Duration" #~ msgstr "Durada" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Planificació de programes" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nom" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Refresca" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "El programa s'ha planificat correctament." #~ msgid "Cannot open %1." #~ msgstr "No s'ha pogut obrir %1." #~ msgid "Unknown playlist format." #~ msgstr "Format de llista de reproducció desconegut." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Odre aleatori" kaffeine-1.2.2/po/ca/CMakeLists.txt0000644000175000017500000000012711552636277016471 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ca ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ku/0000755000175000017500000000000011552636277013765 5ustar lxuserlxuserkaffeine-1.2.2/po/ku/kaffeine.po0000644000175000017500000007100211552636277016075 0ustar lxuserlxuser# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2008-12-20 16:02+0200\n" "Last-Translator: Omer Ensari \n" "Language-Team: Kurdish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Kurdish\n" "X-Poedit-SourceCharset: utf8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 #, fuzzy #| msgid "Kaffeine Player" msgid "Kaffeine" msgstr "Lêdar Kaffeine " #: main.cpp:67 #, fuzzy #| msgid "A media player for KDE with digital tv support" msgid "A media player for KDE with digital TV support." msgstr "Medya lêdarek ji bo KDE bi piştgirî ya dîjîtal tv re" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007 The Kaffeine Authors" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 #, fuzzy #| msgid "Play File" msgid "&1 Play File" msgstr "Pelê Lê Bide" #: mainwindow.cpp:91 #, fuzzy #| msgid "Play Audio CD" msgid "&2 Play Audio CD" msgstr "CD ya Muzîkê Lê Bide" #: mainwindow.cpp:96 #, fuzzy #| msgid "Play Video CD" msgid "&3 Play Video CD" msgstr "CD ya Vîdeoyê Lê Bide" #: mainwindow.cpp:101 #, fuzzy #| msgid "Play DVD" msgid "&4 Play DVD" msgstr "DVD Lê bide" #: mainwindow.cpp:107 #, fuzzy #| msgid "Digital TV" msgid "&5 Digital TV" msgstr "TV ya Dîjîtal" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kanalan veava bike" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Moda Dîmender Tijî" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Mîhengkirin:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Pel" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL Veke" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "CD ya Muzîkê Lê Bide" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "CD ya Vîdeoyê Lê Bide" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD Lê bide" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD Lê bide" #: mainwindow.cpp:322 #, fuzzy #| msgid "Play" msgid "&Playback" msgstr "Lê Bide" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "Lê Bide" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Mîheng" #: mainwindow.cpp:352 msgid "Start" msgstr "Destpê bide " #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "Lê Bide" #: mainwindow.cpp:354 #, fuzzy #| msgid "Play" msgid "Playlist" msgstr "Lê Bide" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Full Screen Mode" msgid "Start in full screen mode" msgstr "Moda Dîmender Tijî" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete all" msgctxt "command line option" msgid "(deprecated option)" msgstr "Hemûyan Jê Bibe" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "Kanalê jê bibe" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Kanalê jê bibe" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "URL Veke" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "URL'ekê binivîse:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Derawa" #: mediawidget.cpp:161 #, fuzzy #| msgid "Enter a URL:" msgid "Enter a position:" msgstr "URL'ekê binivîse:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Paş" #: mediawidget.cpp:245 msgid "Play" msgstr "Lê Bide" #: mediawidget.cpp:246 msgid "Pause" msgstr "Bide Sekinandin" #: mediawidget.cpp:253 msgid "Stop" msgstr "Rawestîne" #: mediawidget.cpp:259 msgid "Next" msgstr "Pêş" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Moda Dîmender Tijî" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Radyo" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "CD ya Vîdeoyê Lê Bide" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Radio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Radyo" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Radio" msgid "Automatic Resize" msgstr "Radyo" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy #| msgid "Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Derawa" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select source:" msgid "Seek Slider" msgstr "Çavkanî hilbijêre:" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "&Pel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Moda Dîmender Tijî" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Rawestîne" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format #| msgid "Name: %1" msgctxt "osd" msgid "Volume: %1%" msgstr "Nav: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "Bide Sekinandin" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "Lê Bide" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Omer Ensari" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "oensari@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channels" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Hejmar" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove satellite" msgctxt "@action" msgid "Remove" msgstr "Dûvelangê rake" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 #, fuzzy #| msgid "Horizontal LOF (MHz)" msgid "Horizontal" msgstr "LOF a berwarî (MHz)" #: dvb/dvbchanneldialog.cpp:403 #, fuzzy #| msgid "Terrestrial" msgid "Vertical" msgstr "Herêmî" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanalê biguherîne" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nav:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number" msgctxt "@label tv channel" msgid "Number:" msgstr "Hejmar" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Çavkanî:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 #, fuzzy #| msgid "Switch frequency (MHz)" msgid "Frequency (MHz):" msgstr "Derbasbûna frekansê (MHz)" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy #| msgid "Configuration:" msgid "Modulation:" msgstr "Mîhengkirin:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "Derawa" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "Lêgere:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 #, fuzzy #| msgid "Play Video CD" msgid "Video PID:" msgstr "CD ya Vîdeoyê Lê Bide" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "CD ya Vîdeoyê Lê Bide" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 #, fuzzy #| msgid "Device %1" msgid "Service ID:" msgstr "Cîhaza %1" #: dvb/dvbchanneldialog.cpp:676 #, fuzzy #| msgid "Edit channel" msgid "Audio channel:" msgstr "Kanalê biguherîne" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Channels" msgctxt "@title:window" msgid "Configure Television" msgstr "Kanal Mîhang Bike" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 #, fuzzy #| msgid "Select source:" msgid "Select Folder" msgstr "Çavkanî hilbijêre:" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, fuzzy, kde-format #| msgid "Scan file last updated
on %1" msgid "Scan data last updated on %1" msgstr "Pela lê nihêrîn ê dawî yê di
%1 de hate rojane kirin" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Cîhaza %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 #, fuzzy #| msgid "Scan file last updated
on %1" msgid "Scan data update failed." msgstr "Pela lê nihêrîn ê dawî yê di
%1 de hate rojane kirin" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nav: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 #, fuzzy #| msgid "device not connected" msgid "Device not connected." msgstr "cîhaz nehat girêdan" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kablo" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Herêmî" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Stop scan" msgid "Autoscan" msgstr "Lê nihêrîn ê rawestîne " #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Dem bihurîna eyarker (mç):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Çavkanî:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "No source" msgid "No Source" msgstr "Çavkanî tune ye" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nav:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Mîhengkirin:" #: dvb/dvbconfigdialog.cpp:782 #, fuzzy #| msgid "DiSEqC switch" msgid "DiSEqC Switch" msgstr "Derbasbûna DiSEqC" #: dvb/dvbconfigdialog.cpp:783 #, fuzzy #| msgid "USALS rotor" msgid "USALS Rotor" msgstr "Rotora USALS" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Positions rotor" msgid "Positions Rotor" msgstr "Rotor ê bicih bike" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "LNB %1 settings" msgid "LNB %1 Settings" msgstr "Mîhengên LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "LNB settings" msgid "LNB Settings" msgstr "Mîhengên LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy #| msgid "Add satellite" msgid "Add Satellite" msgstr "Dûvelang lê zêde bike" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Dûvelang" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Derawa" #: dvb/dvbconfigdialog.cpp:872 #, fuzzy #| msgid "Remove satellite" msgid "Remove Satellite" msgstr "Dûvelangê rake" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB Gerdûnî " #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 #, fuzzy #| msgid "C-band multipoint LNB" msgid "C-band Multipoint LNB" msgstr "C-band LNB a pir-xal " #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB a bijare " #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Derbasbûna frekansê (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Banda hêdî ya LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Banda lêz ya LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF a berwarî (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF a tîkane (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Lêgere:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Destpê bide " #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Configuration:" msgctxt "@title:column tv show" msgid "Duration" msgstr "Mîhengkirin:" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "&File" msgctxt "@title:column tv show" msgid "Title" msgstr "&Pel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgid "No suitable device found." msgctxt "@info" msgid "No device found." msgstr "Tu cihazên lêhatî nedît." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 #, fuzzy #| msgid "No suitable device found." msgctxt "message box" msgid "No available device found." msgstr "Tu cihazên lêhatî nedît." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nû" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nav" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nav:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channels" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Destpê bide " #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Configuration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Mîhengkirin:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "Tuned:" msgctxt "@label tv show" msgid "End:" msgstr "Eyarkirî:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Peydaker" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanal" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 #, fuzzy #| msgid "Cable" msgctxt "remove all items from a list" msgid "Clear" msgstr "Kablo" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channels" msgid "Channel Scan" msgstr "Kanal" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy #| msgid "Start scan" msgid "Start Scan" msgstr "Lê nihêrîn bide destpê kirin" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sinyal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Eyarkirî:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Parzûn" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Azade ku bifire" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radyo" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Peydaker:" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Add filtered" msgid "Add Filtered" msgstr "Yên hatine parzûn kirin lê zêde bike" #: dvb/dvbscandialog.cpp:334 #, fuzzy #| msgid "Add selected" msgid "Add Selected" msgstr "Yê hilbijartî lê zêde bike" #: dvb/dvbscandialog.cpp:340 #, fuzzy #| msgid "Scan results" msgid "Scan Results" msgstr "Encamên Lê nihêrîn ê" #: dvb/dvbscandialog.cpp:356 #, fuzzy #| msgid "Current transponder" msgid "Current Transponder" msgstr "Bersîvdar(sînyalên radyo re) ê heyî" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop scan" msgid "Stop Scan" msgstr "Lê nihêrîn ê rawestîne " #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Channels" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Kanal Mîhang Bike" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Lêgere:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channels" msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "&Pel" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Hejmar" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Lê Bide" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Radyo" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add satellite" msgid "Add Subtitle" msgstr "Dûvelang lê zêde bike" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove satellite" msgctxt "rename an entry in a list" msgid "Rename" msgstr "Dûvelangê rake" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Lê Bide" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "CD ya Vîdeoyê Lê Bide" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #, fuzzy #~| msgid "Channels" #~ msgid "Channel Settings" #~ msgstr "Kanal" #~ msgid "Name" #~ msgstr "Nav" #, fuzzy #~| msgid "Remove satellite" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Dûvelangê rake" #, fuzzy #~| msgid "Remove satellite" #~ msgid "Remove" #~ msgstr "Dûvelangê rake" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nû" #, fuzzy #~| msgid "Channels" #~ msgid "Channel" #~ msgstr "Kanal" #, fuzzy #~| msgid "Configuration:" #~ msgid "Duration" #~ msgstr "Mîhengkirin:" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nav" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Pela lê nihêrîn ê dawî yê di
%1 de hate rojane kirin" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "Pela lê nihêrîn ê dawî yê di
%1 de hate rojane kirin" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Lêdar Kaffeine]
kafeîn ji bo sermasa " #~ "te!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Derawa" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Nû" #~ msgid "Start scan" #~ msgstr "Lê nihêrîn bide destpê kirin" #~ msgid "No source" #~ msgstr "Çavkanî tune ye" #~ msgid "&View" #~ msgstr "&Bibîne" #~ msgid "&Player" #~ msgstr "&Lêdar" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "Kanalê jê bibe" #~ msgid "Open file" #~ msgstr "Pel veke" #~ msgid "Use right click to edit/delete" #~ msgstr "Rast tikandinê bi kar bînin ku biguherînin/jê bibin" #~ msgid "Channel search" #~ msgstr "Lêgerîna kanalan" #~ msgid "Change icon" #~ msgstr "Sembolê Biguherîne" #~ msgid "DVB Settings" #~ msgstr "Mîhengên DVB" #~ msgid "Configure DVB" #~ msgstr "DVB Mîheng Bike" #~ msgid "Player" #~ msgstr "Lêdar" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Kontrolên Mak" #~ msgid "Position Slider" #~ msgstr "Cih Guhêrker" #~ msgid "Tab Manager" #~ msgstr "Rêveberê Hilpekînê " kaffeine-1.2.2/po/ku/CMakeLists.txt0000644000175000017500000000012711552636277016525 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ku ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ar/0000755000175000017500000000000011552636277013750 5ustar lxuserlxuserkaffeine-1.2.2/po/ar/kaffeine.po0000644000175000017500000007227011552636277016070 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Zayed Al-Saidi , 2010. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-07-31 13:25+0400\n" "Last-Translator: Zayed Al-Saidi \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "كافيين" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "مشغل وسائط لكدي مع دعم التلفاز الرقمي." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 مؤلفو كافيين" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "مسئول الصيانة" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 شغّل ملف" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 شغّل القرص الصوتي" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 شغّل فيديو سي دي" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 شغّل فيديو ديفيدي" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 تلفاز رقمي" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "اضبط كافيين" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "الوضع الأدنى" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "الوضع الأدنى" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "وضع ملء الشاشة" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "مدة القفزة القصيرة:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "مدّة القفزة الطويلة:" #: mainwindow.cpp:282 msgid "&File" msgstr "&ملف" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "افتح عنوان" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "شغّل قرص صوتي" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "شغّل فيديو سي دي" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "شغّل ديفيدي" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "شغّل ديفيدي" #: mainwindow.cpp:322 msgid "&Playback" msgstr "الت&شغل" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&قائمة التشغيل" #: mainwindow.cpp:329 msgid "&Television" msgstr "ال&تلفاز" #: mainwindow.cpp:333 msgid "&Settings" msgstr "إ&عدادات" #: mainwindow.cpp:352 msgid "Start" msgstr "ابدأ" #: mainwindow.cpp:353 msgid "Playback" msgstr "التشغيل" #: mainwindow.cpp:354 msgid "Playlist" msgstr "قائمة التشغيل" #: mainwindow.cpp:356 msgid "Television" msgstr "التلفاز" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "ابدأ في نمط ملء الشاشة" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(خيار مهمل)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "شغّل قناة تلفاز" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "شغّل آخر قناة تلفاز مضبوطة" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "أفرغ بيانات دي في دي (خيار التنقيح)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "تشغيل ملفات أو عناوين" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "افتح عنوان" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "أدخل عنواناً:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "اقفز إلى موضع" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "أدخل موضع:" #: mediawidget.cpp:237 msgid "Previous" msgstr "السابق" #: mediawidget.cpp:245 msgid "Play" msgstr "شغّل" #: mediawidget.cpp:246 msgid "Pause" msgstr "قف مؤقتاً" #: mediawidget.cpp:253 msgid "Stop" msgstr "توقّف" #: mediawidget.cpp:259 msgid "Next" msgstr "التالي" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "وضع ملء الشاشة" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "الوضع الأدنى" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "إيقاف" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "الصوت" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "زد مستوى الصوت" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "اخفض مستوى الصوت" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "اكتم الصوت" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "فيديو" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "تشابك" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "نسبة الإرتفاع" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "آلي" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "مناسب للنافذه " #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "إعادة التحجيم بشكل آلي" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "متوقف" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "الحجم الأصلي" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "ضعف الحجم الأصلي" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "مزلاق مستوى الصوت" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "اقفز إلى موضع" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "تخطّى" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "تخطي %1ث إلى الوراء" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "تخطي %1ث إلى الأمام" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "مزلاق المشاهدة" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "قائمة التبديل" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "العنوان" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "الفصل" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "الزاوية" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "التبديل بين عرض الوقت المنقضي والوقت المتبقي" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "ملفات الوسائط المدعومة" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "جميع الملفات" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "اخرج من وضع ملء الشاشة" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "اخرج من وضع الحد الأدنى" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "موقوف" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "كتم الصوت" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "ألغي الكتم" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "الصوت: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "إلغاء التشابك يعمل" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "إلغاء التشابك موقوف" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "متوقف مؤقتا" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "المشغلة حاليا" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "زايد السعيدي, باسم الناصري " #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "zayed.alsaidi@gmail.com, basem@linuxac.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "من فضلك قم بتنصيب إضافة Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "غير قادر على فتح قاعدة بيانات SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "أداة داخلية للكافيين." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "القناة" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "الرقم" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "حرّر" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "أزل" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "أفقي" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "عمودي" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "تدوير لليسار" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "تدوير لليمين" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "القناة" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "الاسم:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "الرقم:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "المصدر:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "تردد (ميجاهرتز):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "معدل الرمز (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "التحوير:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "معدل FEC :" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "الاستقطاب:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "عرض النطاق:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC rate LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "وضع النقل:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "فاصل الحارس:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "التسلسل الهرمي:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "رقم تعريف العملية الخاص بـ PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "رقم تعريف العملية الخاص بالفديو:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "رقم تعريف العملية الخاص بالترجمة:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "رقم تعريف العملية الخاص بـ Teletext:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "رقم هوية الشبكة:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "رقم هوية سيل النقل:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "رقم هوية الخدمة:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "صوت القناة:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "التشفير:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "اضبط التلفاز" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "مجلد التسجيل:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "اختر مجلد" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "مجلد نقل الوقت:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "هامش البداية (دقائق):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "هامش النهاية (دقائق):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "استخدم الترميز ISO 8859-1 عوضاً عن الترميز ISO 6937 :" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "آخر تحديث لبيانات المسح تم في %1 " #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "تحديث بيانات المسح من خلال الإنترنت" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "موضعك (يُجتاج فقط من أجل دوار USALS )" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "خط العرض:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "خط الطول:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "خيارات عامة" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "جهاز %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "تحديث بيانات المسح من خلال الإنترنت" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "يتم تنزيل بيانات المسح" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "عملية تحديث بيانات المسح فشلت." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "تحديث بيانات المسح تم بنجاح. والتغيرات سيسري \n" " مفعولها بعد إغلاقك قائمة الإعداد." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "الاسم: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "حرك لليسار" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "إعادة تعيين" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "حرك لليمين" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "الجهاز غير متصل." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "كايبل" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "أرضي" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "المسح آلي" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "المسح آلي بإزاحة قدرها 167 كيلو هرتز" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "المسح آلي استراليا" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "المسح آلي إيطاليا" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "المسح آلي تايوان" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "مهلة الضبط (م.ث):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "المصدر:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "لا يوجد مصدر" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "الاسم:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "الضبط:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC تبديل" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS دوار" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "تدوير المواضع" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "إعدادات LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "إعدادات LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "أضف قمر" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "القمر" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "الموضع" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "أزل القمر" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universal LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB مخصص" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "تغيير التردد (ميجا هرتز)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Low band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "High band LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertical LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "مرشد البرنامج" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "جدولة التسجيل" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "بحث:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "ابدأ" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "المدة" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "العنوان" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "لا يوجد جهاز ." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "لا يوجد جهاز ." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "جدولة التسجيل" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "جديد" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "الاسم" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "حرّر مدخلة الجدولة" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "الاسم:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "القناة:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "ابدأ" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "المدة:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "النهاية:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "التكرار:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "لا يوجد" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "يومي" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "المزود" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "نسبة الضجيج إلى الإشارة (SNR)" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "القنوات" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "امح" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "مسح القناة" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "ابدأ المسح" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "إشارة:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "نسبة الضجيج إلى الإشارة (SNR):" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "موالف الضبط:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "المُرشِّح" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "حرّ للبث" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "راديو" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "تلفاز" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "المزود:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "أضف مُرشَّح" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "أضف المُختار" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "نتائج المسح" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "الباقة الحالية" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "توقف عن المسح" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "مرشد البرنامج" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "عرض على الشاشة" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "جدولة التسجيل" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "تسجيل آني" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "اضبط التلفاز" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "بحث:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "القناة: %1_ " #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "التسجيل الآني ابتدأ" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "التسجيل الآني تَوقف" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "العنوان" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "الفنّان" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "ألبوم" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "تتبع الرقم" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "الطول" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "قائمة تشغيل مؤقته" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "التكرار" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "عشوائي" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "أضف ترجمة" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "أعد التسمية" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "قائمة تشغيل غير مسماة" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "ملفات الترجمة" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF قائمة تشغيل\n" "*.m3u|M3U قائمة تشغيل\n" "*.pls|PLS قائمة تشغيل" #~ msgid "Channel Settings" #~ msgstr "إعدادات القناة" #~ msgid "Name" #~ msgstr "الاسم" #~ msgid "Edit" #~ msgstr "حرّر" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "أزل" #~ msgid "Remove" #~ msgstr "أزل" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "البداية" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "البداية:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "جديد" #~ msgid "Duration" #~ msgstr "المدة" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "برنامج الجدولة" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "الاسم" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "تحديث" kaffeine-1.2.2/po/ar/CMakeLists.txt0000644000175000017500000000012711552636277016510 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ar ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/km/0000755000175000017500000000000011552636277013755 5ustar lxuserlxuserkaffeine-1.2.2/po/km/kaffeine.po0000644000175000017500000010653711552636277016101 0ustar lxuserlxuser# translation of kaffeine.po to Khmer # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Khoem Sokhem , 2008, 2009, 2010. # Seng Sutha, 2009. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-06-09 09:12+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: KBabel 1.11.4\n" "X-Language: km_KH\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "កម្មវិធី​ចាក់​មេឌៀ​សម្រាប់ KDE ដែល​មានការ​គាំទ្រ​ទូរទស្សន៍​ឌីជីថល ។" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "រក្សាសិទ្ធិ​ឆ្នាំ ២០០៧-២០១០ ដោយ​អ្នកនិពន្ធ Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "អ្នក​ថែទាំ" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "ឯកសារ​ចាក់​ ១" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "ចាក់​ស៊ីឌី​អូឌីយ៉ូ ២" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "ចាក់​ស៊ីឌី​វីដេអូ ៣" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "ចាក់​ឌីវីឌី ៤" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "ទូរទស្សន៍​ឌីជីថល​ ៥" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "កំណត់​រចនាសម្ព័ន្ធ Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "របៀប​តូច​បំផុត" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "របៀប​តូច​បំផុត" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "របៀប​ពេញ​អេក្រង់" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "ថិរវេលា​រំលង​ខ្លី ៖" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "ថិរវេលា​​រំលង​វែង ៖" #: mainwindow.cpp:282 msgid "&File" msgstr "ឯកសារ" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "បើក URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "ចាក់​ស៊ីឌី​អូឌីយ៉ូ" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "ចាក់​ស៊ីឌី​វីដេអូ​" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "ចាក់​ឌីវីឌី" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "ចាក់​ថត​ឌីវីឌី" #: mainwindow.cpp:322 msgid "&Playback" msgstr "ចាក់​ឡើងវិញ" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "បញ្ជី​ចាក់" #: mainwindow.cpp:329 msgid "&Television" msgstr "ទូរទស្សន៍" #: mainwindow.cpp:333 msgid "&Settings" msgstr "ការ​កំណត់" #: mainwindow.cpp:352 msgid "Start" msgstr "ចាប់ផ្ដើម" #: mainwindow.cpp:353 msgid "Playback" msgstr "ចាក់​ឡើង​វិញ" #: mainwindow.cpp:354 msgid "Playlist" msgstr "បញ្ជី​ចាក់" #: mainwindow.cpp:356 msgid "Television" msgstr "ទូរទស្សន៍" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "ចាប់​​​​ផ្ដើម​ជា​របៀប​ពេញ​អេក្រង់" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(ជម្រើស​ដែល​បាន​បដិសេធ​)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "ចាក់​ប៉ុស្តិ៍​​ទូរទស្សន៍" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "ចាក់​ប៉ុស្តិ៍​ទូរទស្សន៍​ដែល​បាន​រាវ​រក​លើក​​ចុងក្រោយ​" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "ទិន្នន័យ​ Dump dvb (ជម្រើស​បំបាត់​​កំហុស)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "ឯកសារ ឬ​ URLs ត្រូវ​ចាក់" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "បើក URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "បញ្ចូល​ URL ៖" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "លោត​ទៅ​ទីតាំង" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "បញ្ចូល​ទីតាំង ៖" #: mediawidget.cpp:237 msgid "Previous" msgstr "មុន" #: mediawidget.cpp:245 msgid "Play" msgstr "ចាក់" #: mediawidget.cpp:246 msgid "Pause" msgstr "ផ្អាក" #: mediawidget.cpp:253 msgid "Stop" msgstr "បញ្ឈប់" #: mediawidget.cpp:259 msgid "Next" msgstr "បន្ទាប់" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "របៀប​ពេញ​អេក្រង់" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "របៀប​តូច​បំផុត" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "បិទ" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "អូឌីយ៉ូ" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "បង្កើន​​សំឡេង" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "បន្ថយ​សំឡេង" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "ធ្វើ​ឲ្យ​ស្ងាត់" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "វីដេអូ" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "មិន​ត្របាញ់​" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "សមាមាត្រ" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "ស្វ័យ​ប្រវត្តិ" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "សម​នឹង​បង្អួច" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "៤ ៖ ៣" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "១៦ ៖ ៩" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "ផ្លាស់ប្ដូរ​ទំហំ​ដោយ​ស្វ័យ​ប្រវត្តិ" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "បិទ" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "ទំហំ​ដើម" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "ទំហំទ្វេ" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "គ្រាប់​រំកិល​កម្រិត​​សំឡេង" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "លោត​ទៅ​ទី​​តាំង..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "រំលង" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "រំលង​ទៅ​ក្រោយ​ %1 វិនាទី" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "រំលង​ទៅ​មុខ​ %1 វិនាទី" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "គ្រាប់​រំកិល​ស្វែងរក" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "ម៉ឺនុយ​បិទ​បើក" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "ចំណង​ជើង" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "ជំពូក" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "មុំ" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "ប្ដូរ​រវាង​ការ​បង្ហាញ​ពេលវេលា​ដែល​នៅសល់ និង​កន្លង​ផុត" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "ឯកសារ​មេឌៀ​ដែល​បាន​គាំទ្រ" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "ឯកសារ​ទាំង​អស់" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "ចេញ​ពី​របៀប​ពេញ​អេក្រង់" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "ចេញពីរបៀបតូចបំផុត​" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "បាន​បញ្ឈប់" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "បើក​ស្ងាត់" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "បិទ​ស្ងាត់" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "កម្រិត​សំឡេង ៖ %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "បើក​ការ​មិន​​ត្របាញ់" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "បិទ​ការ​មិន​ត្របាញ់" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "បាន​ផ្អាក" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "កំពុង​ចាក់" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "ខឹម សុខែម, សេង​ សុត្ថា, ម៉ន ម៉េត" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "khoemsokhem@khmeros.info,sutha@khmeros.info,mornmet@khmeros.info" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "សូម​ដំឡើង​កម្មវិធី​ជំនួយ Qt SQLite ​។" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "មិន​អាច​បើក​មូលដ្ឋាន​ទិន្នន័យ​ SQLite ។" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "ឧបករណ៍​ប្រើប្រាស់​ខាង​ក្នុង​សម្រាប់ Kaffeine ។" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "ប៉ុស្តិ៍" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "លេខ" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "កែសម្រួល" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "យកចេញ" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "ប៉ុស្តិ៍​​នឹង​ត្រូវ​បាន​​តម្រៀប​តាម​លេខ ដើម្បី​អនុញ្ញាត​ឲ្យ​អូស និង​ទម្លាក់​បាន​ ។\n" "​តើ​អ្នក​ចង់​បន្ត​ឬ ?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "ផ្ដេក" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "បញ្ឈរ" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "រង្វង់​ឆ្វេង" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "រង្វង់​ស្ដាំ" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "ប៉ុស្តិ៍​" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "ឈ្មោះ ៖" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "លេខ ៖" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "ប្រភព ៖" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "​ប្រេកង់ (MHz) ៖" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "អត្រា​និមិត្ត​សញ្ញា (kS/s) ៖" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "លំនាំ​ឡើង​ចុះ ៖" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "អត្រា FEC ៖" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "ការ​ធ្វើ​ឲ្យ​បែក ៖" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off ៖" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "កម្រិត​បញ្ជូន ៖" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "LP អត្រា​ FEC ៖" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "របៀប​បញ្ជូន ៖" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "ចន្លោះ​ពេល​ការពារ ៖" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "តាម​ឋានានុក្រម ៖" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID ៖" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID វីដេអូ ៖" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID ចំណង​ជើង​រង ៖" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID ប្រមូល​យក​ព័ត៌មាន​ទូរទស្សន៍ ៖" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "លេខ​សម្គាល់​បណ្ដាញ ៖" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "លេខ​សម្គាល់​ស្ទ្រីម​បញ្ជូន ៖" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "លេខ​សម្គាល់​សេវា ៖" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "ឆានែល​អូឌីយ៉ូ ៖" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "បាន​ច្របល់ ៖" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "កំណត់​រចនាសម្ព័ន្ធ​ទូរទស្សន៍" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "ថតដែលថត ៖" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "ជ្រើស​ថត" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "ថត​ប្ដូរ​ពេលវេលា ៖" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "ដើម​រឹម​​ (នាទី​​) ៖" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "ចុង​​រឹម​ (នាទី​​) ៖" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "ប្រើ​សំណុំ​តួ​អក្សរ ISO 8859-1 ជំនួស​ឲ្យ​ ISO 6937 ៖" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "វិភាគ​រក​ទិន្នន័យ​ដែល​បាន​ធ្វើ​បច្ចុប្បន្នភាព​​ចុងក្រោយ​នៅ %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "ធ្វើ​បច្ចុប្បន្នភាព​​ទិន្នន័យ​វិភាគ​រក​​លើ​អ៊ីនធឺណិត" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "ទីតាំង​របស់​អ្នក (ចាំបាច់​​សម្រាប់​តែ​ USALS rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "រយៈទទឹង ៖" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "រយៈបណ្ដោយ ៖" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "ជម្រើស​ទូទៅ" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "ឧបករណ៍ %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "ធ្វើ​បច្ចុប្បន្នភាព​​ទិន្នន័យ​វិភាគ​រក​​លើ​អ៊ីនធឺណិត" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "ទាញ​យក​ទិន្នន័យ​វិភាគ​រក" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ធ្វើ​បច្ចុប្បន្ន​ភាព​ទិន្នន័យ​វិភាគ​​រក ។" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "បាន​​ធ្វើ​បច្ចុប្បន្នភាព​ទិន្នន័យ​វិភាគ​រក​ដោយ​ជោគ​ជ័យ ។ ការ​ផ្លាស់​ប្ដូរ​នឹង​​មាន​\n" "ប្រសិទ្ធិភាព បន្ទាប់​ពី​អ្នក​បាន​បិទ​ប្រអប់​កំណត់​រចនាសម្ព័ន្ធ ។" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "ឈ្មោះ ៖ %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "ផ្លាស់ទី​ទៅ​ឆ្វេង" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "កំណត់​ឡើង​វិញ" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "ផ្លាស់​ទី​ទៅ​ស្តាំ" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "មិន​​​​​​​​​បាន​​តភ្ជាប់​ឧបករណ៍​ ។" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "ខ្សែ" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "ដែនដី" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "វិភាគ​រ​​ក​ដោយ​ស្វ័យ​ប្រវត្តិ" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "វិភាគ​រក​ដោយ​ស្វ័យ​ប្រវត្តិ​ដោយ​មាន​អុហ្វសិត ១​៦​៧ គីឡូ​ហឺត" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "វិភាគ​រក​អូស្ត្រាលី​ដោយ​ស្វ័យ​ប្រវត្តិ" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "វិភាគ​រក​អ៊ីតាលី​ដោយ​ស្វ័យ​ប្រវត្តិ" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "វិភាគ​រក​តៃវ៉ាន់​ដោយ​ស្វ័យ​ប្រវត្តិ" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "អស់​ពេល​សម្រាប់​ប្រដាប់​រាវ​ប៉ុស្តិ៍ (ម.វ.) ៖" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "ប្រភព ៖" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "គ្មាន​ប្រភព" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "ឈ្មោះ ៖" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ ៖" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "ការ​ប្ដូរ DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS Rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "ទីតាំង Rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "ការ​កំណត់ LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "ការ​កំណត់ LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "បន្ថែម​​ផ្កាយរណប" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "ផ្កាយរណប" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "ទីតាំង" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "យក​ផ្កាយរណប​ចេញ" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB សកល" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "ក្រុម C LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "ផ្ទាល់ខ្លួន" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "ប្ដូរ​ប្រេកង់ (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "ក្រុម​ទាប LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "ក្រុម​ខ្ពស់ LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF ផ្ដេក (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF បញ្ឈរ (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "មគ្គុទ្ទេសក៍​កម្មវិធី" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "កាលវិភាគ​ថត" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "ស្វែងរក ៖" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "ចាប់ផ្ដើម" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "ថិរវេលា" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "ចំណង​ជើង" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "រក​មិន​ឃើញ​ឧបករណ៍​ដែល​អាច​ប្រើ​បាន ។" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "រក​មិន​ឃើញ​ឧបករណ៍​ដែល​អាច​ប្រើ​បាន ។" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "កាលវិភាគ​ថត" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "ថ្មី" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "ឈ្មោះ" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "កែសម្រួល​ធាតុ​កាលវិភាគ" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "ឈ្មោះ ៖" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "ប៉ុស្តិ៍ ៖" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "ចាប់ផ្ដើម" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "ថិរវេលា ៖" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "បញ្ចប់ ៖" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "ធ្វើ​ម្ដង​ទៀត" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "កុំ" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "ប្រចាំ​ថ្ងៃ" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "ក្រុម​ហ៊ុន​ផ្ដល់" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "ប៉ុស្តិ៍" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "ជម្រះ" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "វិភាគ​រក​ប៉ុស្តិ៍" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "ចាប់​ផ្ដើម​វិភាគ​រក" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "សញ្ញា ៖" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR ៖" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "បាន​រាវ​រក ៖" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "តម្រង" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "ផ្សាយ​ដោយ​សេរី" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "វិទ្យុ" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "ទូរទស្សន៍" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "ក្រុមហ៊ុន​ផ្ដល់ ៖" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "បន្ថែម​អ្វី​ដែល​បាន​ត្រង" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "បន្ថែម​អ្វី​ដែល​បាន​ជ្រើស" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "វិភាគ​រក​លទ្ធផល" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "ឧបករណ៍​ទទួល​សញ្ញា​​បច្ចុប្បន្ន" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "បញ្ឈប់​ការ​វិភាគ​រក" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "មគ្គុទ្ទេសក៍​កម្មវិធី" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "កាលវិភាគ​ថត" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "កំណត់​ត្រា​បន្ទាន់" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "កំណត់​រចនាសម្ព័ន្ធ​ទូរទស្សន៍" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "ស្វែងរក ៖" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "ប៉ុស្តិ៍ ៖ %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "ឥឡូវ​នេះ Kaffeine កំពុង​តែ​ថត​ចម្លង​កម្មវិធី ។\n" "​តើ​អ្នក​ពិត​ជា​ចង់​បិទ​កម្មវិធី​នេះ​ឬ ?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine បាន​កំណត់​ពេល​ការ​ថត​ចម្លង​ ។\n" "​តើ​អ្នក​ពិត​ជា​ចង់​បិទ​កម្មវិធី​នេះ​ឬ ?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "បាន​ចាប់​ផ្ដើម​កំណត់​ត្រា​បន្ទាន់" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "បាន​បញ្ឈប់​កំណត់​ត្រា​បន្ទាន់" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "ចំណង​ជើង" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "សិល្បករ" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "អាល់ប៊ុម" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "លេខ​បទ" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "រយៈ​ពេល" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "បញ្ជី​ចាក់​បណ្ដោះអាសន្ន​" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "ធ្វើ​ម្ដង​ទៀត" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "ចៃ​ដន្យ​" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "បន្ថែម​ចំណង​ជើង​រង" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "ប្ដូរ​ឈ្មោះ​" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "បញ្ជី​ចាក់​ដែល​គ្មាន​ឈ្មោះ" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "ឯកសារ​ចំណង​ជើង​រង" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" #~ msgid "Channel Settings" #~ msgstr "ការ​កំណត់​ប៉ុស្ដិ៍" #~ msgid "Name" #~ msgstr "ឈ្មោះ" #~ msgid "Edit" #~ msgstr "កែសម្រួល" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "យកចេញ" #~ msgid "Remove" #~ msgstr "យកចេញ" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "ចាប់ផ្ដើម" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "ចាប់ផ្ដើម ៖" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "ថ្មី" #~ msgid "Duration" #~ msgstr "ថិរវេលា" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "កំណត់​ពេល​កម្ម​វិធី" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "ឈ្មោះ" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "ធ្វើ​ឲ្យ​ស្រស់" kaffeine-1.2.2/po/km/CMakeLists.txt0000644000175000017500000000012711552636277016515 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(km ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ko/0000755000175000017500000000000011552636277013757 5ustar lxuserlxuserkaffeine-1.2.2/po/ko/kaffeine.po0000644000175000017500000007412111552636277016074 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Park Shinjo , 2008, 2009. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-08-05 14:04+0900\n" "Last-Translator: Park Shinjo \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 0.3\n" "Plural-Forms: nplurals=1; plural=0;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "디지털 TV를 지원하는 KDE 미디어 재생기." #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007-2009 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2009 Kaffeine 작성자" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "관리자" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "파일 재생 (&1)" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "오디오 CD 재생 (&2)" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "비디오 CD 재생 (&3)" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "DVD 재생 (&4)" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "디지털 TV (&5)" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "채널 설정" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "전체 화면 모드" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "설정:" #: mainwindow.cpp:282 msgid "&File" msgstr "파일(&F)" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL 열기" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "오디오 CD 재생" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "비디오 CD 재생" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD 재생" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD 재생" #: mainwindow.cpp:322 msgid "&Playback" msgstr "재생(&P)" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "재생 목록(&L)" #: mainwindow.cpp:329 msgid "&Television" msgstr "텔레비전 (&T)" #: mainwindow.cpp:333 msgid "&Settings" msgstr "설정(&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "시작" #: mainwindow.cpp:353 msgid "Playback" msgstr "재생" #: mainwindow.cpp:354 msgid "Playlist" msgstr "재생 목록" #: mainwindow.cpp:356 msgid "Television" msgstr "텔레비전" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "전체 화면 모드로 시작하기" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete all" msgctxt "command line option" msgid "(deprecated option)" msgstr "모두 삭제" #: mainwindow.cpp:511 #, fuzzy #| msgid "Play TV channel" msgctxt "command line option" msgid "Play TV channel" msgstr "TV 채널 재생하기" #: mainwindow.cpp:512 #, fuzzy #| msgid "Play TV channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "TV 채널 재생하기" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "재생할 파일이나 URL" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "URL 열기" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "URL 입력:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "위치로 가기" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "위치 입력:" #: mediawidget.cpp:237 msgid "Previous" msgstr "이전" #: mediawidget.cpp:245 msgid "Play" msgstr "재생" #: mediawidget.cpp:246 msgid "Pause" msgstr "일시 정지" #: mediawidget.cpp:253 msgid "Stop" msgstr "정지" #: mediawidget.cpp:259 msgid "Next" msgstr "다음" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "전체 화면 모드" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 #, fuzzy #| msgid "off" msgctxt "subtitle selection entry" msgid "off" msgstr "끔" #: mediawidget.cpp:293 #, fuzzy #| msgid "Audio" msgctxt "'Playback' menu" msgid "Audio" msgstr "오디오" #: mediawidget.cpp:296 #, fuzzy #| msgid "Increase Volume" msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "음량 증가" #: mediawidget.cpp:302 #, fuzzy #| msgid "Decrease Volume" msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "음량 감소" #: mediawidget.cpp:307 #, fuzzy #| msgid "Mute Volume" msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "음소거" #: mediawidget.cpp:318 #, fuzzy #| msgid "Video PID:" msgctxt "'Playback' menu" msgid "Video" msgstr "비디오 PID:" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 #, fuzzy #| msgid "Aspect Ratio" msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "화면 비율" #: mediawidget.cpp:337 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Automatic" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "자동" #: mediawidget.cpp:343 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Fit to Window" msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "창에 맞춤" #: mediawidget.cpp:348 #, fuzzy #| msgctxt "aspect ratio" #| msgid "4:3" msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 #, fuzzy #| msgctxt "aspect ratio" #| msgid "16:9" msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "자동 크기 조정" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "끔" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "원래 크기" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "두 배" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "음량 슬라이더" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "위치로 가기" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "건너뛰기" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, fuzzy, no-c-format, kde-format #| msgctxt "submenu of skip" #| msgid "Skip 10s Backward" msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "10초 뒤로 건너뛰기" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, fuzzy, no-c-format, kde-format #| msgctxt "submenu of skip" #| msgid "Skip 10s Forward" msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "10초 앞으로 건너뛰기" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Volume Slider" msgid "Seek Slider" msgstr "음량 슬라이더" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "Title" msgctxt "dvd navigation" msgid "Title" msgstr "제목" #: mediawidget.cpp:469 #, fuzzy #| msgid "Chapter" msgctxt "dvd navigation" msgid "Chapter" msgstr "챕터" #: mediawidget.cpp:475 #, fuzzy #| msgid "Angle" msgctxt "dvd navigation" msgid "Angle" msgstr "각도" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "지난 시간과 남은 시간 표시 바꾸기" #: mediawidget.cpp:530 #, fuzzy #| msgctxt "file filter description" #| msgid "Supported media files" msgctxt "file filter" msgid "Supported Media Files" msgstr "지원하는 미디어 파일" #: mediawidget.cpp:531 #, fuzzy #| msgctxt "file filter description" #| msgid "All files" msgctxt "file filter" msgid "All Files" msgstr "모든 파일" #: mediawidget.cpp:563 #, fuzzy #| msgid "Exit Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "전체 화면 모드 끝내기" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "정지됨" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "음소거" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "음소거 해제" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "음량: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "일시 정지됨" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "재생 중" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Park Shinjo" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "kde@peremen.name" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "채널" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "번호" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "편집" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgctxt "remove an item from a list" #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "삭제" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "수평" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "수직" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "원형 왼쪽" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "원형 오른쪽" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "채널 편집" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "이름:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "번호:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "원본:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "주파수 (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "심볼 레이트 (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "변조 방식:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC 비율:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "극성:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "롤-오프:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "대역폭:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC 비율 LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "전송 모드:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "구조:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "비디오 PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "자막 PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "텔레텍스트 PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "네트워크 ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "전송 스트림 ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "서비스 ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "오디오 채널:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "암호화됨:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "텔레비전 설정" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "녹화 폴더:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "폴더 선택" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "타임시프트 폴더:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "마지막 검색 결과 업데이트: %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "검색 결과 인터넷으로 업데이트" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "현재 위치 (USALS 로터에만 필요함)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "위도:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "경도:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "일반 옵션" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "장치 %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "검색 결과 인터넷으로 업데이트" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "검색 데이터 다운로드 중" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "검색 데이터를 업데이트하는 데 실패했습니다." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "검색 데이터를 업데이트했습니다. 이 설정 대화상자를\n" "닫으면 변경 사항이 반영됩니다." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "이름: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 #, fuzzy #| msgctxt "playlist menu" #| msgid "Repeat" msgid "Reset" msgstr "반복" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "장치가 연결되지 않았습니다." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "케이블" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "지상파" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "자동 검색" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "167kHz 간격으로 자동 검색" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "오스트레일리아 자동 검색" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "이탈리아 자동 검색" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "대만 자동 검색" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "튜너 시간 제한(ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "원본:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "원본 없음" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "이름:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "설정:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC 스위치" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS 로터" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "위치 로터" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 설정" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB 설정" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "인공위성 추가" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "인공위성" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "위치" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "인공위성 삭제" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "유니버셜 LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-밴드 LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-밴드 다중 지점 LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "사용자 정의 LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "주파수 변경 (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "저대역 LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "고대역 LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "수평 LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "수직 LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "프로그램 가이드" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "예약 녹화" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "검색:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "시작" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "기간" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "제목" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgid "No suitable device found." msgctxt "@info" msgid "No device found." msgstr "적당한 장치가 없습니다." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 #, fuzzy #| msgid "No suitable device found." msgctxt "message box" msgid "No available device found." msgstr "적당한 장치가 없습니다." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "예약 녹화" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "새로 만들기" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "이름" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of recording schedule" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "예약 편집하기" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "이름:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "채널:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "시작" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "시간:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "끝:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgctxt "playlist menu" #| msgid "Repeat" msgctxt "@label recording" msgid "Repeat:" msgstr "반복" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "공급자" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "신호대 잡음비" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "채널" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "지우기" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "채널 검색" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "검색 시작" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "신호:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "신호대 잡음비:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "조정됨:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "필터" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "공중파" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "라디오" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "공급자:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "필터에 추가" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "선택한 것 추가" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "검색 결과" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "현재 트랜스폰더" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "검색 중지" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "프로그램 가이드" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "예약 녹화" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "즉석 녹화" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "텔레비전 설정" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "검색:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "채널: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "즉석 녹화 시작됨" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "즉석 녹화 중지됨" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "Title" msgctxt "playlist track" msgid "Title" msgstr "제목" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "ATSC" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "번호" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Temporary Playlist" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "임시 재생 목록" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "반복" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "라디오" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "인공위성 추가" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "이름 바꾸기" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Playlist" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "재생 목록" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "자막 PID:" #: playlist/playlisttab.cpp:853 #, fuzzy #| msgid "" #| "*.m3u|M3U Playlist\n" #| "*.pls|PLS Playlist\n" #| "*.xspf|XSPF Playlist" msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.m3u|M3U 재생 목록\n" "*.pls|PLS 재생 목록\n" "*.xspf|XSPF 재생 목록" #~ msgid "Channel Settings" #~ msgstr "채널 설정" #~ msgid "Name" #~ msgstr "이름" #~ msgid "Edit" #~ msgstr "편집" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "삭제" #, fuzzy #~| msgctxt "remove an item from a list" #~| msgid "Remove" #~ msgid "Remove" #~ msgstr "삭제" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "시작" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "시작:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "새로 만들기" #~ msgid "Channel" #~ msgstr "채널" #~ msgid "Duration" #~ msgstr "기간" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "프로그램 예약" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "이름" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "새로 고침" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "프로그램을 예약했습니다." #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "%1을(를) 열 수 없습니다." #~ msgid "Unknown playlist format." #~ msgstr "알 수 없는 재생 목록 형식." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "무순서" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "1분 뒤로 건너뛰기" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "1분 앞으로 건너뛰기" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "%1에
검색 파일 업데이트됨" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine 재생기]
데스크톱의 카페인!
" #, fuzzy #~| msgid "Position Slider" #~ msgid "Navigation" #~ msgstr "위치 슬라이더" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "새로 만들기" #~ msgid "Start scan" #~ msgstr "검색 시작" #~ msgid "No source" #~ msgstr "원본 없음" #~ msgid "&View" #~ msgstr "보기(&V)" #~ msgid "&Player" #~ msgstr "재생기(&P)" #~ msgid "&DVB" #~ msgstr "DVB(&D)" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "채널 삭제" #~ msgid "Open file" #~ msgstr "파일 열기" #~ msgid "Use right click to edit/delete" #~ msgstr "편집/삭제하려면 오른쪽으로 누르십시오" #~ msgid "Channel search" #~ msgstr "채널 찾기" #~ msgid "Change icon" #~ msgstr "아이콘 변경" #~ msgid "DVB Settings" #~ msgstr "DVB 설정" #~ msgid "Configure DVB" #~ msgstr "DVB 설정" #~ msgid "Player" #~ msgstr "재생기" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "주 컨트롤" #~ msgid "Position Slider" #~ msgstr "위치 슬라이더" #~ msgid "Tab Manager" #~ msgstr "탭 관리자" kaffeine-1.2.2/po/ko/CMakeLists.txt0000644000175000017500000000012711552636277016517 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ko ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/hu/0000755000175000017500000000000011552636277013762 5ustar lxuserlxuserkaffeine-1.2.2/po/hu/kaffeine.po0000644000175000017500000007261611552636277016106 0ustar lxuserlxuser# translation of kaffeine.po to Hungarian # Copyright (C) 2009 This_file_is_part_of_KDE # This file is distributed under the same license as the Kaffeine package. # Barcza Károly , 2009. # Arpad Biro , 2009, 2010. # Kristóf Kiszel , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-09-26 21:13+0200\n" "Last-Translator: Kristóf Kiszel \n" "Language-Team: Magyar \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Hungarian\n" "X-Poedit-Country: HUNGARY\n" "X-Generator: Lokalize 1.0\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Médialejátszó a KDE-hez digitálistévé-támogatással" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010, a Kaffeine szerzői" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Karbantartó" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Fájl lejátszása" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Hang-CD lejátszása" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video CD lejátszása" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD lejátszása" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitális tv" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "A Kaffeine beállítása" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Minimális mód" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimális mód" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Teljes képernyős mód" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Rövid ugrás mérete:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Hosszú ugrás mérete:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fájl" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL megnyitása…" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Hang-CD lejátszása" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video CD lejátszása" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD lejátszása" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD lejátszása" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Lejátszás" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Lejátszólist&a" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televízió" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Beállítások" #: mainwindow.cpp:352 msgid "Start" msgstr "Indítás" #: mainwindow.cpp:353 msgid "Playback" msgstr "Lejátszás" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lejátszólista" #: mainwindow.cpp:356 msgid "Television" msgstr "Televízió" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Indítás teljes képernyős módban" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(elavult opció)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Tv-csatorna lejátszása" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Legutóbb behangolt tv-csatorna lejátszása" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "DVB-adatok kiírása (hibakeresési opció)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Lejátszandó fájlok vagy URL-ek" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "URL megnyitása" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Adjon meg egy URL-t:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Ugrás egy helyre..." #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Adjon meg egy pozíciót:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Előző" #: mediawidget.cpp:245 msgid "Play" msgstr "Lejátszás" #: mediawidget.cpp:246 msgid "Pause" msgstr "Szünet" #: mediawidget.cpp:253 msgid "Stop" msgstr "Leállítás" #: mediawidget.cpp:259 msgid "Next" msgstr "Következő" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Teljes képernyős mód" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimális mód" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "kikapcsolva" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Hang" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "A hangerő növelése" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "A hangerő csökkentése" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Elnémítás" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Videó" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Váltottsor-mentesítés" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Méretarány" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatikus" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Illesztés az ablakhoz" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatikus átméretezés" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Kikapcsolva" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Eredeti méret" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dupla méret" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Hangerő-csúszka" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Ugrás egy helyre..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Ugrás" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Ugrás visszafelé ennyivel: %1s" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Ugrás előre ennyivel: %1s" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Pozíció-csúszka" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menü bekapcsolása/kikapcsolása" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Cím" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Fejezet" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Szög" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Váltás az eltelt és a hátralevő idő mutatása között" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Támogatott médiafájlok" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Minden fájl" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Kilépés a teljes képernyős módból" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Kilépés a minimális módból" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Leállítva" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Elnémítva" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Nincs némítva" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Hangerő: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Váltottsor-mentesítés bekapcsolva" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Váltottsor-mentesítés kikapcsolva" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Szünet" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Lejátszás" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Barcza Károly,Bíró Árpád,Kiszel Kristóf" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "kbarcza@blackpanther.hu,biro.arpad@gmail.com,ulysses@kubuntu.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Telepítse a Qt SQLite modult." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Nem sikerült megnyitni az SQLite-adatbázist." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Belső alkalmazás a Kaffeine-hez." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Csatorna" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Szám" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Szerkesztés" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Eltávolítás" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Vízszintes" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Függőleges" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Körkörös, balra" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Körkörös, jobbra" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Csatorna" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Név:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Szám:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Forrás:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvencia (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Jelsebesség (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Moduláció:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC (hibajavítási)-ráta:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizáció:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Lekerekítés:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Sávszélesség:" # LP: low priority #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC-ráta, LP (alacsony prioritás):" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Átviteli mód:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Védelmi időköz:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchia:" # PMT: Program Map Table # PID: packet ID # http://en.wikipedia.org/wiki/MPEG_transport_stream #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT-PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Felirat-PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teletext-PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Hálózatazonosító:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Átviteli adatfolyam azonosítója:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Szolgáltatásazonosító:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Hangcsatorna:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Titkosított:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "A televízió beállítása" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Felvételek könyvtára:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Könyvtárválasztás" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Időeltolás (time shift) könyvtára:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "A keresési adatok legutóbbi frissítése: %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Keresési adatok frissítése az internetről" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Az Ön pozíciója (csak USALS-rotorhoz)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Földrajzi szélesség:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[D -90 ... 90 É]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Földrajzi hosszúság:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Ny -180 ... 180 K]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Általános beállítások" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Eszköz: %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Keresési adatok frissítése az internetről" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Keresési adatok letöltése" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "A keresési adatok frissítése sikertelen." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "A keresési adatok frissítése sikeres. A változások érvénybe\n" "lépnek, amikor bezárja a beállítási párbeszédablakot." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Név: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Elmozdítás balra" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Alapállapot" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Elmozdítás jobbra" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Az eszköz nincs csatlakoztatva." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kábel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Földi" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automatikus keresés" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automatikus keresés 167 kHz-es eltolásokkal" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automatikus keresés - Ausztrália" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automatikus keresés - Olaszország" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automatikus keresés - Tajvan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tuner-időkorlát (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Forrás:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Nincs forrás" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Név:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Beállítás:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC-kapcsoló" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Pozíció-rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 beállításai" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-beállítások" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Műhold hozzáadása" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Műhold" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Pozíció" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Műhold eltávolítása" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Univerzális LNB (vevőfej)" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-sávos LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-sávos többpontos LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Egyéni LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Kapcsolófrekvencia (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Alsó sávos LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Felső sávos LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Vízszintes LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Függőleges LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (helyi oszcillátorfrekvencia) (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Programismertető" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Felvétel-időzítés" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Keresés:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Indítás" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Időtartam" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Cím" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Elérhető eszköz nem található." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Elérhető eszköz nem található." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Felvétel-időzítés" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Új" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Név" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Időzítési bejegyzés szerkesztése" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Név:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Csatorna:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Indítás" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Időtartam:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Vég:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Ismétlés:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Soha" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Naponta" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Szolgáltató" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Csatornák" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Törlés" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Csatornakeresés" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Keresés indítása" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Jel:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR (jel/zaj):" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Behangolva:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Szűrő" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Szabadon fogható" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Rádió" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Tv" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Szolgáltató:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Szűrt hozzáadása" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Kijelölt hozzáadása" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Keresési eredmények" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Jelenlegi transzponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Keresés leállítása" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programismertető" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Felvétel-időzítés" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Gyorsfelvétel" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "A televízió beállítása" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Keresés:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Csatorna: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Gyorsfelvétel elindítva" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Gyorsfelvétel leállítva" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Cím" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Előadó" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Sáv sorszáma" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Hossz" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Átmeneti lejátszólista" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Ismétlés" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Véletlenszerű" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Műhold hozzáadása" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Átnevezés" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Névtelen lejátszólista" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "Felirat-PID:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-lejátszólista\n" "*.m3u|M3U-lejátszólista\n" "*.pls|PLS-lejátszólista" #~ msgid "Channel Settings" #~ msgstr "Csatornabeállítások" #~ msgid "Name" #~ msgstr "Név" #~ msgid "Edit" #~ msgstr "Szerkesztés" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Eltávolítás" #~ msgid "Remove" #~ msgstr "Eltávolítás" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Kezdet" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Kezdet:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Új" #~ msgid "Duration" #~ msgstr "Időtartam" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Program időzítése" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Név" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Frissítés" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "A program időzítése megtörtént." #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "%1 nem nyitható meg." #~ msgid "Unknown playlist format." #~ msgstr "Ismeretlen lejátszólista-formátum." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Megkeverés" #, fuzzy #~| msgid "Skip 1min Backward" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Kihagy és 1 percet vissza" #, fuzzy #~| msgid "Skip 1min Forward" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Kihagy és 1 percet előre" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine Lejátszó]
egy kávészem a " #~ "desktopodra!
" #~| msgid "Polarization:" #~ msgid "Navigation" #~ msgstr "Navigáció" #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "Minden eltávolítása" #~ msgid "Recordings" #~ msgstr "Felvételek" #~ msgid "Edit Recording" #~ msgstr "Felvétel szerkesztése" #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "Keresési adatok utolsó frissítése
ezen %1" kaffeine-1.2.2/po/hu/CMakeLists.txt0000644000175000017500000000012711552636277016522 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(hu ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/uk/0000755000175000017500000000000011552636277013765 5ustar lxuserlxuserkaffeine-1.2.2/po/uk/kaffeine.po0000644000175000017500000010164411552636277016103 0ustar lxuserlxuser# translation of kaffeine.po to Ukrainian # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Yuri Chornoivan , 2008, 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-30 07:18+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%" "10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "Language: uk\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" "Програвач мультимедійних файлів для KDE з підтримкою цифрового телебачення." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© Автори Kaffeine, 2007–2010" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Супровідник" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Відтворити файл" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Відтворити аудіо-КД" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Відтворити відео-КД" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Відтворити DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Цифрове ТБ" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Налаштувати Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Початковий режим показу:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "звичайний режим" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "мінімальний режим" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "повноекранний режим" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "останній вибраний" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Тривалість короткого кроку:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Тривалість довгого кроку:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Файл" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Відкрити URL…" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Відтворити аудіо-КД" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Відтворити відео-КД" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Відтворити DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Відтворити теку DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Від&творення" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Сп&исок відтворення" #: mainwindow.cpp:329 msgid "&Television" msgstr "Теле&бачення" #: mainwindow.cpp:333 msgid "&Settings" msgstr "П&араметри" #: mainwindow.cpp:352 msgid "Start" msgstr "Почати" #: mainwindow.cpp:353 msgid "Playback" msgstr "Відтворення" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Список відтворення" #: mainwindow.cpp:356 msgid "Television" msgstr "Телебачення" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Запускати в повноекранному режимі" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(застарілий параметр)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Відтворити канал ТБ" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Розпочати відтворення останнього налаштованого каналу ТБ" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Створити знімок даних dvb (параметр для усування вад)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Файли або адреси url, які слід відтворити" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Відкриття адреси URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Введіть URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Перехід до позиції" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Введіть позицію:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Попередній" #: mediawidget.cpp:245 msgid "Play" msgstr "Пуск" #: mediawidget.cpp:246 msgid "Pause" msgstr "Пауза" #: mediawidget.cpp:253 msgid "Stop" msgstr "Зупинити" #: mediawidget.cpp:259 msgid "Next" msgstr "Далі" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Повноекранний режим" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Мінімальний режим" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "вимкнено" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Звук" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Збільшити гучність" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Зменшити гучність" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Вимкнути звук" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Відео" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Усунути черезрядковість" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Співвідношення розмірів" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Автоматично" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Вмістити у вікно" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Автоматичне масштабування" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Вимкнено" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Початковий розмір" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Подвійний розмір" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Повзунок гучності" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Перейти до позиції…" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Перемотування" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Повернутися на %1 сек." #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Перейти на %1 сек. вперед" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Повзунок позиції" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Увімкнути/Вимкнути меню" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Назва" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Частина" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Кут" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Перемкнутися між показом часу, що минув, і часу, що залишився" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Підтримувані мультимедійні файли" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Всі файли" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Вийти з повноекранного режиму" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Вийти з мінімального режиму" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Зупинено" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Звук вимкнено" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Звук увімкнено" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Гучність: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Усування черезрядковості увімкнено" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Усування черезрядковості вимкнено" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Призупинено" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Відтворення" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Іван Петрущак,Сергій Якимчук" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "ivanpetrouchtchak@yahoo.com,yakim@yakim.org.ua" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Будь ласка, встановіть додаток SQLite Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Не вдалося відкрити базу даних SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Інструмент внутрішнього керування Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Номер" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Змінити" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Вилучити" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Канали буде впорядковано за номером, щоб їх пункти можна було перетягувати і " "скидати.\n" "Бажаєте виконати впорядкування?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Горизонтальна" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Вертикальна" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Кругова ліворуч" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Кругова праворуч" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Змінити канал" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Назва:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Номер:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Джерело:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Частота (у МГц):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Частота символів (у кілосимволах/с):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Модуляція:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Частота FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Поляризація:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Спадання:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Ширина каналу:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Частота FEC НП:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Режим передавання:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Інтервал перевірки:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Ієрархія:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID таблиць карт програм:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID відео:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID субтитрів:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID телетексту:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Ідентифікатор мережі:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Ідентифікатор потоку передавання:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Ідентифікатор служби:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Канали звуку:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Шифрування:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Налаштування телебачення" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Тека записів:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Вибір теки" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Тека файла часового зсуву:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Початковий відступ (у хвилинах):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Кінцевий відступ (у хвилинах):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Використовувати набір ISO 8859-1 замість ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Останнє оновлення даних сканування: %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Оновити дані сканування за допомогою Інтернет" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Ваше розташування (потрібне лише для USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Широта:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[Пд -90 … 90 Пн]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Довгота:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Зх -180 … 180 Сх]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Загальні параметри" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Пристрій %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Оновлення даних сканування" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Звантаження даних сканування" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Спроба оновлення даних сканування зазнала невдачі." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Дані сканування успішно оновлено. Зміни набудуть чинності\n" "після закриття діалогового вікна налаштування." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Назва: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Пересунути ліворуч" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Відновити" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Пересунути праворуч" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Пристрій не з’єднано." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Кабельне" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Ефірне" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Автоматичне сканування" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Автоматичне сканування з кроком 167 кГц" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Автоматичне сканування (Австралія)" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Автоматичне сканування (Італія)" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Автоматичне сканування (Тайвань)" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Час очікування тюнера (мс):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Джерело:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Немає носія" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Назва:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Налаштування:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Перемикач DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Ротор USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Ротор позиціонування" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Параметри LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Параметри LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Додати супутник" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Супутник" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Позиція" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Вилучити супутник" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Універсальний LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB смуги C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "Багатоточковий LNB смуги C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Нетиповий LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Частота перемикання (МГц)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Вузькосмугова LOF (МГц)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Широкосмугова LOF (МГц)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Горизонтальна LOF (МГц)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Вертикальна LOF (МГц)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (МГц)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Розклад передач" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Записати передачу" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Шукати:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 – %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Початок" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Тривалість" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Заголовок" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "Для запису використовуються всі пристрої." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Не знайдено жодного пристрою." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Не знайдено доступного пристрою." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Розклад запису" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Створити" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Назва" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Зміна запису розкладу" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Назва:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Канал:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Початок:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Тривалість:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Завершення:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Повторення:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Ніколи" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Щодня" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Провайдер" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "Відношення сигнал/шум" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Канали" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Спорожнити" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Сканування каналів" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Почати пошук" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Сигнал:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "Відношення сигнал/шум:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Настроєно:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Фільтр" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Вільна трансляція" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радіо" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Телебачення" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Провайдер:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Додати відфільтровані" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Додати вибрані" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Результат сканування" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Поточний ретранслятор" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Зупинити сканування" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Розклад передач" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Екранна панель" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Розклад запису" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Негайний запис" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Налаштувати телебачення…" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Пошук:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Канал: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine зараз виконує запис телепрограм.\n" "Ви справді бажаєте завершити роботу програми?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "У розкладі Kaffeine залишилися пункти запису телепрограм.\n" "Ви справді бажаєте завершити роботу програми?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Почато негайний запис" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Негайний запис зупинено" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Назва" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Виконавець" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Альбом" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Номер доріжки" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Тривалість" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Тимчасовий список відтворення" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Повторити" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Випадковий" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Додати субтитри" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Перейменувати" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Список відтворення без назви" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Файли субтитрів" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Список XSPF\n" "*.m3u|Список M3U\n" "*.pls|Список PLS" #~ msgid "Channel Settings" #~ msgstr "Параметри каналу" #~ msgid "Name" #~ msgstr "Назва" #~ msgid "Edit" #~ msgstr "Змінити" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Вилучити" #~ msgid "Remove" #~ msgstr "Вилучити" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Початок" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Початок:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Створити" #~ msgid "Channel" #~ msgstr "Канал" #~ msgid "Duration" #~ msgstr "Тривалість" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Запланувати програму" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Назва" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Оновити" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Програму було успішно додано до розкладу." #~ msgid "Cannot open %1." #~ msgstr "Не вдалося відкрити %1." #~ msgid "Unknown playlist format." #~ msgstr "Невідомий формат списку відтворення." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Перемішати" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Повернутися на 1 хв." #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Перейти на 1 хв. вперед" #~ msgid "Scan data last updated
on %1" #~ msgstr "Останнє оновлення даних
%1" #~ msgid "Remove All" #~ msgstr "Вилучити все" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Програвач Kaffeine]
дайте кофеїну " #~ "вашій стільниці!
" #~ msgid "Navigation" #~ msgstr "Навігація" #~ msgid "Recordings" #~ msgstr "Записи" #~ msgid "Edit Recording" #~ msgstr "Редагувати запис" #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Створити" #~ msgid "Start scan" #~ msgstr "Почати пошук" #~ msgid "No source" #~ msgstr "Немає носія" #~ msgid "&View" #~ msgstr "П&ерегляд" #~ msgid "&Player" #~ msgstr "Про&гравач" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Налаштуватися на вибраний канал" #~ msgid "Open file" #~ msgstr "Відкрити файл" #~ msgid "Use right click to edit/delete" #~ msgstr "Використовувати клацання правою для зміни/вилучення" #~ msgid "Channel search" #~ msgstr "Пошук каналів" #~ msgid "Change icon" #~ msgstr "Змінити піктограму" #~ msgid "DVB Settings" #~ msgstr "Параметри DVB" #~ msgid "EPG" #~ msgstr "EPG" #~ msgid "Configure DVB" #~ msgstr "Налаштувати DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Перемкнутися на вкладку «Пуск»" #~ msgid "Switch to Player Tab" #~ msgstr "Перемкнутися на вкладку «Програвач»" #~ msgid "Switch to Playlist Tab" #~ msgstr "Перемкнутися на вкладку списку відтворення" #~ msgid "Switch to DVB Tab" #~ msgstr "Перемкнутися на вкладку «DVB»" kaffeine-1.2.2/po/uk/CMakeLists.txt0000644000175000017500000000012711552636277016525 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(uk ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/el/0000755000175000017500000000000011552636277013746 5ustar lxuserlxuserkaffeine-1.2.2/po/el/kaffeine.po0000644000175000017500000007646011552636277016073 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Toussis Manolis , 2008, 2009. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-02-17 18:13+0200\n" "Last-Translator: Toussis Manolis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 0.3\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 #, fuzzy #| msgid "Kaffeine Player" msgid "Kaffeine" msgstr "Αναπαραγωγέας Kaffeine" #: main.cpp:67 #, fuzzy #| msgid "A media player for KDE with digital tv support" msgid "A media player for KDE with digital TV support." msgstr "" "Ένας αναπαραγωγέας πολυμέσων για το KDE με υποστήριξη ψηφιακής τηλεόρασης" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(c) 2007, Οι συγγραφείς του Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 #, fuzzy #| msgid "Play File" msgid "&1 Play File" msgstr "Αναπαραγωγή αρχείου" #: mainwindow.cpp:91 #, fuzzy #| msgid "Play Audio CD" msgid "&2 Play Audio CD" msgstr "Αναπαραγωγή CD ήχου" #: mainwindow.cpp:96 #, fuzzy #| msgid "Play Video CD" msgid "&3 Play Video CD" msgstr "Αναπαραγωγή βίντεο CD" #: mainwindow.cpp:101 #, fuzzy #| msgid "Play DVD" msgid "&4 Play DVD" msgstr "Αναπαραγωγή DVD" #: mainwindow.cpp:107 #, fuzzy #| msgid "Digital TV" msgid "&5 Digital TV" msgstr "Ψηφιακή τηλεόραση" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Ρύθμιση καναλιών" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Λειτουργία πλήρους οθόνης" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Ρυθμίσεις:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Αρχείο" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "'Άνοιγμα URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Αναπαραγωγή CD ήχου" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Αναπαραγωγή βίντεο CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Αναπαραγωγή DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Αναπαραγωγή DVD" #: mainwindow.cpp:322 #, fuzzy #| msgid "Play" msgid "&Playback" msgstr "Αναπαραγωγή" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "Αναπαραγωγή" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Ρυθμίσεις" #: mainwindow.cpp:352 msgid "Start" msgstr "Έναρξη" #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "Αναπαραγωγή" #: mainwindow.cpp:354 #, fuzzy #| msgid "Play" msgid "Playlist" msgstr "Αναπαραγωγή" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Start in fullscreen mode" msgid "Start in full screen mode" msgstr "Έναρξη σε λειτουργία πλήρους οθόνης" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete all" msgctxt "command line option" msgid "(deprecated option)" msgstr "Διαγραφή όλων" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "Διαγραφή καναλιού" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Διαγραφή καναλιού" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 #, fuzzy #| msgid "File or url to play" msgid "Files or URLs to play" msgstr "Αρχείο ή url για αναπαραγωγή" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "'Άνοιγμα URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Εισάγετε ένα URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Θέση" #: mediawidget.cpp:161 #, fuzzy #| msgid "Enter a URL:" msgid "Enter a position:" msgstr "Εισάγετε ένα URL:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Προηγούμενο" #: mediawidget.cpp:245 msgid "Play" msgstr "Αναπαραγωγή" #: mediawidget.cpp:246 msgid "Pause" msgstr "Παύση" #: mediawidget.cpp:253 msgid "Stop" msgstr "Σταμάτημα" #: mediawidget.cpp:259 msgid "Next" msgstr "Επόμενο" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Λειτουργία πλήρους οθόνης" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Ραδιόφωνο" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "Αναπαραγωγή βίντεο CD" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Radio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Ραδιόφωνο" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Radio" msgid "Automatic Resize" msgstr "Ραδιόφωνο" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy #| msgid "Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Θέση" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select source:" msgid "Seek Slider" msgstr "Επιλογή πηγής:" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "&Αρχείο" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Λειτουργία πλήρους οθόνης" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Σταμάτημα" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format #| msgid "Name: %1" msgctxt "osd" msgid "Volume: %1%" msgstr "Όνομα: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "Παύση" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "Αναπαραγωγή" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Τούσης Μανώλης" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "manolis@koppermind.homelinux.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Κανάλι" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Αριθμός" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Επεξεργασία" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Αφαίρεση" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 #, fuzzy #| msgid "Horizontal LOF (MHz)" msgid "Horizontal" msgstr "Οριζόντιο LOF (MHz)" #: dvb/dvbchanneldialog.cpp:403 #, fuzzy #| msgid "Terrestrial" msgid "Vertical" msgstr "Επίγεια" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Επεξεργασία καναλιού" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Όνομα:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number" msgctxt "@label tv channel" msgid "Number:" msgstr "Αριθμός" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Πηγή:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 #, fuzzy #| msgid "Switch frequency (MHz)" msgid "Frequency (MHz):" msgstr "Συχνότητα εναλλαγής (MHz)" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy #| msgid "Duration:" msgid "Modulation:" msgstr "Διάρκεια:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "Θέση" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "Αναζήτηση:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 #, fuzzy #| msgid "Play Video CD" msgid "Video PID:" msgstr "Αναπαραγωγή βίντεο CD" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "Αναπαραγωγή βίντεο CD" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 #, fuzzy #| msgid "Device %1" msgid "Service ID:" msgstr "Συσκευή %1" #: dvb/dvbchanneldialog.cpp:676 #, fuzzy #| msgid "Edit channel" msgid "Audio channel:" msgstr "Επεξεργασία καναλιού" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Channels" msgctxt "@title:window" msgid "Configure Television" msgstr "Ρύθμιση καναλιών" #: dvb/dvbconfigdialog.cpp:55 #, fuzzy #| msgid "Recordings" msgid "Recording folder:" msgstr "Εγγραφές" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 #, fuzzy #| msgid "Select source:" msgid "Select Folder" msgstr "Επιλογή πηγής:" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, fuzzy, kde-format #| msgid "Scan file last updated
on %1" msgid "Scan data last updated on %1" msgstr "Τα αρχείο σάρωσης ενημερώθηκε
στις %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Συσκευή %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 #, fuzzy #| msgid "Scan file last updated
on %1" msgid "Scan data update failed." msgstr "Τα αρχείο σάρωσης ενημερώθηκε
στις %1" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Όνομα: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 #, fuzzy #| msgid "device not connected" msgid "Device not connected." msgstr "συσκευή μη συνδεδεμένη" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Καλωδιακή" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Επίγεια" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Stop scan" msgid "Autoscan" msgstr "Σταμάτημα σάρωσης" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Χρονικό όριο δέκτη (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Πηγή:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "No source" msgid "No Source" msgstr "Καμία πηγή" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Όνομα:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Ρυθμίσεις:" #: dvb/dvbconfigdialog.cpp:782 #, fuzzy #| msgid "DiSEqC switch" msgid "DiSEqC Switch" msgstr "εναλλαγή DiSEqC" #: dvb/dvbconfigdialog.cpp:783 #, fuzzy #| msgid "USALS rotor" msgid "USALS Rotor" msgstr "ρότορας USALS" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Positions rotor" msgid "Positions Rotor" msgstr "Ρότορας θέσεων" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "LNB %1 settings" msgid "LNB %1 Settings" msgstr "Ρυθμίσεις LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "LNB settings" msgid "LNB Settings" msgstr "Ρυθμίσεις LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy #| msgid "Add satellite" msgid "Add Satellite" msgstr "Προσθήκη δορυφόρου" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Δορυφόρος" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Θέση" #: dvb/dvbconfigdialog.cpp:872 #, fuzzy #| msgid "Remove satellite" msgid "Remove Satellite" msgstr "Αφαίρεση δορυφόρου" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Καθολικό LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-Band LNB" #: dvb/dvbconfigdialog.cpp:1084 #, fuzzy #| msgid "C-band multipoint LNB" msgid "C-band Multipoint LNB" msgstr "C-band multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Προσαρμοσμένο LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Συχνότητα εναλλαγής (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Χαμηλού εύρους LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Υψηλού εύρους LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Οριζόντιο LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Κατακόρυφο LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgid "Recordings" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Εγγραφές" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Αναζήτηση:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Έναρξη" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Διάρκεια" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "&File" msgctxt "@title:column tv show" msgid "Title" msgstr "&Αρχείο" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgid "No suitable device found." msgctxt "@info" msgid "No device found." msgstr "Δε βρέθηκε κατάλληλη συσκευή." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 #, fuzzy #| msgid "No suitable device found." msgctxt "message box" msgid "No available device found." msgstr "Δε βρέθηκε κατάλληλη συσκευή." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgid "Recordings" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Εγγραφές" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "Νέο" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Όνομα" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Όνομα:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Κανάλι:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Έναρξη" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Διάρκεια:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Τέλος:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Πάροχος" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Κανάλια" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 #, fuzzy #| msgid "Cable" msgctxt "remove all items from a list" msgid "Clear" msgstr "Καλωδιακή" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channel" msgid "Channel Scan" msgstr "Κανάλι" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy #| msgid "Start scan" msgid "Start Scan" msgstr "Έναρξη σάρωσης" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Σήμα:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Σε συντονισμό:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Φίλτρο" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Ελεύθερα" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Ραδιόφωνο" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Πάροχος:" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Add filtered" msgid "Add Filtered" msgstr "Προσθήκη φιλτραρισμένων" #: dvb/dvbscandialog.cpp:334 #, fuzzy #| msgid "Add selected" msgid "Add Selected" msgstr "Προσθήκη επιλογής" #: dvb/dvbscandialog.cpp:340 #, fuzzy #| msgid "Scan results" msgid "Scan Results" msgstr "Αποτελέσματα σάρωσης" #: dvb/dvbscandialog.cpp:356 #, fuzzy #| msgid "Current transponder" msgid "Current Transponder" msgstr "Τρέχων αναμεταδότης" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop scan" msgid "Stop Scan" msgstr "Σταμάτημα σάρωσης" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 #, fuzzy #| msgid "Recordings" msgctxt "dialog" msgid "Recording Schedule" msgstr "Εγγραφές" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Channels" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Ρύθμιση καναλιών" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Αναζήτηση:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channel:" msgctxt "osd" msgid "Channel: %1_" msgstr "Κανάλι:" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "&Αρχείο" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Αριθμός" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Αναπαραγωγή" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Ραδιόφωνο" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add satellite" msgid "Add Subtitle" msgstr "Προσθήκη δορυφόρου" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove" msgctxt "rename an entry in a list" msgid "Rename" msgstr "Αφαίρεση" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Αναπαραγωγή" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "Αναπαραγωγή βίντεο CD" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #, fuzzy #~| msgid "Channels" #~ msgid "Channel Settings" #~ msgstr "Κανάλια" #~ msgid "Name" #~ msgstr "Όνομα" #~ msgid "Edit" #~ msgstr "Επεξεργασία" #, fuzzy #~| msgid "Remove" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Αφαίρεση" #, fuzzy #~| msgid "Remove" #~ msgid "Remove" #~ msgstr "Αφαίρεση" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Αρχή" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Αρχή:" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Νέο" #~ msgid "Channel" #~ msgstr "Κανάλι" #~ msgid "Duration" #~ msgstr "Διάρκεια" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Όνομα" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Τα αρχείο σάρωσης ενημερώθηκε
στις %1" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "Τα αρχείο σάρωσης ενημερώθηκε
στις %1" #, fuzzy #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "Αφαίρεση" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Αναπαραγωγέας Kaffeine]
η καφεΐνη " #~ "της επιφάνειας εργασίας σας!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Θέση" #~ msgid "Recordings" #~ msgstr "Εγγραφές" #~ msgid "Edit Recording" #~ msgstr "Επεξεργασία εγγραφής" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Νέο" #~ msgid "Start scan" #~ msgstr "Έναρξη σάρωσης" #~ msgid "&View" #~ msgstr "&Προβολή" #~ msgid "&Player" #~ msgstr "&Αναπαραγωγέας" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Συντονισμός στο επιλεγμένο κανάλι" #~ msgid "Open file" #~ msgstr "Άνοιγμα αρχείου" #~ msgid "Use right click to edit/delete" #~ msgstr "Χρησιμοποιήστε το δεξί κλικ για επεξεργασία/διαγραφή" #~ msgid "Channel search" #~ msgstr "Αναζήτηση καναλιού" #~ msgid "Change icon" #~ msgstr "Τροποποίηση εικονιδίου" #~ msgid "DVB Settings" #~ msgstr "Ρυθμίσεις DVB" #~ msgid "Configure DVB" #~ msgstr "Ρύθμιση DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Εναλλαγή στην καρτέλα αρχής" #~ msgid "Switch to Player Tab" #~ msgstr "Εναλλαγή στην καρτέλα αναπαραγωγής" #, fuzzy #~| msgid "Switch to Player Tab" #~ msgid "Switch to Playlist Tab" #~ msgstr "Εναλλαγή στην καρτέλα αναπαραγωγής" #~ msgid "Switch to DVB Tab" #~ msgstr "Εναλλαγή στην καρτέλα DVB" #~ msgid "Player" #~ msgstr "Αναπαραγωγέας" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Κύρια στοιχεία ελέγχου" #~ msgid "Position Slider" #~ msgstr "Κύλιση θέσης" #~ msgid "Tab Manager" #~ msgstr "Διαχειριστής καρτελών" kaffeine-1.2.2/po/el/CMakeLists.txt0000644000175000017500000000012711552636277016506 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(el ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ga/0000755000175000017500000000000011552636277013735 5ustar lxuserlxuserkaffeine-1.2.2/po/ga/kaffeine.po0000644000175000017500000006653611552636277016065 0ustar lxuserlxuser# Irish translation of kaffeine # Copyright (C) 2009 This_file_is_part_of_KDE # This file is distributed under the same license as the kaffeine package. # Kevin Scannell , 2009. msgid "" msgstr "" "Project-Id-Version: extragear-multimedia/kaffeine.po\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2008-08-14 09:40-0500\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " "3 : 4\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 #, fuzzy #| msgid "Kaffeine Player" msgid "Kaffeine" msgstr "Seinnteoir Kaffeine" #: main.cpp:67 #, fuzzy #| msgid "A media player for KDE with digital tv support" msgid "A media player for KDE with digital TV support." msgstr "Seinnteoir meán KDE a thacaíonn le teilifís dhigiteach" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007 Údair Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Cothaitheoir" #: mainwindow.cpp:86 #, fuzzy #| msgid "Play File" msgid "&1 Play File" msgstr "Seinn Comhad" #: mainwindow.cpp:91 #, fuzzy #| msgid "Play Audio CD" msgid "&2 Play Audio CD" msgstr "Seinn Dlúthdhiosca Fuaime" #: mainwindow.cpp:96 #, fuzzy #| msgid "Play Video CD" msgid "&3 Play Video CD" msgstr "Seinn Dlúthdhiosca Físe" #: mainwindow.cpp:101 #, fuzzy #| msgid "Play DVD" msgid "&4 Play DVD" msgstr "Seinn DVD" #: mainwindow.cpp:107 #, fuzzy #| msgid "Digital TV" msgid "&5 Digital TV" msgstr "Teilifís Dhigiteach" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Cumraigh cainéil" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mód Lánscáileáin" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Cumraíocht:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Comhad" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Oscail URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Seinn Dlúthdhiosca Fuaime" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Seinn Dlúthdhiosca Físe" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Seinn DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Seinn DVD" #: mainwindow.cpp:322 #, fuzzy #| msgid "Play" msgid "&Playback" msgstr "Seinn" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "Seinn" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Socruithe" #: mainwindow.cpp:352 msgid "Start" msgstr "Tosaigh" #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "Seinn" #: mainwindow.cpp:354 #, fuzzy #| msgid "Play" msgid "Playlist" msgstr "Seinn" #: mainwindow.cpp:356 msgid "Television" msgstr "Teilifís" #: mainwindow.cpp:506 #, fuzzy #| msgid "Start in fullscreen mode" msgid "Start in full screen mode" msgstr "Tosaigh sa mhód lánscáileáin" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete all" msgctxt "command line option" msgid "(deprecated option)" msgstr "Scrios uile" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "Scrios an cainéal" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Scrios an cainéal" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 #, fuzzy #| msgid "File or url to play" msgid "Files or URLs to play" msgstr "Comhad nó URL le seinm" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Oscail URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Cuir isteach URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Ionad" #: mediawidget.cpp:161 #, fuzzy #| msgid "General Options" msgid "Enter a position:" msgstr "Roghanna Ginearálta" #: mediawidget.cpp:237 msgid "Previous" msgstr "Siar" #: mediawidget.cpp:245 msgid "Play" msgstr "Seinn" #: mediawidget.cpp:246 msgid "Pause" msgstr "Sos" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stad" #: mediawidget.cpp:259 msgid "Next" msgstr "Ar Aghaidh" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mód Lánscáileáin" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Raidió" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "Seinn Dlúthdhiosca Físe" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Radio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Raidió" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Radio" msgid "Automatic Resize" msgstr "Raidió" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy #| msgid "Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Ionad" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select source:" msgid "Seek Slider" msgstr "Roghnaigh foinse:" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "&Comhad" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Mód Lánscáileáin" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Stad" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format #| msgid "Name: %1" msgctxt "osd" msgid "Volume: %1%" msgstr "Ainm: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "Sos" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "Seinn" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Kevin Scannell" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "kscanne at gmail dot com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Cainéal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Uimhir" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Eagar" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Bain" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Cothrománach" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Ingearach" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Cuir an cainéal in eagar" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Ainm:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Uimhir:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Foinse:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy #| msgid "Duration:" msgid "Modulation:" msgstr "Aga:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "Ionad" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "Cuardaigh:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 #, fuzzy #| msgid "Play Video CD" msgid "Video PID:" msgstr "Seinn Dlúthdhiosca Físe" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "Seinn Dlúthdhiosca Físe" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 #, fuzzy #| msgid "Device %1" msgid "Service ID:" msgstr "Gléas %1" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Channels" msgctxt "@title:window" msgid "Configure Television" msgstr "Cumraigh Cainéil" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Fillteán taifid:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 #, fuzzy #| msgid "Select source:" msgid "Select Folder" msgstr "Roghnaigh foinse:" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Domhanleithead:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Domhanfhad:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Roghanna Ginearálta" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Gléas %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Ainm: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Bog Faoi Chlé" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Athshocraigh" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Bog Faoi Dheis" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cábla" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Radio" msgid "Autoscan" msgstr "Raidió" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Foinse:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "Source:" msgid "No Source" msgstr "Foinse:" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Ainm:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Cumraíocht:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Position" msgid "Positions Rotor" msgstr "Ionad" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "LNB settings" msgid "LNB %1 Settings" msgstr "Socruithe LNB" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "LNB settings" msgid "LNB Settings" msgstr "Socruithe LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy #| msgid "Satellite" msgid "Add Satellite" msgstr "Satailít" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satailít" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Ionad" #: dvb/dvbconfigdialog.cpp:872 #, fuzzy #| msgid "Satellite" msgid "Remove Satellite" msgstr "Satailít" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgid "Recording folder:" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Fillteán taifid:" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Cuardaigh:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Tosaigh" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Aga" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "&File" msgctxt "@title:column tv show" msgid "Title" msgstr "&Comhad" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgid "Recording folder:" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Fillteán taifid:" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nua" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Ainm" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Ainm:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Cainéal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Tosaigh" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Aga:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Deireadh:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Arís:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Soláthraí" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Cainéil" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 #, fuzzy #| msgid "Cable" msgctxt "remove all items from a list" msgid "Clear" msgstr "Cábla" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channel" msgid "Channel Scan" msgstr "Cainéal" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy #| msgid "Start scan" msgid "Start Scan" msgstr "Tosaigh an scanadh" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Comhartha:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Comhghléasta:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Scagaire" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Raidió" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Teilifís" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Soláthraí:" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Filter" msgid "Add Filtered" msgstr "Scagaire" #: dvb/dvbscandialog.cpp:334 #, fuzzy #| msgid "Add selected" msgid "Add Selected" msgstr "Cuir na cinn roghnaithe leis" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Start scan" msgid "Stop Scan" msgstr "Tosaigh an scanadh" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 #, fuzzy #| msgid "Recording folder:" msgctxt "dialog" msgid "Recording Schedule" msgstr "Fillteán taifid:" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Channels" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Cumraigh Cainéil" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Cuardaigh:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channel:" msgctxt "osd" msgid "Channel: %1_" msgstr "Cainéal:" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "&Comhad" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Uimhir" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Seinn" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Raidió" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Satellite" msgid "Add Subtitle" msgstr "Satailít" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove" msgctxt "rename an entry in a list" msgid "Rename" msgstr "Bain" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Seinn" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "Seinn Dlúthdhiosca Físe" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #~ msgid "Name" #~ msgstr "Ainm" #~ msgid "Edit" #~ msgstr "Eagar" #, fuzzy #~| msgid "Remove" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Bain" #, fuzzy #~| msgid "Remove" #~ msgid "Remove" #~ msgstr "Bain" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Tosaigh" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Tosaigh:" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nua" #~ msgid "Channel" #~ msgstr "Cainéal" #~ msgid "Duration" #~ msgstr "Aga" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Ainm" #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "Bain" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Seinnteoir Kaffeine]
caiféin ar do " #~ "dheasc!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Ionad" #~ msgid "Recordings" #~ msgstr "Taifid" #~ msgid "Edit Recording" #~ msgstr "Cuir Taifead in Eagar" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Nua" #~ msgid "Start scan" #~ msgstr "Tosaigh an scanadh" #~ msgid "&View" #~ msgstr "&Amharc" #~ msgid "&Player" #~ msgstr "&Seinnteoir" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Comhthiúin leis an gcainéal roghnaithe" #~ msgid "Open file" #~ msgstr "Oscail comhad" #~ msgid "Use right click to edit/delete" #~ msgstr "Deaschliceáil chun é a chur in eagar/scriosadh" #~ msgid "Channel search" #~ msgstr "Cuardaigh cainéal" #~ msgid "Change icon" #~ msgstr "Athraigh an deilbhín" #~ msgid "DVB Settings" #~ msgstr "Socruithe DVB" #~ msgid "Configure DVB" #~ msgstr "Cumraigh DVB" #~ msgid "Player" #~ msgstr "Seinnteoir" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "L" #~ msgid "Main Controls" #~ msgstr "Príomhrialtáin" #~ msgid "Position Slider" #~ msgstr "Barra Sleamhnáin" #~ msgid "Tab Manager" #~ msgstr "Bainisteoir na gCluaisíní" kaffeine-1.2.2/po/ga/CMakeLists.txt0000644000175000017500000000012711552636277016475 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ga ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/se/0000755000175000017500000000000011552636277013755 5ustar lxuserlxuserkaffeine-1.2.2/po/se/kaffeine.po0000644000175000017500000005130711552636277016073 0ustar lxuserlxuser# Translation of kaffeine to Northern Sami # # Børre Gaup , 2007. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-03-25 03:24+0100\n" "PO-Revision-Date: 2007-03-06 22:51+0100\n" "Last-Translator: Børre Gaup \n" "Language-Team: Northern Sami \n" "Language: se\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:204 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "" #: mainwindow.cpp:209 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:223 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:225 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:227 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "" #: mainwindow.cpp:229 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:234 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:242 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:281 msgid "&File" msgstr "" #: mainwindow.cpp:288 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "" #: mainwindow.cpp:299 mainwindow.cpp:503 msgid "Play Audio CD" msgstr "Čuojat jietna-CD:a" #: mainwindow.cpp:303 mainwindow.cpp:504 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:307 mainwindow.cpp:505 msgid "Play DVD" msgstr "Čuojat DVD:a" #: mainwindow.cpp:311 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:321 msgid "&Playback" msgstr "" #: mainwindow.cpp:324 msgctxt "menu bar" msgid "Play&list" msgstr "" #: mainwindow.cpp:328 msgid "&Television" msgstr "" #: mainwindow.cpp:332 msgid "&Settings" msgstr "" #: mainwindow.cpp:351 msgid "Start" msgstr "Álggat" #: mainwindow.cpp:352 msgid "Playback" msgstr "" #: mainwindow.cpp:353 msgid "Playlist" msgstr "Čuojahanlistu" #: mainwindow.cpp:355 msgid "Television" msgstr "" #: mainwindow.cpp:502 msgid "Start in full screen mode" msgstr "" #: mainwindow.cpp:506 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:507 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:508 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:509 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:510 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:663 msgctxt "@title:window" msgid "Open URL" msgstr "" #: mainwindow.cpp:663 msgid "Enter a URL:" msgstr "Čális fierpmádatčujuhusa:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "" #: mediawidget.cpp:245 msgid "Play" msgstr "Čuojat" #: mediawidget.cpp:246 msgid "Pause" msgstr "Boatkke" #: mediawidget.cpp:253 msgid "Stop" msgstr "" #: mediawidget.cpp:259 msgid "Next" msgstr "" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:79 msgid "Horizontal" msgstr "" #: dvb/dvbchanneldialog.cpp:80 msgid "Vertical" msgstr "" #: dvb/dvbchanneldialog.cpp:81 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:82 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:270 dvb/dvbepgdialog.cpp:288 #: dvb/dvbepgdialog.cpp:449 dvb/dvbrecordingdialog.cpp:189 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "" #: dvb/dvbchanneldialog.cpp:272 msgid "Number" msgstr "Lohku" #: dvb/dvbchanneldialog.cpp:522 dvb/dvbrecordingdialog.cpp:62 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:530 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:69 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "" #: dvb/dvbchanneldialog.cpp:547 msgctxt "message box" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:596 msgid "Channel Settings" msgstr "" #: dvb/dvbchanneldialog.cpp:605 dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Namma:" #: dvb/dvbchanneldialog.cpp:614 msgid "Number:" msgstr "" #: dvb/dvbchanneldialog.cpp:623 dvb/dvbconfigdialog.cpp:671 #: dvb/dvbscandialog.cpp:269 msgid "Source:" msgstr "Gáldu:" #: dvb/dvbchanneldialog.cpp:631 dvb/dvbchanneldialog.cpp:653 #: dvb/dvbchanneldialog.cpp:671 dvb/dvbchanneldialog.cpp:692 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:634 dvb/dvbchanneldialog.cpp:655 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:636 dvb/dvbchanneldialog.cpp:661 #: dvb/dvbchanneldialog.cpp:676 dvb/dvbchanneldialog.cpp:695 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:638 dvb/dvbchanneldialog.cpp:657 #: dvb/dvbchanneldialog.cpp:678 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:651 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:663 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:674 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:680 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:682 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:684 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:686 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:703 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:710 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:715 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:725 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:736 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:743 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:750 msgid "Service ID:" msgstr "Bálvalus-ID:" #: dvb/dvbchanneldialog.cpp:757 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:781 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:279 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Máhcat" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-heivehusat" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelihtta" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Sajádat" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universealla LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:39 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:58 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:66 msgctxt "@label:textbox" msgid "Search:" msgstr "" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:443 dvb/dvbrecordingdialog.cpp:191 msgctxt "@title:column tv show" msgid "Start" msgstr "" #: dvb/dvbepgdialog.cpp:445 dvb/dvbrecordingdialog.cpp:193 msgctxt "@title:column tv show" msgid "Duration" msgstr "" #: dvb/dvbepgdialog.cpp:447 msgctxt "@title:column tv show" msgid "Title" msgstr "" #: dvb/dvbliveview.cpp:207 dvb/dvbliveview.cpp:352 dvb/dvbscandialog.cpp:428 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:41 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:55 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "" #: dvb/dvbrecordingdialog.cpp:187 msgctxt "@title:column recording" msgid "Name" msgstr "" #: dvb/dvbrecordingdialog.cpp:281 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:289 msgctxt "@label recording" msgid "Name:" msgstr "" #: dvb/dvbrecordingdialog.cpp:302 msgctxt "@label tv show" msgid "Channel:" msgstr "" #: dvb/dvbrecordingdialog.cpp:312 msgctxt "@label tv show" msgid "Start:" msgstr "" #: dvb/dvbrecordingdialog.cpp:320 msgctxt "@label tv show" msgid "Duration:" msgstr "" #: dvb/dvbrecordingdialog.cpp:329 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:333 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:337 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:341 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanálat" #: dvb/dvbscandialog.cpp:256 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:266 msgid "Channel Scan" msgstr "" #: dvb/dvbscandialog.cpp:274 dvb/dvbscandialog.cpp:387 msgid "Start Scan" msgstr "Álggat ohcama" #: dvb/dvbscandialog.cpp:286 msgid "Signal:" msgstr "Signála:" #: dvb/dvbscandialog.cpp:291 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:296 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:309 msgid "Filter" msgstr "Silli" #: dvb/dvbscandialog.cpp:312 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:315 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:318 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:321 msgid "Provider:" msgstr "" #: dvb/dvbscandialog.cpp:329 msgid "Add Filtered" msgstr "" #: dvb/dvbscandialog.cpp:333 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:339 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:355 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:433 msgid "Stop Scan" msgstr "" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Šearbmadieđut" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Bádde dakkaviđi" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "" #: dvb/dvbtab.cpp:278 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "" #: dvb/dvbtab.cpp:290 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:300 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:359 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:363 dvb/dvbtab.cpp:373 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" kaffeine-1.2.2/po/se/CMakeLists.txt0000644000175000017500000000012711552636277016515 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(se ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ast/0000755000175000017500000000000011552636277014135 5ustar lxuserlxuserkaffeine-1.2.2/po/ast/kaffeine.po0000644000175000017500000006664711552636277016270 0ustar lxuserlxuser# Asturian translation for kaffeine # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the kaffeine package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-10-19 22:11+0100\n" "Last-Translator: Iñigo Varela \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2009-10-23 05:18+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Un reproductor de medio pa KDE con sofitu téunicu dixital de TV." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Los autores de Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Caltenimientu" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reproducir ficheru" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reproducir CD d'audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reproducir CD de vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reproducir DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV Dixital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurar Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mou de pantalla completa" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Short skip duration:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Long skip duration:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Ficheru" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Abrir URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reproducir CD d'audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reproducir CD de vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reproducir DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reproducir Carpeta DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Re&producir" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Llista de reproducción" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisión" #: mainwindow.cpp:333 msgid "&Settings" msgstr "Axu&stes" #: mainwindow.cpp:352 msgid "Start" msgstr "Aniciar" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reproducción" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Llista de reproducción" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisión" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Aniciar en mou pantalla completa" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opción obsoleta)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Reproducir canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Reproducir caberu canal sintonizáu de TV" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Dump dvb data (debug option)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Ficheros de URL a reproducir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Abrir URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Introducir una URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Salta a la posición" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Introducir posición:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Atrás" #: mediawidget.cpp:245 msgid "Play" msgstr "Reproducir" #: mediawidget.cpp:246 msgid "Pause" msgstr "Posar" #: mediawidget.cpp:253 msgid "Stop" msgstr "Parar" #: mediawidget.cpp:259 msgid "Next" msgstr "Siguiente" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mou de pantalla completa" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "off" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Xubir el volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Baxar el volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Silenciar volume" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Ratio d'aspeutu" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automáticu" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Axustar a la ventana" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Redimensionar automáticamente" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Off" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Tamañu Orixinal" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Duble tamañu" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Eslizador de volume" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Salta a la posición..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Saltar" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Saltar %1s haza atrás" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Saltar %1s haza alantre" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Volume Slider" msgid "Seek Slider" msgstr "Eslizador de volume" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Títulu" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítulu" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ángulu" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Camudar ente'l tiempu trescurríu y el restante" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Ficheros multimedia permitíos" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tolos ficheros" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Colar del mou pantalla completa" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Paráu" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silenciu activáu" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Silenciu desactiváu" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Posáu" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Reproduciendo" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Iñigo Varela" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "malditoastur@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Por favor, instala el plugin Qt SQLite" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Nun puede abrise la base de datos SQLite" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Númberu" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Editar" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Desaniciar" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circular esquierda" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circular drecha" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nome:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Númberu:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Orixe:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frecuencia (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbol rate (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulación:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Tasa FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarización:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Anchor de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC tasa LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Mou de tresmisión:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervalu de xixilancia:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Xerarquía:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID de PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Pid del video:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID de subtítulu:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Pid del teletextu:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID de rede:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID del fluxu de tresporte:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID del serviciu:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal d'audio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Mecíu:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configurar televisión" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Carpeta de grabaciones:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Esbillar Carpeta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Tiempu cambéu carpeta:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Esplorar caberos datos anovaos en %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Anovar datos d'esploración sobro Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "La to posición (namái ye necesario pa rotores USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Llatitú:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Llonxitú:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opciones xenerales" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Preséu %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Anovar datos d'esploración sobro Internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Descargando datos d'esploración" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "L'anovamientu de datos de gueta falló." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Esploración de datos anovada correutamente. Los cambeos fadrán\n" "efeutu dempués que zarres el diálogu de configuración." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nome: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mover Esquierda" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Reset" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mover Drecha" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Preséu non coneutáu." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cable" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoesplorar" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoesplorar con 167 kHz Offsets" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoesplorar Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoesplorar Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoesplorar Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tiempu d'espera del sintonizador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Orixe:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Nun hai fonte" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nome:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuración:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC Switch" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Posición Rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Configuración LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Opciones de LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Amestar satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posición" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Desaniciar satélite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "Banda C LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "Banda C multipuntu LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizáu" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Cambiar frecuencia (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Banda baxa LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Banda alta LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertical LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Guía de programa" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Grabando programación" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Guetar:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Aniciar" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Duración" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Títulu" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nun hai preseos disponibles." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nun hai preseos disponibles." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Grabando programación" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nuevu" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nome" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Editar la llista d'Entrada" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nome:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Aniciar" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Duración:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Fin:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repetir:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Enxamás" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diariamente" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Proveedor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canales" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Llimpiar" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Esplorar canal" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Aniciar esploración" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Señal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizáu:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtru" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Emisión nel aire" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Proveedor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Amestar Filtraos" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Amestar esbilláu" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultaos de la gueta" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Trespondedor actual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Parar esploración" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guía de programa" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Grabando programación" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Grabación instantáneo" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurar televisión..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Guetar:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Aniciada la grabación instantánea" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Detúvose la grabación instantánea" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Títulu" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Númberu pista" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Llista de reproducción temporal" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repetir" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Al debalu" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Amestar subtítulu" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Renomar" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Llista de reproducción ensin nome" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Ficheros de subtítulos:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" #~ msgid "Channel Settings" #~ msgstr "Configuración de la canal" #~ msgid "Name" #~ msgstr "Nome" #~ msgid "Edit" #~ msgstr "Editar" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Desaniciar" #~ msgid "Remove" #~ msgstr "Desaniciar" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Aniciu" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Aniciu:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nuevu" #~ msgid "Duration" #~ msgstr "Duración" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Afitar horariu de programa" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nome" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Refrescar" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "L'horariu del programa afitóse correchamente." #~ msgid "Cannot open %1." #~ msgstr "Nun puede abrise %1." #~ msgid "Unknown playlist format." #~ msgstr "Formatu de llista de reproducción desconocíu." #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Saltar 1min haza atrás" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Saltar 1min haza alantre" #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Mou Al Debalu" kaffeine-1.2.2/po/ast/CMakeLists.txt0000644000175000017500000000013011552636277016667 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ast ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/tr/0000755000175000017500000000000011552636277013773 5ustar lxuserlxuserkaffeine-1.2.2/po/tr/kaffeine.po0000644000175000017500000007236411552636277016117 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Serdar Soytetir , 2008, 2009, 2011. # Ozan Çağlayan , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-04 02:44+0200\n" "Last-Translator: Serdar Soytetir \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=1; plural=0;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE için dijital TV destekli çokluortam oynatıcı." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Kaffeine Yazarları" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Projeyi Yürüten" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Dosya Oynat" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Ses CD'si Oynat" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video CD Oynat" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD Oynat" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Dijital TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeine Uygulamasını Yapılandır" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Başlangıç görünüm kipi:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normal Kip" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Sade Kip" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Tam Ekran Kipi" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Son Ayarı Anımsa" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Kısa atlama süresi:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Uzun atlama süresi:" #: mainwindow.cpp:282 msgid "&File" msgstr "D&osya" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Adres Aç..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Ses CD'si Çal" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video CD Oynat" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD Video Oynat" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD Dizini Oynat" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Oynat" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Parça &Listesi" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televizyon" #: mainwindow.cpp:333 msgid "&Settings" msgstr "A&yarlar" #: mainwindow.cpp:352 msgid "Start" msgstr "Başlat" #: mainwindow.cpp:353 msgid "Playback" msgstr "Oynat" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Oynatma Listesi" #: mainwindow.cpp:356 msgid "Television" msgstr "Televizyon" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Tam ekran kipi ile başla" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(eskimiş seçenek)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "TV kanalını oynat" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Son ayarlanan TV kanalını oynat" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "dvb verisini bas (hata ayıklama seçeneği)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Oynatılacak dosyalar veya adresler" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Adres Aç" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Bir Adres Girin:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Konuma Atla" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Bir konum girin:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Önceki" #: mediawidget.cpp:245 msgid "Play" msgstr "Oynat" #: mediawidget.cpp:246 msgid "Pause" msgstr "Duraklat" #: mediawidget.cpp:253 msgid "Stop" msgstr "Dur" #: mediawidget.cpp:259 msgid "Next" msgstr "Sonraki" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Tam Ekran Kipi" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Sade Kip" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "kapalı" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Ses" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Sesi Arttır" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Sesi Azalt" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Sesi Kapat" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Deinterlace" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Görüntü Oranı" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Otomatik" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Pencereye Sığdır" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Otomatik Yeniden Boyutlandır" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Kapalı" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Özgün boyut" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "İki kat büyük" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Ses Ayar Çubuğu" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Konuma Atla..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Atla" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "%1 saniye geri git" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "%1 saniye ileri git" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Pozisyon Çubuğu" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menüyü Göster" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Başlık" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Bölüm" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Açı" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Kalan/Geçen süre gösterimi arasında geçiş yap" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Desteklenen Ortam Dosyaları" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tüm Dosyalar" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Tam Ekran Kipinden Çık" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Sade Kipten Çık" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Durduruldu" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Ses Kapalı" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Ses Açık" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Ses: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Deinterlacing Açık" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Deinterlacing Kapalı" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Duraklatıldı" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Oynatılıyor" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Serdar Soytetir" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "tulliana@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Lütfen Qt SQLite eklentisini kurun." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "SQLite veritabanı açılamıyor." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Kaffeine için iç araç." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Numara" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Düzenle" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Kaldır" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Sürükle bırak özelliğini kullanabilmeniz için kanallar numaralarına göre " "sıralanacak.\n" "Devam etmek istiyor musunuz?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Yatay" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Dikey" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Dairesel sol" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Dairesel sağ" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanalı düzenle" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "İsim:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Numara:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Kaynak:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekans (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Sembol oranı (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modülasyon:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC oranı:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizasyon:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bantgenişliği:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC oranı LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Aktarma kipi:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Korunacak aralık:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hiyerarşi:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT Kimliği:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video Kimliği:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Altyazı Kimliği:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teleteks Kimliği:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Ağ Kimliği:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Yayın akışını taşıma kimliği:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Servis Kimliği:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Ses kanalı:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Karıştırılmış:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Televizyonu Yapılandır" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Kayıt dizini:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Dizin Seç" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Zaman kaydırma dizini:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Başlangıç boşluğu (dk):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Bitiş boşluğu (dk):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "ISO 6937 yerine ISO 8859-1 karakter kodlamasını kullan:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Tarama dosyası en son %1 tarihinde güncellendi" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Tarama verisini İnternet üzerinden güncelle" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Konumunuz (sadece USALS çarkları için gerekli)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Enlem:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Boylam:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Genel Seçenekler" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Aygıt %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Tarama verisini İnternet üzerinden güncelle" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Tarama dosyası indiriliyor" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Tarama dosyası güncellenemedi." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Tarama dosyası başarıyla güncellendi. Değişiklikler\n" "yapılandırma penceresini kapattığınızda etkili olacaktır." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "İsim: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Sola Taşı" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Sıfırla" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Sağa Taşı" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Aygıt bağlı değil." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kablo" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Karasal yayın" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Otomatik Tara" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "167 kHz'lik ofsetlerle otomatik tara" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Otomatik Tara (Avustralya)" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Otomatik Tara (İtalya)" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Otomatik Tara (Tayvan)" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tuner zamanaşımı (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Kaynak:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Kaynak Yok" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "İsim:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Yapılandırma:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC Anahtarı" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS Çarkı" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Konum Çarkı" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 Ayarları" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB Ayarları" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Uydu Ekle" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Uydu" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Konum" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Uydu Kaldır" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Evrensel LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Çok Noktalı LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Özel LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frekans değiştir (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Düşük bant LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Yüksek bant LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Yatay LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Dikey LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Program Rehberi" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Kayıt Zamanlaması" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Ara:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Başlat" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Süre" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Başlık" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Uygun aygıt bulunamadı." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Uygun aygıt bulunamadı." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Kayıt Zamanlaması" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Yeni" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "İsim" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Zamanlama Girdisini Düzenle" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "İsim:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Başlat" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Süre:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Bitiş:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Tekrarla:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Asla" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Günlük" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Sağlayıcı" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanallar" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Temizle" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanal Tarama" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Taramayı Başlat" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sinyal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Ayarlandı:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtrele" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Şifresiz/Açık" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radyo" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Sağlayıcı" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Filtrelenmişi Ekle" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Seçileni Ekle" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Tarama Sonuçları" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Geçerli Transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Taramayı Durdur" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Program Rehberi" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Kayıt Zamanlaması" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Anında Kayıt" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Televizyonu Yapılandır..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Ara:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffenine şu anda program kaydediyor.\n" "Gerçekten uygulamayı kapatmak istiyor musunuz?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffenine için programlanmış kayıtlar var.\n" "Gerçekten uygulamayı kapatmak istiyor musunuz?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Anında Kayıt Başlatıldı" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Anında Kayıt Durduruldu" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Başlık" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Sanatçı" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Albüm" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Parça Sırası" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Uzunluk" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Geçici Oynatma Listesi" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Tekrarla" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Rastgele" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Altyazı Ekle" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Yeniden Adlandır" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Adsız Oynatma Listesi" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Altyazı Dosyaları" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Oynatma Listesi\n" "*.m3u|M3U Oynatma Listesi\n" "*.pls|PLS Oynatma Listesi" #~ msgid "Channel Settings" #~ msgstr "Kanal Ayarları" #~ msgid "Name" #~ msgstr "İsim" #~ msgid "Edit" #~ msgstr "Düzenle" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Kaldır" #~ msgid "Remove" #~ msgstr "Kaldır" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Başlangıç" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Başlangıç:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Yeni" #~ msgid "Channel" #~ msgstr "Kanal" #~ msgid "Duration" #~ msgstr "Süre" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Programı Zamanla" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "İsim" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Yenile" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Program başarılı bir şekilde zamanlandı." #~ msgid "Cannot open %1." #~ msgstr "%1 açılamadı." #~ msgid "Unknown playlist format." #~ msgstr "Bilinmeyen oynatma listesi biçimi." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Karıştır" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "1 dakika Geri Git" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "1 dakika İleri Git" #~ msgid "Scan data last updated
on %1" #~ msgstr "Tarama dosyası en son
%1 tarihinde güncellendi" #~ msgid "Remove All" #~ msgstr "Tümünü Sil" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgid "Navigation" #~ msgstr "Gezinme" #~ msgid "Recordings" #~ msgstr "Kayıtlar" #~ msgid "Edit Recording" #~ msgstr "Kaydı Düzenle" #~ msgid "No source" #~ msgstr "Kaynak yok" #~ msgid "Start scan" #~ msgstr "Taramayı başlat" #~ msgid "&View" #~ msgstr "&Görünüm" #~ msgid "&Player" #~ msgstr "&Oynatıcı" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Open file" #~ msgstr "Dosya aç" #~ msgid "Use right click to edit/delete" #~ msgstr "Düzenlemek/silmek için sağ tıklama menüsünü kullanın" #~ msgid "Channel search" #~ msgstr "Kanal arama" #~ msgid "Change icon" #~ msgstr "Simgeyi değiştir" #~ msgid "DVB Settings" #~ msgstr "DVB Ayarları" #~ msgid "Configure DVB" #~ msgstr "DVB Aygıtını Yapılandır" #~ msgid "Switch to Start Tab" #~ msgstr "Başlangıç Sekmesine Geç" #~ msgid "Switch to Player Tab" #~ msgstr "Oynatıcı Sekmesine Geç" #~ msgid "Switch to Playlist Tab" #~ msgstr "Parça Listesi Sekmesine Geç" #~ msgid "Switch to DVB Tab" #~ msgstr "DVB Sekmesine Geç" #~ msgid "Player" #~ msgstr "Oynatıcı" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Ana Denetimler" #~ msgid "Position Slider" #~ msgstr "Konum Çubuğu" #~ msgid "Tab Manager" #~ msgstr "Sekme Yöneticisi" kaffeine-1.2.2/po/tr/CMakeLists.txt0000644000175000017500000000012711552636277016533 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(tr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sr/0000755000175000017500000000000011552636277013772 5ustar lxuserlxuserkaffeine-1.2.2/po/sr/kaffeine.po0000644000175000017500000007256511552636277016121 0ustar lxuserlxuser# Translation of kaffeine.po into Serbian. # Slobodan Simic , 2009, 2010. # Dalibor Djuric , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-04-09 22:13+0200\n" "Last-Translator: Dalibor Djuric \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Generator: Lokalize 1.0\n" "X-Environment: kde\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Кафеин" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Медија плејер за КДЕ са подршком за дигиталну телевизију." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2010, аутори Кафеина" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Кристоф Пфистер" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Одржавалац" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Пусти фајл" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Пусти аудио ЦД" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Пусти видео ЦД" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Пусти ДВД" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Дигитална ТВ" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Подеси Кафеин" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Минималистички режим" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Минималистички режим" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Режим пуног екрана" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Мали прескок:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Велики прескок:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Фајл" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Отвори УРЛ" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Пусти аудио ЦД" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Пусти видео ЦД" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Пусти ДВД" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Пусти ДВД" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Пуштање" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Листа пуштања" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Телевизија" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Подешавање" #: mainwindow.cpp:352 msgid "Start" msgstr "Почетна" #: mainwindow.cpp:353 msgid "Playback" msgstr "Пуштање" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Листа пуштања" #: mainwindow.cpp:356 msgid "Television" msgstr "Телевизија" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Покрени у режиму пуног екрана" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(застарела опција)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Пусти ТВ канал" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Пусти последње подешен ТВ канал" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Попиши ДВБ податке (исправљачка опција)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Фајлови или УРЛ‑ови за пуштање" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Отвори УРЛ" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Унесите УРЛ:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Скочи на позицију" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Унесите позицију:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Претходно" #: mediawidget.cpp:245 msgid "Play" msgstr "Пусти" #: mediawidget.cpp:246 msgid "Pause" msgstr "Паузирај" #: mediawidget.cpp:253 msgid "Stop" msgstr "Заустави" #: mediawidget.cpp:259 msgid "Next" msgstr "Следеће" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Режим пуног екрана" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Минималистички режим" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "искључено" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Аудио" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Повећај јачину звука" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Смањи јачину звука" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Умукни звук" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Видео" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Расплићи" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Пропорција" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Аутоматски" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Уклопи у прозор" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Сам промени величину" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Искључено" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Оригинална величина" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Двострука величина" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Клизач јачине звука" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Скочи на позицију" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Скочи" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Скочи %1 сек. уназад" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Скочи %1 сек. унапред" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Клизач тражења" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Укљученост менија" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Наслов" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Поглавље" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Угао" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Пребацивање између приказа протеклог и преосталог времена" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Подржани медија фајлови" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Сви фајлови" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Напусти режим пуног екрана" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Напусти минималистички режим" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Заустављено" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Утишано" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Чујно" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Јачина: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Расплитање укључено" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Расплитање искључено" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Паузирано" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Пуштено" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Слободан Симић" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "slsimic@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Инсталирајте прикључак СКуЛајта за КуТ." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Не могу да отворим СКуЛајтову базу." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Интерна алатка за Кафеин." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "број" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Уреди" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Уклони" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "хоризонтална" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "вертикална" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Кружно лево" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Кружно десно" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Име:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Број:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Извор:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Фреквенција (MHz):" # http://en.wikipedia.org/wiki/Symbol_rate #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Модулациони проток (Bd):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Модулација:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "ФЕЦ проток:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Поларизација:" # http://en.wikipedia.org/wiki/Roll-off #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Фреквентни пад:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Опсег:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "ФЕЦ проток ниског приоритета:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Режим преноса:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Заштитни период:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Хијерархија:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "ПИД ПМТ‑а:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "ПИД видеа:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "ПИД титла:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "ПИД телетекста:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ИД мреже:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ИД преносног тока:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ИД сервиса:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Аудио канал:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Кодиран:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Подешавање телевизије" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Фасцикла за снимање:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Изаберите фасциклу" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Фасцикла за померај:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Подаци о скенирању ажурирани %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Освежи податке о скенирању са Интернета" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Ваш положај (потребно само за УСАЛС роторе)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Гео. ширина:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[Ј -90 ... 90 С]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Гео. дужина:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[З -180 ... 180 И]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Опште опције" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Уређај %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Освежи податке о скенирању са Интернета" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Преузимам податке о скенирању" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Неуспело освежавање података о скенирању." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Подаци о скенирању успешно ажурирани. Промене\n" "ће имати утицаја након што затворите дијалог за подешавање." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Име: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Помери улево" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Ресетуј" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Помери удесно" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Уређај није повезан." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "ДВБ‑Ц" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "ДВБ‑С2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "ДВБ‑С" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "ДВБ‑Т" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "АТСЦ" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Кабловска" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Земаљска" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Аутоскенирање" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Аутоскенирање са померајем од 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Аутоскенирање за Аустралију" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Аутоскенирање за Италију" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Аутоскенирање за Тајван" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "АТСЦ" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Прековреме бирача (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Извор:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Нема извора" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Име:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Подешавање:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Дајсек прекидач" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "УСАЛС ротор" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Позициони ротор" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Поставке ЛНБ‑а %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Поставке ЛНБ‑а" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Додај сателит" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Сателит" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Положај" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Уклони сателит" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Универзални ЛНБ" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C‑појасни ЛНБ" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C‑појасни вишеодредишни ЛНБ" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Посебан ЛНБ" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Фреквенција пребацивања (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Нископојасни ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Високопојасни ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Хоризонтални ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Вертикални ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "ЛОФ (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Програмски водич" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Распоред снимања" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Тражи:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 — %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Почетна" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "трајање" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "наслов" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Није нађен доступан уређај." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Није нађен доступан уређај." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Распоред снимања" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Ново" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "име" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Уреди унос распореда" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Име:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Канал:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Почетна" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Трајање:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Завршетак:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Понови:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "никад" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "дневно" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "провајдер" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "СНР" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Канали" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Очисти" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Скенирање канала" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Почни скенирање" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Сигнал:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "СНР:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Подешено:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Филтер" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Слободно за емитовање" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радио" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "ТВ" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Провајдер:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Додај филтрирано" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Додај изабрано" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Резултати скенирања" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Тренутни транспондер" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Заустави скенирање" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Програмски водич" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "ОСД" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Распоред снимања" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Тренутно снимање" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Подешавање телевизије" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Тражи:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Канал: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Тренутно снимање је покренуто" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Тренутно снимање је заустављено" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "наслов" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "извођач" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "албум" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "број нумере" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "трајање" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Привремена листа пуштања" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Понови" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Насумично" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Додај сателит" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Преименуј" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Неименована листа пуштања" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "ПИД титла:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|ИксСПФ листа\n" "*.m3u|М3У листа\n" "*.pls|ПЛС листа" kaffeine-1.2.2/po/sr/CMakeLists.txt0000644000175000017500000000012711552636277016532 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/et/0000755000175000017500000000000011552636277013756 5ustar lxuserlxuserkaffeine-1.2.2/po/et/kaffeine.po0000644000175000017500000007001711552636277016073 0ustar lxuserlxuser# translation of kaffeine.po to Estonian # Copyright (C) 2008 This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Marek Laane , 2008-2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-28 15:24+0300\n" "Last-Translator: Marek Laane \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: et\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE multimeediamängija digi-TV toetusega." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010: Kaffeine autorid" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Hooldaja" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Faili esitamine" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Audio-CD esitamine" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video-CD esitamine" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD esitamine" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 DigiTV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeine seadistamine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Režiim käivitamisel:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Tavaline režiim" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimaalne režiim" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Täisekraanirežiim" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Viimane seadistus jäetakse meelde" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Lühikese hüppe kestus:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Pika hüppe kestus:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fail" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Ava URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Audio CD esitamine" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video-CD esitamine" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD esitamine" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD kausta esitamine" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Esitus" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Esitusnimekiri" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisioon" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Seadistused" #: mainwindow.cpp:352 msgid "Start" msgstr "Käivita" #: mainwindow.cpp:353 msgid "Playback" msgstr "Taasesitus" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Esitusnimekiri" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisioon" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Käivitamine täisekraanirežiim" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(iganenud võti)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Telekanali esitamine" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Viimati vaadatud telekanali esitamine" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "DVB andmete salvestamine (silumisvalik)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Esitatavad failid või URL-id" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "URL-i avamine" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Sisesta URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Hüpe asukohta" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Asukoht:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Eelmine" #: mediawidget.cpp:245 msgid "Play" msgstr "Esitus" #: mediawidget.cpp:246 msgid "Pause" msgstr "Paus" #: mediawidget.cpp:253 msgid "Stop" msgstr "Peata" #: mediawidget.cpp:259 msgid "Next" msgstr "Järgmine" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Täisekraanirežiim" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimaalne režiim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "väljas" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Heli" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Heli juurde" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Heli maha" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Heli tummaks" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Üleralaotuse eemaldamine" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Mastaap (kuvasuhe)" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automaatne" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Sobitamine aknasse" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automaatne suuruse muutmine" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Väljas" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Algsuurus" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Topeltsuurus" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Helitugevuse liugur" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Hüppa asukohta..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Jäta vahele" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Hüppa %1 sek tagasi" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Hüppa %1 sek edasi" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Otsimisliugur" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menüü lülitamine" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Pealkiri" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Peatükk" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Nurk" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Lülitamine kulunud ja jäänud aja näitamise vahel" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Toetatud meediafailid" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Kõik failid" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Välju täisekraanirežiimist" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Välju minimaalsest režiimist" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Peatatud" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Heli välja" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Heli sisse" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Helitugevus: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Ülerealaotuse eemaldamine sees" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Ülerealaotuse eemaldamine väljas" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Paus" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Esitus" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Marek Laane" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "bald@smail.ee" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Palun paigalda Qt SQLite'i plugin." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "SQLite'i andmebaasi avamine nurjus." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Kaffeine sisemine tööriist" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Number" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Muuda" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Eemalda" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Kanalid sorditakse numbri järgi, et neid oleks võimalik lohistada.\n" "Kas jätkata?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horisontaalne" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikaalne" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Ringpolarisatsioon vastupäeva" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Rngpolarisatsioon päripäeva" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanali muutmine" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Nimi:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Number:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Allikas:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Sagedus (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Sümbolikiirus (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulatsioon:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC kiirus:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisatsioon:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Ribalaius:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC kiiruse LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Ülekandeviis:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Kaitseintervall:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarhia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Subtiitri PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teleteksti PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Võrgu ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transpordivoo ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Teenuse ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Helikanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Kodeeritud:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "TV seadistamine" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Salvestuste kataloog:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Vali kataloog" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Korduste kataloog:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Alguse lõtk (minutites):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Lõpu lõtk (minutites):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "ISO 8859-1 märgistiku kasutamine ISO 6937 asemel:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Uuringuandmeid uuendati viimati %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Uuringuandmete uuendamine internetist" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Sinu asukoht (vajalik ainult USALS rootori korral)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Laiuskraad:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Pikkuskraad:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Üldised valikud" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Seade %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Uuringuandmete uuendamine" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Uuringuandmete allalaadimine" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Uuringuandmete uuendamine nurjus." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Uuringuandmed said edukalt uuendatud.\n" "Muudatused rakenduvad pärast seadistustedialoogi sulgemist." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nimi: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Liiguta vasakule" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Lähtesta" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Liiguta paremale" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "seade pole ühendatud." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kaabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Maapealne" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automaatuuring" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automaatuuring 167 kHz nihkega" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Austraalia automaatuurimine" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Itaalia automaatuurimine" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Taiwani automaatuurimine" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tuuneri ajaületus (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Allikas:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Allikas puudub" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nimi:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Seadistus:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC lüliti" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS rootor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positsioonirootor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 seadistused" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB seadistused" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Lisa satelliit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelliit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Positsioon" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Eemalda satelliit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universaalne LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Kohandatud LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Lülitamissagedus (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Madalama sagedusriba LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Kõrgema sagedusriba LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horis. LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vert. LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Telekava" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Salvesta saade" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Otsing:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Algus" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Kestus" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Pealkiri" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Ühtegi seadet ei leitud." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Ühtegi seadet ei leitud." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Kava salvestamine" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Uus" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Nimi" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Kavakirje muutmine" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Nimi:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Algus:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Kestus:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Lõpp:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Kordus:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Mitte kunagi" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Iga päev" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Pakkuja" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanalid" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Puhasta" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanaliuuring" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Käivita uuring" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signaal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Häälestatud:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Tasuta vastuvõetav" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Raadio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Pakkuja:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Lisa filtreeritud" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Lisa valitud" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Uurimise tulemused" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Aktiivne transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Peata uuring" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Telekava" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Kava salvestamine" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Otsesalvestus" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "TV seadistamine..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Otsing:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine salvestab parajasti programme.\n" "Kas tõesti rakendus sulgeda?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeinel on peagi ette nähtud salvestamine.\n" "Kas tõesti rakendus sulgeda?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Otsesalvestus käivitatud" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Otsesalvestus peatatud" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Pealkiri" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Esitaja" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Raja number" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Pikkus" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Ajutine esitusnimekiri" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Kordus" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Juhuslik" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Lisa subtiitrid" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Nimeta ümber" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Nimetu esitusnimekiri" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Subtiitrifailid" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF esitusnimekiri\n" "*.m3u|M3U esitusnimekiri\n" "*.pls|PLS esitusnimekiri" #~ msgid "Channel Settings" #~ msgstr "Kanali seadistused" #~ msgid "Name" #~ msgstr "Nimi" #~ msgid "Edit" #~ msgstr "Muuda" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Eemalda" #~ msgid "Remove" #~ msgstr "Eemalda" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Algus" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Algus:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Uus" #~ msgid "Channel" #~ msgstr "Kanal" #~ msgid "Duration" #~ msgstr "Kestus" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Lisa saade kavasse" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nimi" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Uuenda" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Saade lisati edukalt kavasse." #~ msgid "Cannot open %1." #~ msgstr "%1 avamine nurjus." #~ msgid "Unknown playlist format." #~ msgstr "Tundmatu esitusnimekirja vorming." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Segatud" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Hüppa 1 min tagasi" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Hüppa 1 min edasi" #~ msgid "Scan data last updated
on %1" #~ msgstr "Uuringuandmeid uuendati viimati
%1" #~ msgid "Remove All" #~ msgstr "Eemalda kõik" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine mängija]
kofeiin sinu " #~ "töölaual!
" #~ msgid "Navigation" #~ msgstr "Liikumine" #~ msgid "Recordings" #~ msgstr "Salvestused" #~ msgid "Edit Recording" #~ msgstr "Muuda salvestist" #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Uus" #~ msgid "Start scan" #~ msgstr "Käivita uuring" #~ msgid "No source" #~ msgstr "Allikas puudub" #~ msgid "&View" #~ msgstr "&Vaade" #~ msgid "&Player" #~ msgstr "&Mängija" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Häälestamine valitud kanalile" #~ msgid "Open file" #~ msgstr "Ava fail" #~ msgid "Use right click to edit/delete" #~ msgstr "Paremklõps võimaldab muuta/kustutada" #~ msgid "Channel search" #~ msgstr "Kanaliotsing" #~ msgid "Change icon" #~ msgstr "Muuda ikooni" #~ msgid "DVB Settings" #~ msgstr "DVB seadistused" #~ msgid "Configure DVB" #~ msgstr "Seadista DVB" #~ msgid "Switch to Start Tab" #~ msgstr "Lülitu alguskaardile" #~ msgid "Switch to Player Tab" #~ msgstr "Lülitu mängijakaardile" #~ msgid "Switch to Playlist Tab" #~ msgstr "Lülitu esitusnimekirja kaardile" #~ msgid "Switch to DVB Tab" #~ msgstr "Lülitu DVB kaardile" #~ msgid "Player" #~ msgstr "Mängija" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Peamised juhtelemendid" #~ msgid "Position Slider" #~ msgstr "Asukohaliugur" #~ msgid "Tab Manager" #~ msgstr "Kaardihaldur" kaffeine-1.2.2/po/et/CMakeLists.txt0000644000175000017500000000012711552636277016516 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(et ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ru/0000755000175000017500000000000011552636277013774 5ustar lxuserlxuserkaffeine-1.2.2/po/ru/kaffeine.po0000644000175000017500000010404011552636277016103 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Maxim Tsepkov , 2008. # Evgeniy Ivanov , 2008. # Nick Shaforostoff , 2009. # Artem Sereda , 2009, 2010. # Alexander Potashev , 2009, 2010. # Yuri Efremov , 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-23 23:27+0300\n" "Last-Translator: Yuri Efremov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%" "10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Проигрыватель мультимедиа с поддержкой цифрового телевидения для KDE." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© Разработчики Kaffeine, 2007-2010" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Сопровождающий" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Воспроизвести файл" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Воспроизвести Audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Воспроизвести Video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Воспроизвести DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Цифровое телевидение" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Настроить Kaffeine..." #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Режим показа при запуске:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Обычный режим" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Минимальный режим" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Полноэкранный режим" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Запоминать последний режим" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Короткий шаг перемотки:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Длинный шаг перемотки:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Файл" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Открыть адрес..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Воспроизвести Audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Воспроизвести Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Воспроизвести DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Воспроизвести папку DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Воспроизведение" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Список воспроизведения" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Телевидение" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Настройка" #: mainwindow.cpp:352 msgid "Start" msgstr "Начало" #: mainwindow.cpp:353 msgid "Playback" msgstr "Воспроизведение" # убрал "Список воспроизведения", чтобы высота главного окна Kaffeine не была слишком большой (иначе возникают проблемы при разрешении экрана 1024x600) #: mainwindow.cpp:354 msgid "Playlist" msgstr "Список" #: mainwindow.cpp:356 msgid "Television" msgstr "Телевидение" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Запустить в полноэкранном режиме" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(устаревший параметр)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Смотреть ТВ канал" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Смотреть последний настроенный ТВ канал" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Дамп данных DVB (отладочная команда)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Воспроизвести файлы или адреса" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Открытие адреса URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Введите адрес:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Переход ко времени" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Введите время:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Предыдущий" #: mediawidget.cpp:245 msgid "Play" msgstr "Воспроизвести" #: mediawidget.cpp:246 msgid "Pause" msgstr "Пауза" #: mediawidget.cpp:253 msgid "Stop" msgstr "Стоп" #: mediawidget.cpp:259 msgid "Next" msgstr "Следующий" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Полноэкранный режим" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Минимальный режим" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "выкл." #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Звук" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Увеличить громкость" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Уменьшить громкость" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Выключить звук" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Видео" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Подавление черезстрочности" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Соотношение сторон" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Автоматически" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Уместить в окне" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Подобрать размер" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Выкл." #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Исходный размер" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Двойной размер" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Регулятор громкости" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Перейти ко времени..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Перемотка" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Отмотать на %1 с назад" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Перемотать на %1 с вперёд" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Ползунок поиска" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Показать меню" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Заголовок" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Глава" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ракурс" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Показать, сколько прошло или осталось времени" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Поддерживаемые файлы" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Все файлы" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Выйти из полноэкранного режима" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Выйти из минимального режима" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Остановлено" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Звук выключен" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Звук включён" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Громкость: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Подавление черезстрочности включено" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Подавление черезстрочности выключено" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Приостановлено" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Воспроизведение" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Максим Цепков,Евгений Болотов,Николай Ерёмин,Стёпа Семенуха" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" "azrael.com@gmail.com,lordinferius@gmail.com,doktorkster@gmail.com," "semenukha@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Установите модуль SQLite для Qt" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Не удалось открыть базу данных SQLite" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Внутренняя утилита для Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Номер" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Изменить" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Удалить" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Каналы будут отсортированы по номеру, чтобы их пункты можно было " "перетаскивать.\n" "Продолжить?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Горизонтальная" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Вертикальная" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Левая круговая" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Правая круговая" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Редактировать канал" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Имя:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Номер:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Источник:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Частота (МГц):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Скорость передачи (кСимв/с)" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Модуляция:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Скорость FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Поляризация:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Спад:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Диапазон:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Скорость низкоприоритетной FEC:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Режим передачи:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Полоса расфильтровки:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Иерархия:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID видео:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID субтитра:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID телетекста:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Идентификатор сети:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Идентификатор транспортного потока:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Идентификатор сервиса:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Канал звука:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Шифрование:" # https://bugs.kde.org/show_bug.cgi?id=250217 #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Настройка телевидения" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Папка для записи:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Выбрать папку" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Папка для временно́го сдвига:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Использовать кодировку ISO 8859-1 вместо ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Данные поиска последний раз обновлялись %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Обновить данные поиска через Интернет" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Ваше местонахождение (только для ротора USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Широта:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[Ю −90 ... 90 С]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Долгота:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[З −180 ... 180 В]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Основные настройки" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Устройство %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Обновить данные поиска" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Загрузка данных поиска" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Не удалось обновить данные поиска." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Данные поиска обновлены. Изменения вступят в силу\n" "после закрытия диалога настройки." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Имя: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Влево" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Сброс" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Вправо" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Устройство не подключено." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Кабельное" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Эфирное" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Автопоиск" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Автопоиск с шагом 167 кГц" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Автопоиск по Австралии" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Автопоиск по Италии" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Автопоиск по Тайваню" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Тайм-аут тюнера (мс)" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Источник:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Нет источника" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Имя:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Настройка:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Переключатель DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Ротор USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Ротор позиционера" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Параметры LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Параметры конвертора" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Добавить спутник" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Спутник" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Координаты" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Удалить спутник" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Универсальный конвертор" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-диапазон конвертора" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "Многоканальный конвертор C-диапазона" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Пользовательский LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Частота переключения (МГц)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Потеря кадра нижнего диапазона (МГц)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Потеря кадра верхнего диапазона (МГц)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Потеря горизонтального кадра (МГц)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Потеря вертикального кадра (МГц)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "Потеря кадра (МГц)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Программа передач" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Запись передачи" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Поиск:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Начало" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Длительность" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Заголовок" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Не найдено подходящего устройства." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Не найдено подходящего устройства." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Планирование записи" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Создать" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Имя" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Изменить расписание" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Имя:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Канал:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Начало" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Длительность:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Конец:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Повторять:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Никогда" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Ежедневно" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Провайдер" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "ОСШ" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Каналы" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Очистить" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Поиск каналов" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Начать поиск" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Сигнал:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "ОСШ:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Настроено:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Фильтр" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Некодированные" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радио" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "ТВ" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Провайдер:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Добавить отфильтрованные" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Добавить выбранные" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Результаты поиска" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Текущий транспондер" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Остановить поиск" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Программа передач" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Индикация на экране" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Планирование записи" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Немедленная запись" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Настроить телевидение..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Поиск:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Канал: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine сейчас выполняет запись телепрограмм.\n" "Вы действительно хотите закрыть приложение?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "В расписании Kaffeine имеются пункты записи телепрограмм.\n" "Вы действительно хотите закрыть приложение?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Запись начата" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Запись прекращена" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Заголовок" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Исполнитель" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Альбом" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Номер дорожки" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Длина" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Временный список воспроизведения" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Повтор" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Случайное" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Добавить субтитры" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Переименовать" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Безымянный список воспроизведения" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Файлы субтитров" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Список воспроизведения XSPF\n" "*.m3u|Список воспроизведения M3U\n" "*.pls|Список воспроизведения PLS" #~ msgid "Channel Settings" #~ msgstr "Настройка канала" #~ msgid "Name" #~ msgstr "Имя" #~ msgid "Edit" #~ msgstr "Изменить" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Удалить" #~ msgid "Remove" #~ msgstr "Удалить" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Начать" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Начало:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Создать" #~ msgid "Channel" #~ msgstr "Канал" #~ msgid "Duration" #~ msgstr "Длительность" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Запланировать программу" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Имя" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Обновить" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Планирование программы выполнено." #~ msgid "Cannot open %1." #~ msgstr "Не удалось открыть %1." #~ msgid "Unknown playlist format." #~ msgstr "Неизвестный формат списка воспроизведения." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "В случайном порядке" #, fuzzy #~| msgid "Skip 1min Backward" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Отмотать на 1 мин назад" #, fuzzy #~| msgid "Skip 1min Forward" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Перемотать на 1 мин вперёд" #~ msgid "Remove All" #~ msgstr "Удалить всё" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Проигрыватель Kaffeine]
кофеин для " #~ "вашего рабочего стола!
" #~ msgid "Navigation" #~ msgstr "Перемещение" #~ msgid "Recordings" #~ msgstr "Записи" #~ msgid "Edit Recording" #~ msgstr "Редактировать запись" #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Создать" #~ msgid "Start scan" #~ msgstr "Начать сканирование" #~ msgid "No source" #~ msgstr "Нет источника" #~ msgid "&View" #~ msgstr "&Вид" #~ msgid "&Player" #~ msgstr "&Проигрыватель" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "Удалить канал" #~ msgid "Open file" #~ msgstr "Открыть файл" #~ msgid "Use right click to edit/delete" #~ msgstr "Щелчок правой кнопкой для редактирования/удаления" #~ msgid "Channel search" #~ msgstr "Поиск канала" #~ msgid "Change icon" #~ msgstr "Изменить значок" #~ msgid "DVB Settings" #~ msgstr "Настройки DVB" #~ msgid "Configure DVB" #~ msgstr "Настроить DVB" #~ msgid "Player" #~ msgstr "Проигрыватель" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "Основные настройки" #~ msgid "Position Slider" #~ msgstr "Позиция" #~ msgid "Tab Manager" #~ msgstr "Менеджер вкладок" kaffeine-1.2.2/po/ru/CMakeLists.txt0000644000175000017500000000012711552636277016534 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ru ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/it/0000755000175000017500000000000011552636277013762 5ustar lxuserlxuserkaffeine-1.2.2/po/it/kaffeine.po0000644000175000017500000006707711552636277016113 0ustar lxuserlxuser# translation of kaffeine.po to Italian # Copyright (C) 2008 Free Software Foundation, Inc. # # Vincenzo Reale , 2008, 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-17 09:40+0100\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-Language: Italian\n" "X-Poedit-Country: ITALY\n" "X-Generator: Lokalize 1.2\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Un lettore multimediale per KDE con supporto per la TV digitale." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Gli autori di Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Responsabile" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Riproduci file" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Riproduci CD audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Riproduci CD video" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Riproduci DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV digitale" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configura Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Modalità di visualizzazione all'avvio:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Modalità normale" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Modalità minimale" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Modalità a schermo intero" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Ricorda le ultime impostazioni" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Durata del salto breve:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Durata del salto lungo:" #: mainwindow.cpp:282 msgid "&File" msgstr "&File" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Apri URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Riproduci CD audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Riproduci CD video" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Riproduci DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Riproduci cartella DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Riproduci" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Sca&letta" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisione" #: mainwindow.cpp:333 msgid "&Settings" msgstr "Impo&stazioni" #: mainwindow.cpp:352 msgid "Start" msgstr "Avvio" #: mainwindow.cpp:353 msgid "Playback" msgstr "Riproduci" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Scaletta" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisione" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Avvia in modalità a schermo intero" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opzione deprecata)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Riproduci canale TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Riproduci l'ultimo canale TV sintonizzato" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Estrai dati dvb (opzione di debug)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "File o URL da riprodurre" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Apri URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Inserisci URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Salta alla posizione" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Inserisci una posizione:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Precedente" #: mediawidget.cpp:245 msgid "Play" msgstr "Riproduci" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Ferma" #: mediawidget.cpp:259 msgid "Next" msgstr "Successivo" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Modalità a schermo intero" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Modalità minimale" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "spento" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Aumenta volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Riduci volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Silenzia volume" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Deinterlaccia" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proporzioni" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatico" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Adatta alla finestra" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Ridimensionamento automatico" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Spento" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Dimensioni originali" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dimensioni doppie" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Cursore del volume" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Salta alla posizione..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Salta" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Salta %1s all'indietro" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Salta %1s in avanti" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Cursore della posizione" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Attiva menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titolo" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capitolo" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Angolo" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Passa dalla visualizzazione del tempo trascorso a quello rimanente" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "File multimediali supportati" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tutti i file" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Esci dalla modalità a schermo intero" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Esci dalla modalità minimale" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Fermato" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silenzio" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Rimuovi silenzio" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Deinterlacciamento attivato" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Deinterlacciamento disattivato" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "In pausa" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Riproduzione" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vincenzo Reale" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "smart2128@baslug.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Installa l'estensione SQLite per Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Impossibile aprire il database SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilità interna per Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canale" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Numero" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Modifica" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Rimuovi" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "I canali saranno ordinati numericamente per consentire il trascinamento e " "rilascio.\n" "Vuoi continuare?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Orizzontale" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Verticale" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circolare sinistro" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circolare destro" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canale" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nome:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Numero:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Sorgente:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequenza (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Velocità di simbolo (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulazione:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Rapporto FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizzazione:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Rapporto FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Modalità di trasmissione:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervallo di guardia:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Gerarchia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID video:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID sottotitoli:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID Televideo:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID rete:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID trasporto del flusso:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID servizio:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canale audio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Disturbato:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configura televisione" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Cartella delle registrazioni:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Seleziona cartella" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Cartella delle differite:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Margine iniziale (minuti):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Margine finale (minuti):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usa set di caratteri ISO 8859-1 al posto di ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Dati di scansione aggiornati il %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Aggiorna i dati di scansione via Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "La tua posizione (necessaria solo per rotore USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitudine:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitudine:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opzioni generali" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositivo %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Aggiorna i dati di scansione" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Scaricamento dati di scansione" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Aggiornamento dei dati di scansione non riuscito." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Dati di scansione aggiornati correttamente. I cambiamenti avranno\n" "effetto dopo che avrai chiuso la finestra di configurazione." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nome: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Sposta a sinistra" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Ripristina" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Sposta a destra" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositivo non connesso." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cavo" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Scansione automatica" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Scansione automatica con scostamenti di 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Scansione automatica Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Scansione automatica Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Scansione automatica Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Fuori tempo massimo sintonizzatore (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Sorgente:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Nessuna sorgente" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nome:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configurazione:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Commutatore DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotore USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Posizioni del rotore" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Impostazioni LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Impostazioni LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Aggiungi satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posizione" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Rimuovi satellite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universale" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB banda C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB banda C multipunto" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizzato" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frequenza di commutazione (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF banda bassa (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF banda alta (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF orizzontale (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF verticale (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guida ai programmi" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Registra spettacolo" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Cerca:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Avvio" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Durata" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titolo" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Non è stato trovato alcun dispositivo disponibile." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Non è stato trovato alcun dispositivo disponibile." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Pianificazione di registrazione" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Nuova" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Nome" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Modifica voce di pianificazione" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Nome:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Canale:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Inizio:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Durata:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Fine:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Ripeti:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Mai" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Giornalmente" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Fornitore" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canali" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Cancella" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Scansione del canale" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Avvia scansione" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Segnale:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizzato:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtro" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "In chiaro" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Fornitore:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Aggiungi filtrati" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Aggiungi selezionati" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Risultati della scansione" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Trasponditore corrente" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Ferma scansione" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guida ai programmi" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Pianificazione di registrazione" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Registrazione immediata" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configura televisione..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Cerca:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canale: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine sta registrando dei programmi.\n" "Vuoi davvero chiudere l'applicazione?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine ha delle registrazioni pianificate.\n" "Vuoi davvero chiudere l'applicazione?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Registrazione immediata avviata" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Registrazione immediata fermata" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titolo" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Numero traccia" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Durata" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Scaletta temporanea" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Ripeti" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Casuale" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Aggiungi sottotitoli" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Rinomina" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Scaletta senza nome" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "File di sottotitoli" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Scaletta XSPF\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" #~ msgid "Channel Settings" #~ msgstr "Impostazioni del canale" #~ msgid "Name" #~ msgstr "Nome" #~ msgid "Edit" #~ msgstr "Modifica" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Rimuovi" #~ msgid "Remove" #~ msgstr "Rimuovi" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Inizio" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Inizio:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nuova" #~ msgid "Duration" #~ msgstr "Durata" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Pianifica programma" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nome" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Aggiorna" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Programma pianificato correttamente." #~ msgid "Cannot open %1." #~ msgstr "Impossibile aprire %1." #~ msgid "Unknown playlist format." #~ msgstr "Formato della scaletta sconosciuto." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Mescola" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Salta 1min all'indietro" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Salta 1min in avanti" #~ msgid "Scan data last updated
on %1" #~ msgstr "Ultimo aggiornamento dei dati di scansione
il %1" #~ msgid "Remove All" #~ msgstr "Rimuovi tutti" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Lettore Kaffeine]
caffeina per il " #~ "tuo desktop!
" #~ msgid "Navigation" #~ msgstr "Navigazione" #~ msgid "Recordings" #~ msgstr "Registrazioni" #~ msgid "Edit Recording" #~ msgstr "Modifica registrazione" kaffeine-1.2.2/po/it/CMakeLists.txt0000644000175000017500000000012711552636277016522 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(it ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/eo/0000755000175000017500000000000011552636277013751 5ustar lxuserlxuserkaffeine-1.2.2/po/eo/kaffeine.po0000644000175000017500000005634711552636277016100 0ustar lxuserlxuser# Translation of kaffeine into esperanto. # Axel Rousseau , 2009. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-11-15 12:06+0100\n" "Last-Translator: Axel Rousseau \n" "Language-Team: esperanto \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: pology\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Prizorganto" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:282 msgid "&File" msgstr "&Dosiero" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Malfermu URLon" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:322 msgid "&Playback" msgstr "" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "A&gordo" #: mainwindow.cpp:352 msgid "Start" msgstr "Lanĉi" #: mainwindow.cpp:353 msgid "Playback" msgstr "Ludado" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Ludlisto" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Malfermu URLon" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Entajpu URLon:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Pozicio" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "Antaŭa" #: mediawidget.cpp:245 msgid "Play" msgstr "Ludi" #: mediawidget.cpp:246 msgid "Pause" msgstr "Paŭzi" #: mediawidget.cpp:253 msgid "Stop" msgstr "Halti" #: mediawidget.cpp:259 msgid "Next" msgstr "Sekva" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Audio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Sono" #: mediawidget.cpp:296 #, fuzzy #| msgid "Increase Volume" msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Pliigi la laŭtecon" #: mediawidget.cpp:302 #, fuzzy #| msgid "Decrease Volume" msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Malpliigi la laŭtecon" #: mediawidget.cpp:307 #, fuzzy #| msgid "Mute Volume" msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Mutigi la laŭtecon" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 #, fuzzy #| msgctxt "aspect ratio" #| msgid "4:3" msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 #, fuzzy #| msgctxt "aspect ratio" #| msgid "16:9" msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select Folder" msgid "Seek Slider" msgstr "Elekti leterujon" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "Title" msgctxt "dvd navigation" msgid "Title" msgstr "Titolo" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 #, fuzzy #| msgid "Angle" msgctxt "dvd navigation" msgid "Angle" msgstr "Angulo" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Axel Rousseau" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "axel@esperanto-jeunes.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanalo" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Numero" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Redakti" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Forigi" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontala" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikala" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanalo" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nomo:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Nombro:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Elekti leterujon" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitudo:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitudo:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Ĝeneralaj opcioj" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, fuzzy, kde-format #| msgid "Pages: %1" msgid "Name: %1" msgstr "Paĝoj: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Movi maldekstren" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Restarigu" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Movi dekstren" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nomo:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Pozicio" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Serĉi:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Lanĉi" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Daŭro" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Titolo" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nomo" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nomo:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanalo:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Lanĉi" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Daŭro:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Fino:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Ripeto:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 #, fuzzy msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, fuzzy, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanaloj" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtrilo" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Serĉi:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "Title" msgctxt "playlist track" msgid "Title" msgstr "Titolo" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Numero" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Playlist" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Ludlisto" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Radio" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Playlist" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Ludlisto" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #~ msgid "Name" #~ msgstr "Nomo" #~ msgid "Edit" #~ msgstr "Redakti" #~ msgid "Remove" #~ msgstr "Forigi" #, fuzzy #~| msgctxt "City name (optional, probably does not need a translation)" #~| msgid "Berlin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Berlino" #, fuzzy #~| msgctxt "City name (optional, probably does not need a translation)" #~| msgid "Berlin" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Berlino" #~ msgid "Duration" #~ msgstr "Daŭro" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nomo" kaffeine-1.2.2/po/eo/CMakeLists.txt0000644000175000017500000000012711552636277016511 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(eo ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sr@latin/0000755000175000017500000000000011552636277015122 5ustar lxuserlxuserkaffeine-1.2.2/po/sr@latin/kaffeine.po0000644000175000017500000006506511552636277017246 0ustar lxuserlxuser# Translation of kaffeine.po into Serbian. # Slobodan Simic , 2009, 2010. # Dalibor Djuric , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-04-09 22:13+0200\n" "Last-Translator: Dalibor Djuric \n" "Language-Team: Serbian \n" "Language: sr@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Generator: Lokalize 1.0\n" "X-Environment: kde\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Medija plejer za KDE sa podrškom za digitalnu televiziju." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2010, autori Kaffeinea" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Kristof Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Održavalac" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Pusti fajl" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Pusti audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Pusti video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Pusti DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitalna TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Podesi Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Minimalistički režim" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimalistički režim" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Režim punog ekrana" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Mali preskok:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Veliki preskok:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fajl" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Otvori URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Pusti audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Pusti video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Pusti DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Pusti DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Puštanje" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista puštanja" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televizija" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Podešavanje" #: mainwindow.cpp:352 msgid "Start" msgstr "Početna" #: mainwindow.cpp:353 msgid "Playback" msgstr "Puštanje" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista puštanja" #: mainwindow.cpp:356 msgid "Television" msgstr "Televizija" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Pokreni u režimu punog ekrana" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(zastarela opcija)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Pusti TV kanal" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Pusti poslednje podešen TV kanal" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Popiši DVB podatke (ispravljačka opcija)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fajlovi ili URL‑ovi za puštanje" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Otvori URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Unesite URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Skoči na poziciju" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Unesite poziciju:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Prethodno" #: mediawidget.cpp:245 msgid "Play" msgstr "Pusti" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauziraj" #: mediawidget.cpp:253 msgid "Stop" msgstr "Zaustavi" #: mediawidget.cpp:259 msgid "Next" msgstr "Sledeće" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Režim punog ekrana" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimalistički režim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "isključeno" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Povećaj jačinu zvuka" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Smanji jačinu zvuka" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Umukni zvuk" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Rasplići" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proporcija" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatski" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Uklopi u prozor" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Sam promeni veličinu" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Isključeno" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Originalna veličina" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dvostruka veličina" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Klizač jačine zvuka" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Skoči na poziciju" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Skoči" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Skoči %1 sek. unazad" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Skoči %1 sek. unapred" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Klizač traženja" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Uključenost menija" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Naslov" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Poglavlje" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ugao" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Prebacivanje između prikaza proteklog i preostalog vremena" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Podržani medija fajlovi" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Svi fajlovi" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Napusti režim punog ekrana" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Napusti minimalistički režim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Zaustavljeno" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Utišano" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Čujno" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Jačina: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Rasplitanje uključeno" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Rasplitanje isključeno" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pauzirano" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Pušteno" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Slobodan Simić" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "slsimic@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Instalirajte priključak SQLitea za Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Ne mogu da otvorim SQLiteovu bazu." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Interna alatka za Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "broj" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Uredi" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Ukloni" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "horizontalna" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "vertikalna" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Kružno levo" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Kružno desno" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Ime:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Broj:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Izvor:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvencija (MHz):" # http://en.wikipedia.org/wiki/Symbol_rate #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Modulacioni protok (Bd):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulacija:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC protok:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizacija:" # http://en.wikipedia.org/wiki/Roll-off #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Frekventni pad:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Opseg:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC protok niskog prioriteta:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Režim prenosa:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Zaštitni period:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hijerarhija:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID PMT‑a:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID videa:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID titla:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID teleteksta:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID mreže:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID prenosnog toka:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID servisa:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audio kanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Kodiran:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Podešavanje televizije" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Fascikla za snimanje:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Izaberite fasciklu" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Fascikla za pomeraj:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Podaci o skeniranju ažurirani %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Osveži podatke o skeniranju sa Interneta" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Vaš položaj (potrebno samo za USALS rotore)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Geo. širina:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[J -90 ... 90 S]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Geo. dužina:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Z -180 ... 180 I]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opšte opcije" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Uređaj %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Osveži podatke o skeniranju sa Interneta" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Preuzimam podatke o skeniranju" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Neuspelo osvežavanje podataka o skeniranju." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Podaci o skeniranju uspešno ažurirani. Promene\n" "će imati uticaja nakon što zatvorite dijalog za podešavanje." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Ime: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Pomeri ulevo" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Resetuj" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Pomeri udesno" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Uređaj nije povezan." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB‑C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB‑S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB‑S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB‑T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kablovska" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Zemaljska" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoskeniranje" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoskeniranje sa pomerajem od 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoskeniranje za Australiju" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoskeniranje za Italiju" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoskeniranje za Tajvan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Prekovreme birača (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Izvor:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Nema izvora" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Ime:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Podešavanje:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC prekidač" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Pozicioni rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Postavke LNB‑a %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Postavke LNB‑a" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Dodaj satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Položaj" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Ukloni satelit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Univerzalni LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C‑pojasni LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C‑pojasni višeodredišni LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Poseban LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frekvencija prebacivanja (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Niskopojasni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Visokopojasni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontalni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikalni LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Programski vodič" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Raspored snimanja" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Traži:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 — %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Početna" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "trajanje" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "naslov" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nije nađen dostupan uređaj." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nije nađen dostupan uređaj." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Raspored snimanja" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Novo" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "ime" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Uredi unos rasporeda" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Ime:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Početna" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Trajanje:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Završetak:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Ponovi:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "nikad" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "dnevno" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "provajder" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanali" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Očisti" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Skeniranje kanala" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Počni skeniranje" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Podešeno:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Slobodno za emitovanje" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Provajder:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Dodaj filtrirano" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Dodaj izabrano" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Rezultati skeniranja" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Trenutni transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Zaustavi skeniranje" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programski vodič" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Raspored snimanja" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Trenutno snimanje" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Podešavanje televizije" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Traži:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Trenutno snimanje je pokrenuto" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Trenutno snimanje je zaustavljeno" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "naslov" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "izvođač" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "broj numere" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "trajanje" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Privremena lista puštanja" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Ponovi" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Nasumično" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Dodaj satelit" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Preimenuj" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Neimenovana lista puštanja" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "PID titla:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF lista\n" "*.m3u|M3U lista\n" "*.pls|PLS lista" kaffeine-1.2.2/po/sr@latin/CMakeLists.txt0000644000175000017500000000013511552636277017661 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sr@latin ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/nds/0000755000175000017500000000000011552636277014132 5ustar lxuserlxuserkaffeine-1.2.2/po/nds/kaffeine.po0000644000175000017500000007222711552636277016254 0ustar lxuserlxuser# Translation of kaffeine4.po to Low Saxon # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Sönke Dibbern , 2008, 2009. # Manfred Wiese , 2009, 2010. # msgid "" msgstr "" "Project-Id-Version: kaffeine4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-12-17 08:33+0100\n" "Last-Translator: Manfred Wiese \n" "Language-Team: Low Saxon \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "Language: nds\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "En Medienspeler för KDE, de Digitaalfeernsehn ünnerstütt" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007-2010, de Kaffeine-Schrievers" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Pleger" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Datei afspelen" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Klang-CD afspelen" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Video-CD afspelen" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD afspelen" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitaalfeernsehn" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeine instellen" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Minimaalbedrief" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimaalbedrief" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Heelschirmbedrief" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Kort Jumpduer:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Lang Jumpduer:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Datei" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Adress opmaken..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Audio-CD afspelen" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Video-CD afspelen" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD afspelen" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD-Orner afspelen" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Afspelen" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Afspee&llist" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Feernsehn" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Instellen" #: mainwindow.cpp:352 msgid "Start" msgstr "Anfangen" #: mainwindow.cpp:353 msgid "Playback" msgstr "Afspelen" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Afspeellist" #: mainwindow.cpp:356 msgid "Television" msgstr "Feernsehn" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "In Heelschirmbedrief starten" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(överhaalt Optschoon)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Feernsehprogramm wiesen" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Tolest instellt Feernsehprogramm afspelen" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "DVB-Daten utgeven (Fehlersöök-Optschoon)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Dateien oder URLs för't Afspelen" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Adress opmaken" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Adress (URL) ingeven:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Na Steed jumpen" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Steed ingeven:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Verleden" #: mediawidget.cpp:245 msgid "Play" msgstr "Afspelen" #: mediawidget.cpp:246 msgid "Pause" msgstr "Anhollen" #: mediawidget.cpp:253 msgid "Stop" msgstr "Ophollen" #: mediawidget.cpp:259 msgid "Next" msgstr "Nakamen" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Heelschirmbedrief" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimaalbedrief" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "ut" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Klang" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Luder maken" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Lieser maken" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Stillmaken" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Utflechten" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Bildproportschoon" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automaatsch" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Na Finster topassen" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Grött automaatsch topassen" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Ut" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Orginaalgrött" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dubbelt Grött" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Luutstärkschuver" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Na Steed jumpen..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Jumpen" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "%1s torüchjumpen" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "%1s vörutjumpen" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Söökschuver" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Menü an-/utmaken" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitel" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Winkel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Ansicht twischen aflopen un nablieven Tiet wesseln" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Ünnerstütt Mediendateien" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "All Dateien" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Heelschirmbedrief utmaken" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Minimaalbedrief utmaken" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Ophollen" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "\"Still\" an" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "\"Still\" ut" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Luutstärk: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Utflechten an" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Utflechten ut" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Anhollen" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Bi to Afspelen" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Sönke Dibbern, Manfred Wiese" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "s_dibbern@web.de, m.j.wiese@web.de" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Bitte dat SQLite-Moduul för Qt installeren." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "SQLite-Datenbank lett sik nich opmaken." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Intern Hülpprogramm för Kaffeine" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanaal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Bewerken" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Wegmaken" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Kimmrecht" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Pielrecht" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Linksdreihen" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Rechtsdreihen" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanaal bewerken" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Naam:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Born:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequenz (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Aftastwedderhalen (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulatschoon:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC-Wedderhalen:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisatschoon:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bandbreed:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC-LP-Wedderhalen:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Överdreegmetood:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Schuultiet:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Struktuur:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Ünnertitel-PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Videotext-PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Nettwark-PID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Överdreegstroom-ID:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Deenst-ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Klangkanaal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Verslötelt:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Feernsehn instellen" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Opnahm-Orner:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Orner utsöken" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Tietversetten-Orner:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Tekensett ISO 8859-1 ansteed vun ISO 6937 bruken:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Söökloopdaten tolest opfrischt op den %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Söökloopdaten ut't Internet opfrischen" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Dien Steed (bloots för USALS-Antennendreihers)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Breed:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Längd:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 O]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Allmeen Optschonen" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Reedschap %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Söökloopdaten ut't Internet opfrischen" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Söökdaten warrt daallaadt" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Söökdaten laat sik nich opfrischen." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Söökdaten mit Spood opfrischt. De Ännern warrt na't\n" "Tomaken vun dissen Instellendialoog övernahmen." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Naam: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Na links" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Torüchsetten" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Na rechts" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Reedschap nich tokoppelt." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kavel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestersch" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automaatsch Söök" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automaatsch Söök mit 167 kHz Versatz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automaatsch Söök (Australien)" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automaatsch Söök (Italien)" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automaatsch Söök (Taiwan)" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Insteller-Tiet (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Born:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Keen Born" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Naam:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Instellen:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC-Schalter" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-Antennendreiher" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positschoon-Antennendreiher" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB-%1-Instellen" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-Instellen" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Satellit tofögen" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Positschoon" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Satellit wegmaken" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universaal-LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-Band-LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-Band-Mehrpünkt-LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Sünner-LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Wesselfrequenz (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Sietband-LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Hoochband-LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Kimmrecht LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Pielrecht LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Programm" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Opnahmplaan" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Söken:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Duer" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Keen passen Reedschap funnen" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Keen passen Reedschap funnen" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Opnahmplaan" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nieg" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Naam" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Plaanindrag bewerken" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Naam:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanaal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Anfangen" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Duer:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Enn:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Wedderhalen:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nienich" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Elk Dag" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Anbeder" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanaals" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Leddig maken" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Söökloop" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Söök anfangen" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signaal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Instellt:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Free na Luft" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Anbeder:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Filterte tofögen" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Utsöchte tofögen" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Söökresultaten" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Aktuell Transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Söökloop anhollen" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programm" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Opnahmplaan" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Direktopnahm" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Feernsehn instellen..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Söken:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanaal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine nimmt opstunns wat op.\n" "Wullt Du dat Programm redig utmaken?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Direktopnahm start" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Direktopnahm anhollen" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Künstler" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Stücknummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Duer" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Temporeer Afspeellist" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Wedderhalen" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Tofällig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Ünnertitel tofögen" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Ümnömen" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Afspeellist ahn Naam" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Ünnertitel-Dateien" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-Afspeellist\n" "\n" "*.m3u|M3U-Afspeellist\n" "\n" "*.pls|PLS-Afspeellist" #~ msgid "Channel Settings" #~ msgstr "Kanaals instellen" #~ msgid "Name" #~ msgstr "Naam" #~ msgid "Edit" #~ msgstr "Bewerken" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Wegmaken" #~ msgid "Remove" #~ msgstr "Wegmaken" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Anfang" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Anfang:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nieg" #~ msgid "Channel" #~ msgstr "Kanaal" #~ msgid "Duration" #~ msgstr "Duer" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Programmplaan" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Naam" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Opfrischen" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Programm mit Spood plaant." #, fuzzy #~| msgid "Can't open %1." #~ msgid "Cannot open %1." #~ msgstr "%1 lett sik nich opmaken." #~ msgid "Unknown playlist format." #~ msgstr "Afspeellist-Formaat nich begäng." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Mischen" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "1 Min. torüchjumpen" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "1 Min. vörutjumpen" #~ msgid "Scan data last updated
on %1" #~ msgstr "Söökdaten tolest opfrischt
op den %1" #, fuzzy #~| msgid "Remove" #~ msgid "Remove All" #~ msgstr "Wegmaken" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine-Speler]
Koffein för Dien " #~ "Schriefdisch!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Positschoon" #~ msgid "Recordings" #~ msgstr "Opnahmen" #~ msgid "Edit Recording" #~ msgstr "Opnahm bewerken" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Nieg" #~ msgid "Start scan" #~ msgstr "Söök anfangen" #~ msgid "No source" #~ msgstr "Keen Born" #~ msgid "&View" #~ msgstr "&Ansicht" #~ msgid "&Player" #~ msgstr "&Afspeler" #~ msgid "&DVB" #~ msgstr "&DVB" #~ msgid "Tune to the selected channel" #~ msgstr "Na köört Kanaal instellen" #~ msgid "Open file" #~ msgstr "Datei opmaken" #~ msgid "Use right click to edit/delete" #~ msgstr "Mit Rechtsklick bewerken/wegdoon" #~ msgid "Channel search" #~ msgstr "Kanaalsöök" #~ msgid "Change icon" #~ msgstr "Lüttbild wesseln" #~ msgid "DVB Settings" #~ msgstr "DVB-Instellen" #~ msgid "Configure DVB" #~ msgstr "DVB instellen" #~ msgid "Switch to Start Tab" #~ msgstr "Na Startpaneel wesseln" #~ msgid "Switch to Player Tab" #~ msgstr "Na Afspelerpaneel wesseln" #~ msgid "Switch to Playlist Tab" #~ msgstr "Na Afspeellist-Paneel wesseln" #~ msgid "Switch to DVB Tab" #~ msgstr "Na DVB-Paneel wesseln" #~ msgid "Player" #~ msgstr "Afspeler" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "H" #~ msgid "Main Controls" #~ msgstr "Hööft-Stüerknööp" #~ msgid "Position Slider" #~ msgstr "Stüerschuver" #~ msgid "Tab Manager" #~ msgstr "Paneelpleger" kaffeine-1.2.2/po/nds/CMakeLists.txt0000644000175000017500000000013011552636277016664 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(nds ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sk/0000755000175000017500000000000011552636277013763 5ustar lxuserlxuserkaffeine-1.2.2/po/sk/kaffeine.po0000644000175000017500000006522211552636277016102 0ustar lxuserlxuser# translation of kaffeine.po to Slovak # Richard Fric , 2009. # Vaclav Divok , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-02-13 14:00+0100\n" "Last-Translator: Vaclav Divok \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Mediálny prehrávač pre KDE s podporou digitálnej TV" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 The Kaffeine Authors" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Vývojár" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Prehrať súbor" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Prehrať Audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Prehrať Video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Prehrať DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitálna TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Nastavenie Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Minimálny režim" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimálny režim" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Celoobrazovkový režim" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Časová dĺžka krátkeho krokovania:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Časová dĺžka dlhého krokovania:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Súbor" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Otvoriť URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Prehrať Audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Prehrať Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Prehrať DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Prehrať DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Prehrávanie" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Zoznam skladieb" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televízia" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Nastavenia" #: mainwindow.cpp:352 msgid "Start" msgstr "Štart" #: mainwindow.cpp:353 msgid "Playback" msgstr "Prehrávanie" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Zoznam skladieb" #: mainwindow.cpp:356 msgid "Television" msgstr "Televízia" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Štart v celoobrazovkovom režime" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(nedoporučené nastavenie)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Prehrať TV kanál" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Prehrať posledne naladený TV kanál" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Výpis dvb dát (ladiace nastavenie)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Súbory, alebo URL na prehrávanie" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Otvoriť URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Vložte URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Preskočiť na pozíciu" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Zadajte pozíciu:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Predchádzajúci" #: mediawidget.cpp:245 msgid "Play" msgstr "Prehrať" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauza" #: mediawidget.cpp:253 msgid "Stop" msgstr "Zastaviť" #: mediawidget.cpp:259 msgid "Next" msgstr "Nasledujúci" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Celoobrazovkový režim" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimálny režim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "vypnuté" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Zvýšiť hlasitosť" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Znížiť hlasitosť" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Stlmiť hlasitosť" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Zrušiť prekladanie" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Pomer strán" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatický" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Prispôsobiť veľkosti okna" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatická zmena veľkosti" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Vypnúť" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Originálna veľkosť" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dvojnásobná veľkosť" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Ovládač hlasitosti" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Preskočiť na pozíciu" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Preskočiť" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Skočiť %1s dozadu" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Skočiť %1s dopredu" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Posuvník prehrávania" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Vysunúť/Zasunúť Menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Názov" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitola" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Uhol" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Prepnúť medzi zobrazením uplynutého a zostávajúceho času" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Podporované súbory" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Všetky súbory" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Opustiť celoobrazovkový režim" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Opustiť minimálny režim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Zastavené" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Mute Zapnuté" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Mute Vypnuté" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Hlasitosť: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Rušenie prekladania Zapnuté" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Rušenie prekladania Vypnuté" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pozastavené" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Prehrávam" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Václav Divok" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "vaclav.divok@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Prosím, nainštalujte Qt SQLite plugin." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Nemôžem otvoriť SQLite databázu." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Interná utilita pre Kaffeine" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanál" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Číslo" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Editovať" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Odstrániť" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizotnálne" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikálne" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Otočiť doľava" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Otočiť doprava" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanál" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Názov:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Číslo:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Zdroj:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvencia (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Prenosová rýchlosť (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulácia:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizácia:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Utlmenie:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Šírka pásma:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Vysielací mód:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Ochranný interval:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID videa:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID titulkov:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID teletextu:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID siete:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID prenosového prúdu:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID Služby:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Audio kanál:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Premiešaný:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Nastavenie televízie" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Adresár pre nahrávanie:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Vyberte adresár" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Adresár pre Time shift:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Scanované údaje boli naposledy aktualizované %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Aktualizovať scanované údaje cez internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Vaša pozícia (potrebné iba pre USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitúda:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[J -90 ... 90 S]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitúda:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Z -180 ... 180 V]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Všeobecné nastavenia" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Zariadenie %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Aktualizovať scanované údaje cez internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Sťahujem scanované údaje" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Aktualizácia scanovaných údajov zlyhala." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Scanované údaje úspešne aktualizované. Zmeny sa\n" "prejavia po zatvorení konfiguračného dialógu." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Názov: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Posunúť doľava" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Vynulovať" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Posunúť doprava" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Zariadenie nepripojené" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kábel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terestriál" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automatické hľadanie" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automatické hľadanie s 167 kHz Offsetmi" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automatické vyhľadávanie Austrália" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automatické vyhľadávanie Taliansko" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automatické vyhľadávanie Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Vypršanie tuneru (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Zdroj:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Žiaden zdroj" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Názov:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Konfigurácia:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC prepínač" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Pozicionér" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 nastavenia" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB nastavenia" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Pridať satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Pozícia" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Odstrániť satelit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Univerzálne LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Vlastné LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Prepnúť frekvenciu (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Dolná priepusť LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Horná priepusť LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horizontálna LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikálna LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Programový sprievodca" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Plán nahrávania" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Hľadať:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Štart" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Trvanie" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Názov" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nenašlo sa žiadne zariadenie." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nenašlo sa žiadne zariadenie." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Plán nahrávania" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nový" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Názov" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Editovať položky plánu" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Názov:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanál:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Štart" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Trvanie:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Koniec:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Opakovať:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "NIkdy" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Denne" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Poskytovateľ" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanály" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Vyčistiť" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Skenovanie kanálov" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Začať skenovanie" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signál:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Naladené:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Voľne vysielané" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Rádio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Poskytovateľ:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Pridať filtrované" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Pridať vybrané" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Výsledky skenovania" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Aktuálny transpondér" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Zastaviť skenovanie" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programový sprievodca" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Plán nahrávania" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Okamžité nahrávanie" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Nastavenie televízie" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Hľadať:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanál: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Okamžité nahrávanie začalo" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Okamžité nahrávanie zastavené" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Názov" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Interpret" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Číslo skladby" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Dĺžka" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Dočasný zoznam skladieb" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Opakovať" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Náhodné" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Pridať satelit" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Premenovať" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Nepomenovaný zoznam skladieb" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "PID titulkov:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF Zoznam skladieb\n" "*.m3u|M3U Zoznam skladieb\n" "*.pls|PLS Zoznam skladieb" kaffeine-1.2.2/po/sk/CMakeLists.txt0000644000175000017500000000012711552636277016523 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sk ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/gl/0000755000175000017500000000000011552636277013750 5ustar lxuserlxuserkaffeine-1.2.2/po/gl/kaffeine.po0000644000175000017500000007152111552636277016066 0ustar lxuserlxuser# translation of kaffeine.po to galician # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # mvillarino , 2008, 2009. # Marce Villarino , 2008. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-02-01 23:02+0100\n" "Last-Translator: mvillarino \n" "Language-Team: galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 #, fuzzy #| msgid "Kaffeine Player" msgid "Kaffeine" msgstr "Reprodutor Kaffeine" #: main.cpp:67 #, fuzzy #| msgid "A media player for KDE with digital tv support" msgid "A media player for KDE with digital TV support." msgstr "Un reprodutor multimedia para KDE con soporte de tdt" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007 Os autores de Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 #, fuzzy #| msgid "Play File" msgid "&1 Play File" msgstr "Reproducir un ficheiro" #: mainwindow.cpp:91 #, fuzzy #| msgid "Play Audio CD" msgid "&2 Play Audio CD" msgstr "Reproducir un CD de Audio" #: mainwindow.cpp:96 #, fuzzy #| msgid "Play Video CD" msgid "&3 Play Video CD" msgstr "Reproducir un Video CD" #: mainwindow.cpp:101 #, fuzzy #| msgid "Play DVD" msgid "&4 Play DVD" msgstr "Reproducir un DVD" #: mainwindow.cpp:107 #, fuzzy #| msgid "Digital TV" msgid "&5 Digital TV" msgstr "TV dixital" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configure channels" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurar as canles" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Modo a pantalla completa" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Configuración:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Ficheiro" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Abrir un URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reproducir un CD de Audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reproducir un Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reproducir un DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reproducir un DVD" #: mainwindow.cpp:322 #, fuzzy #| msgid "Play" msgid "&Playback" msgstr "Reproducir" #: mainwindow.cpp:325 #, fuzzy #| msgid "Play" msgctxt "menu bar" msgid "Play&list" msgstr "Reproducir" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Configuración" #: mainwindow.cpp:352 #, fuzzy #| msgid "Start scan" msgid "Start" msgstr "Comezar o barrido" #: mainwindow.cpp:353 #, fuzzy #| msgid "Play" msgid "Playback" msgstr "Reproducir" #: mainwindow.cpp:354 #, fuzzy #| msgid "Play" msgid "Playlist" msgstr "Reproducir" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Full Screen Mode" msgid "Start in full screen mode" msgstr "Modo a pantalla completa" #: mainwindow.cpp:510 #, fuzzy #| msgid "Delete all" msgctxt "command line option" msgid "(deprecated option)" msgstr "Borrar todas" #: mainwindow.cpp:511 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play TV channel" msgstr "Borrar a canle" #: mainwindow.cpp:512 #, fuzzy #| msgid "Delete channel" msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Borrar a canle" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Abrir un URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Escreba o URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Posición" #: mediawidget.cpp:161 #, fuzzy #| msgid "Enter a URL:" msgid "Enter a position:" msgstr "Escreba o URL:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reproducir" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Deter" #: mediawidget.cpp:259 msgid "Next" msgstr "Seguinte" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Modo a pantalla completa" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Radio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy #| msgid "Play Video CD" msgctxt "'Playback' menu" msgid "Video" msgstr "Reproducir un Video CD" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgid "Radio" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Radio" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 #, fuzzy #| msgid "Radio" msgid "Automatic Resize" msgstr "Radio" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy #| msgid "Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Posición" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select source:" msgid "Seek Slider" msgstr "Escolla a fonte:" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "&Ficheiro" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Modo a pantalla completa" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Deter" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format #| msgid "Name: %1" msgctxt "osd" msgid "Volume: %1%" msgstr "Nome: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy #| msgid "Pause" msgctxt "osd" msgid "Paused" msgstr "Pausa" #: mediawidget.cpp:1299 #, fuzzy #| msgid "Play" msgctxt "osd" msgid "Playing" msgstr "Reproducir" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "mvillarino" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mvillarino@users.sourceforge.net" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channels" msgctxt "@title:column tv show" msgid "Channel" msgstr "Canles" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove satellite" msgctxt "@action" msgid "Remove" msgstr "Eliminar o satélite" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 #, fuzzy #| msgid "Horizontal LOF (MHz)" msgid "Horizontal" msgstr "LOF horizontal (MHz)" #: dvb/dvbchanneldialog.cpp:403 #, fuzzy #| msgid "Terrestrial" msgid "Vertical" msgstr "Terrestre" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Editar a canle" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nome:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number" msgctxt "@label tv channel" msgid "Number:" msgstr "Número" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Orixe:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 #, fuzzy #| msgid "Switch frequency (MHz)" msgid "Frequency (MHz):" msgstr "Trocar a frecuencia (Hz)" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy #| msgid "Configuration:" msgid "Modulation:" msgstr "Configuración:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "Posición" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "Procurar:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 #, fuzzy #| msgid "Play Video CD" msgid "Video PID:" msgstr "Reproducir un Video CD" #: dvb/dvbchanneldialog.cpp:634 #, fuzzy #| msgid "Play Video CD" msgid "Subtitle PID:" msgstr "Reproducir un Video CD" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 #, fuzzy #| msgid "Device %1" msgid "Service ID:" msgstr "Dispositivo %1" #: dvb/dvbchanneldialog.cpp:676 #, fuzzy #| msgid "Edit channel" msgid "Audio channel:" msgstr "Editar a canle" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Channels" msgctxt "@title:window" msgid "Configure Television" msgstr "Configurar as canles" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 #, fuzzy #| msgid "Select source:" msgid "Select Folder" msgstr "Escolla a fonte:" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, fuzzy, kde-format #| msgid "Scan file last updated
on %1" msgid "Scan data last updated on %1" msgstr "O ficheiro de barrido actualizouse
por última vez o %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositivo %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 #, fuzzy #| msgid "Scan file last updated
on %1" msgid "Scan data update failed." msgstr "O ficheiro de barrido actualizouse
por última vez o %1" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nome: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 #, fuzzy #| msgid "device not connected" msgid "Device not connected." msgstr "dispositivo non conectado" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Fío" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 #, fuzzy #| msgid "Stop scan" msgid "Autoscan" msgstr "Deter o barrido" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tempo límite do sintonizador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Orixe:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "No source" msgid "No Source" msgstr "Sen fonte" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nome:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuración:" #: dvb/dvbconfigdialog.cpp:782 #, fuzzy #| msgid "DiSEqC switch" msgid "DiSEqC Switch" msgstr "Switch DiSEqC" #: dvb/dvbconfigdialog.cpp:783 #, fuzzy #| msgid "USALS rotor" msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy #| msgid "Positions rotor" msgid "Positions Rotor" msgstr "Rotor de posicións" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "LNB %1 settings" msgid "LNB %1 Settings" msgstr "Configuración do LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "LNB settings" msgid "LNB Settings" msgstr "Configuración de LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy #| msgid "Add satellite" msgid "Add Satellite" msgstr "Engadir un satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posición" #: dvb/dvbconfigdialog.cpp:872 #, fuzzy #| msgid "Remove satellite" msgid "Remove Satellite" msgstr "Eliminar o satélite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB de banda C" #: dvb/dvbconfigdialog.cpp:1084 #, fuzzy #| msgid "C-band multipoint LNB" msgid "C-band Multipoint LNB" msgstr "LNB multiponto de banda C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalizado" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Trocar a frecuencia (Hz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF de banda baixa (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF de banda alta (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Procurar:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start scan" msgctxt "@title:column tv show" msgid "Start" msgstr "Comezar o barrido" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Configuration:" msgctxt "@title:column tv show" msgid "Duration" msgstr "Configuración:" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "&File" msgctxt "@title:column tv show" msgid "Title" msgstr "&Ficheiro" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgid "No suitable device found." msgctxt "@info" msgid "No device found." msgstr "Non se achou ningún dispositivo apropriado." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 #, fuzzy #| msgid "No suitable device found." msgctxt "message box" msgid "No available device found." msgstr "Non se achou ningún dispositivo apropriado." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgid "New" msgctxt "@action" msgid "New" msgstr "Novo" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nome" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nome:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channels" msgctxt "@label tv show" msgid "Channel:" msgstr "Canles" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start scan" msgctxt "@label tv show" msgid "Start:" msgstr "Comezar o barrido" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Configuration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Configuración:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "Tuned:" msgctxt "@label tv show" msgid "End:" msgstr "Sintonizado:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Fornecedor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canles" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 #, fuzzy #| msgid "Cable" msgctxt "remove all items from a list" msgid "Clear" msgstr "Fío" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channels" msgid "Channel Scan" msgstr "Canles" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy #| msgid "Start scan" msgid "Start Scan" msgstr "Comezar o barrido" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sinal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizado:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtro" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "En aberto" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Fornecedor:" #: dvb/dvbscandialog.cpp:330 #, fuzzy #| msgid "Add filtered" msgid "Add Filtered" msgstr "Engadir filtrado" #: dvb/dvbscandialog.cpp:334 #, fuzzy #| msgid "Add selected" msgid "Add Selected" msgstr "Engadir a escollida" #: dvb/dvbscandialog.cpp:340 #, fuzzy #| msgid "Scan results" msgid "Scan Results" msgstr "Resultados do barrido" #: dvb/dvbscandialog.cpp:356 #, fuzzy #| msgid "Current transponder" msgid "Current Transponder" msgstr "Transpondedor actual" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop scan" msgid "Stop Scan" msgstr "Deter o barrido" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Channels" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurar as canles" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Procurar:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channels" msgctxt "osd" msgid "Channel: %1_" msgstr "Canles" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "&Ficheiro" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Número" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Reproducir" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Radio" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add satellite" msgid "Add Subtitle" msgstr "Engadir un satélite" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgid "Remove satellite" msgctxt "rename an entry in a list" msgid "Rename" msgstr "Eliminar o satélite" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Play" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Reproducir" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Play Video CD" msgctxt "file filter" msgid "Subtitle Files" msgstr "Reproducir un Video CD" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #, fuzzy #~| msgid "Channels" #~ msgid "Channel Settings" #~ msgstr "Canles" #~ msgid "Name" #~ msgstr "Nome" #, fuzzy #~| msgid "Remove satellite" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Eliminar o satélite" #, fuzzy #~| msgid "Remove satellite" #~ msgid "Remove" #~ msgstr "Eliminar o satélite" #, fuzzy #~| msgid "New" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Novo" #, fuzzy #~| msgid "Channels" #~ msgid "Channel" #~ msgstr "Canles" #, fuzzy #~| msgid "Configuration:" #~ msgid "Duration" #~ msgstr "Configuración:" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nome" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "O ficheiro de barrido actualizouse
por última vez o %1" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "O ficheiro de barrido actualizouse
por última vez o %1" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Reprodutor Kaffeine]
cafeina para o " #~ "escritorio!
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "Posición" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Novo" #~ msgid "Start scan" #~ msgstr "Comezar o barrido" #~ msgid "No source" #~ msgstr "Sen fonte" #~ msgid "&View" #~ msgstr "&Vista" #, fuzzy #~| msgid "Play" #~ msgid "&Player" #~ msgstr "Reproducir" #~ msgid "&DVB" #~ msgstr "&TDT" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "Borrar a canle" #~ msgid "Open file" #~ msgstr "Abrir un ficheiro" #~ msgid "Use right click to edit/delete" #~ msgstr "Empregar o botón dereito para editar/borrar" #~ msgid "Channel search" #~ msgstr "Procura de canle" #~ msgid "Change icon" #~ msgstr "Mudar o ícone" #~ msgid "DVB Settings" #~ msgstr "Configuración da TDT" #~ msgid "Configure DVB" #~ msgstr "Configurar a TDT" #~ msgid "Switch to Start Tab" #~ msgstr "Trocar para a páxina de inicio" #~ msgid "Switch to Player Tab" #~ msgstr "Trocar para a páxina do reprodutor" #, fuzzy #~| msgid "Switch to Player Tab" #~ msgid "Switch to Playlist Tab" #~ msgstr "Trocar para a páxina do reprodutor" #~ msgid "Switch to DVB Tab" #~ msgstr "Trocar para a páxina da TDT" kaffeine-1.2.2/po/gl/CMakeLists.txt0000644000175000017500000000012711552636277016510 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(gl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/pa/0000755000175000017500000000000011552636277013746 5ustar lxuserlxuserkaffeine-1.2.2/po/pa/kaffeine.po0000644000175000017500000007543511552636277016074 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Amanpreet Singh Alam , 2008. # A S Alam , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-10-13 07:59+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "ਕੈਫ਼ੀਨ" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE ਲਈ ਡਿਜ਼ਿਟਲ ਟੀਵੀ ਸਹਿਯੋਗ ਨਾਲ ਤਿਆਰ ਇੱਕ ਮੀਡਿਆ ਪਲੇਅਰ" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) ੨੦੦੭-੨੦੧੦ Kaffeine ਲੇਖਕ" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "ਪ੍ਰਬੰਧਕ" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 ਫਾਇਲ ਚਲਾਓ" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 ਆਡੀਓ CD ਚਲਾਓ" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 ਵਿਡੀਓ CD ਚਲਾਓ" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 DVD ਚਲਾਓ" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 ਡਿਜ਼ਿਟਲ ਟੀਵੀ" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "ਕੈਫ਼ੀਨ ਸੰਰਚਨਾ" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "ਘੱਟੋ-ਘੱਟ ਮੋਡ" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "ਘੱਟੋ-ਘੱਟ ਮੋਡ" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:282 msgid "&File" msgstr "ਫਾਇਲ(&F)" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "URL ਖੋਲ੍ਹੋ..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "ਆਡੀਓ CD ਚਲਾਓ" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "ਵਿਡੀਓ CD ਚਲਾਓ" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "DVD ਚਲਾਓ" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "DVD ਫੋਲਡਰ ਚਲਾਓ" #: mainwindow.cpp:322 msgid "&Playback" msgstr "ਚਲਾਓ(&P)" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "ਪਲੇਅਲਿਸਟ(&l)" #: mainwindow.cpp:329 msgid "&Television" msgstr "ਟੈਲੀਵਿਜ਼ਨ(&T)" #: mainwindow.cpp:333 msgid "&Settings" msgstr "ਸੈਟਿੰਗ(&S)" #: mainwindow.cpp:352 msgid "Start" msgstr "ਸ਼ੁਰੂ" #: mainwindow.cpp:353 msgid "Playback" msgstr "ਚਲਾਓ" #: mainwindow.cpp:354 msgid "Playlist" msgstr "ਪਲੇਅ-ਲਿਸਟ" #: mainwindow.cpp:356 msgid "Television" msgstr "ਟੈਲੀਵਿਜ਼ਨ" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(ਬਰਤਰਫ਼ ਚੋਣ)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "ਟੀਵੀ ਚੈਨਲ ਚਲਾਓ" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "ਆਖਰੀ ਵਾਰ ਚਲਾਇਆ ਟੀਵੀ ਚੈਨਲ ਚਲਾਓ" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "ਚਲਾਉਣ ਲਈ ਫਾਇਲਾਂ ਜਾਂ URL" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "URL ਖੋਲ੍ਹੋ" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "ਇੱਕ URL ਦਿਓ:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "ਸਥਿਤੀ ਉੱਤੇ ਜਾਓ" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "ਇੱਕ ਸਥਿਤੀ ਦਿਓ:" #: mediawidget.cpp:237 msgid "Previous" msgstr "ਪਿੱਛੇ" #: mediawidget.cpp:245 msgid "Play" msgstr "ਚਲਾਓ" #: mediawidget.cpp:246 msgid "Pause" msgstr "ਵਿਰਾਮ" #: mediawidget.cpp:253 msgid "Stop" msgstr "ਰੋਕੋ" #: mediawidget.cpp:259 msgid "Next" msgstr "ਅੱਗੇ" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "ਘੱਟੋ-ਘੱਟ ਮੋਡ" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "ਬੰਦ" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "ਆਡੀਓ" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "ਵਾਲੀਅਮ ਵਧਾਓ" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "ਵਾਲੀਅਮ ਘਟਾਓ" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "ਵਾਲੀਅਮ ਚੁੱਪ" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "ਵਿਡੀਓ" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "ਡੀਇੰਟਰਲੇਸ" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "ਅਕਾਰ ਅਨੁਪਾਤ" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "ਆਟੋਮੈਟਿਕ" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "ਵਿੰਡੋ ਮੁਤਾਬਕ ਫਿੱਟ" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "੪:੩" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "੧੬:੯" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "ਆਟੋਮੈਟਿਕ ਮੁੜ-ਆਕਾਰ" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "ਬੰਦ" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "ਅਸਲੀ ਸਾਈਜ਼" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "ਡਬਲ ਸਾਈਜ਼" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "ਵਾਲੀਅਮ ਸਲਾਈਡਰ" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "ਸਥਿਤੀ ਉੱਤੇ ਜਾਓ..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "ਛੱਡੋ" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "%1s ਪਿੱਛੇ ਜਾਓ" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "%1s ਅੱਗੇ ਜਾਓ" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Volume Slider" msgid "Seek Slider" msgstr "ਵਾਲੀਅਮ ਸਲਾਈਡਰ" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "ਮੇਨੂ ਬਦਲੋ" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "ਟਾਈਟਲ" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "ਚੈਪਟਰ" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "ਕੋਣ" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "ਸਹਾਇਕ ਮੀਡਿਆ ਫਾਇਲਾਂ" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "ਸਭ ਫਾਇਲਾਂ" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ ਛੱਡੋ" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "ਘੱਟੋ-ਘੱਟ ਮੋਡ ਬੰਦ" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "ਰੋਕਿਆ" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "ਚੁੱਪ ਹੈ" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "ਚੁੱਪ ਨਹੀਂ" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "ਵਾਲੀਅਮ: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "ਵਿਰਾਮ" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "ਚੱਲ ਰਿਹਾ" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "aalam@users.sf.net" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "ਚੈਨਲ" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "ਨੰਬਰ" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "ਸੋਧ" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "ਹਟਾਓ" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "ਹਰੀਜੱਟਲ" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "ਵਰਟੀਕਲ" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Edit channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "ਚੈਨਲ ਸੋਧ" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "ਨਾਂ:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "ਨੰਬਰ:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "ਸਰੋਤ:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "ਫਰੀਕਿਊਂਸੀ (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "ਮੋਡੂਲੇਸ਼ਨ:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC ਰੇਟ:" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy #| msgid "Position" msgid "Polarization:" msgstr "ਸਥਿਤੀ" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "ਬੈਂਡਵਿਡਥ:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC ਰੇਟ LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "ਟਰਾਂਸਮਿਸ਼ਨ ਮੋਡ:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "ਲੜੀ:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "ਵਿਡੀਓ PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ਨੈੱਟਵਰਕ ID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ਸਰਵਿਸ ID:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "ਆਡੀਓ ਚੈਨਲ:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "ਟੈਲੀਵਿਜ਼ਨ ਸੰਰਚਨਾ" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "ਰਿਕਾਰਡਿੰਗ ਫੋਲਡਰ:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "ਫੋਲਡਰ ਚੁਣੋ" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "ਵਿਥਕਾਰ:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "ਲੰਬਕਾਰ:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "ਆਮ ਚੋਣਾਂ" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "ਜੰਤਰ %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "ਸਕੈਨ ਡਾਟਾ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "ਸਕੈਨ ਡਾਟਾ ਅੱਪਡੇਟ ਫੇਲ੍ਹ ਹੋਇਆ।" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "ਨਾਂ: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "ਖੱਬੇ ਭੇਜੋ" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "ਮੁੜ-ਸੈੱਟ" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "ਸੱਜੇ ਭੇਜੋ" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "ਜੰਤਰ ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ।" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "ਕੇਬਲ" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "ਟਿੱਰੈਟਰਾਈਲ" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "ਆਟੋ-ਸਕੈਨ" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "ਟਾਊਨਰ ਟਾਈਮਆਉਟ (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "ਸਰੋਤ:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "ਕੋਈ ਸਰੋਤ ਨਹੀਂ" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "ਨਾਂ:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "ਸੰਰਚਨਾ:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC ਸਵਿੱਚ" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS ਰੋਟਰ" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "ਸਥਿਤੀ ਰੋਟਰ" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 ਸੈਟਿੰਗ" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB ਸੈਟਿੰਗ" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "ਸੈਟੇਲਾਈਟ ਸ਼ਾਮਲ" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "ਸੈਟੇਲਾਈਟ" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "ਸਥਿਤੀ" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "ਸੈਟੇਲਾਈਟ ਹਟਾਓ" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "ਯੂਨੀਵਰਸਲ LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-ਬੈਂਡ LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-ਬੈਂਡ ਮਲਟੀਪੁਆਇੰਟ LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "ਕਸਟਮ LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "ਸਵਿੱਚ ਫਰੀਕਿਊਂਸੀ (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "ਲੋਅ ਬੈਂਡ LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "ਹਾਈ ਬੈਂਡ LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "ਹਰੀਜੱਟਲ LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "ਵਰਟੀਕਲ LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "ਪਰੋਗਰਾਮ ਗਾਈਡ" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "ਰਿਕਾਰਡਿੰਗ ਸ਼ੈਡਿਊਲ" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "ਖੋਜ:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "ਸ਼ੁਰੂ" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "ਅੰਤਰਾਲ" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "ਟਾਈਟਲ" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "ਕੋਈ ਉਪਲੱਬਧ ਜੰਤਰ ਨਹੀਂ ਲੱਭਿਆ।" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "ਕੋਈ ਉਪਲੱਬਧ ਜੰਤਰ ਨਹੀਂ ਲੱਭਿਆ।" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "ਰਿਕਾਰਡਿੰਗ ਸ਼ੈਡਿਊਲ" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "ਨਵਾਂ" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "ਨਾਂ" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "ਨਾਂ:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "ਚੈਨਲ:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "ਸ਼ੁਰੂ" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "ਅੰਤਰਾਲ:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "ਅੰਤ:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "ਦੁਹਰਾਓ:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "ਕਦੇ ਨਹੀਂ" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "ਰੋਜ਼" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "ਪਰੋਵਾਇਡਰ" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "ਚੈਨਲ" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "ਸਾਫ਼ ਕਰੋ" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "ਚੈਨਲ ਸਕੈਨ" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "ਸਕੈਨ ਸ਼ੁਰੂ" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "ਸਿਗਨਲ:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "ਟਿਊਨ ਕੀਤਾ:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "ਫਿਲਟਰ" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "ਹਵਾ ਵਿੱਚ ਮੁਫ਼ਤ" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "ਰੇਡੀਓ" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "ਪਰੋਵਾਇਡਰ:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "ਫਿਲਟਰ ਕੀਤੇ ਸ਼ਾਮਲ" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "ਚੁਣੇ ਸ਼ਾਮਲ" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "ਖੋਜ ਨਤੀਜੇ" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "ਮੌਜੂਦਾ ਟਰਾਂਸਪੋਡਰ" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "ਸਕੈਨ ਰੋਕੋ" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "ਪਰੋਗਰਾਮ ਗਾਈਡ" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "ਰਿਕਾਰਡਿੰਗ ਸ਼ੈਡਿਊਲ" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "ਤਰੁੰਤ ਰਿਕਾਰਡ" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "ਟੈਲੀਵਿਜ਼ਨ ਸੰਰਚਨਾ..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "ਖੋਜ:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "ਚੈਨਲ: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "ਤੁਰੰਤ ਰਿਕਾਰਡ ਸ਼ੁਰੂ ਕੀਤੀ" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "ਤੁਰੰਤ ਰਿਕਾਰਡ ਰੋਕੋ" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "ਟਾਈਟਲ" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "ਕਲਾਕਾਰ" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "ਐਲਬਮ" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "ਟਰੈਕ ਨੰਬਰ" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "ਲੰਬਾਈ" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "ਆਰਜ਼ੀ ਪਲੇਅਲਿਸਟ" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "ਦੁਹਰਾਓ" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "ਰਲਵੇਂ" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "ਸਬ-ਟਾਈਟਲ ਸ਼ਾਮਲ" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "ਨਾਂ-ਬਦਲੋ" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "ਬਿਨ-ਨਾਂ ਪਲੇਅ-ਲਿਸਟ" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "ਸਬ-ਟਾਈਟਲ ਫਾਇਲਾਂ" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF ਪਲੇਅਲਿਸਟ\n" "*.m3u|M3U ਪਲੇਅਲਿਸਟ\n" "*.pls|PLS ਪਲੇਅਲਿਸਟ" #~ msgid "Channel Settings" #~ msgstr "ਚੈਨਲ ਸੈਟਿੰਗ" #~ msgid "Name" #~ msgstr "ਨਾਂ" #~ msgid "Edit" #~ msgstr "ਸੋਧ" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "ਹਟਾਓ" #~ msgid "Remove" #~ msgstr "ਹਟਾਓ" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "ਸ਼ੁਰੂ" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "ਸ਼ੁਰੂ:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "ਨਵਾਂ" #~ msgid "Channel" #~ msgstr "ਚੈਨਲ" #~ msgid "Duration" #~ msgstr "ਅੰਤਰਾਲ" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "ਸੈਡੀਊਲ ਪਰੋਗਰਾਮ" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "ਨਾਂ" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "ਤਾਜ਼ਾ ਕਰੋ" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "ਫਾਇਲ ਸਕੈਨ ਆਖਰੀ ਅੱਪਡੇਟ
%1 ਉੱਤੇ" #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "ਰਲਵੇਂ" #, fuzzy #~| msgid "Scan file last updated
on %1" #~ msgid "Scan data last updated
on %1" #~ msgstr "ਫਾਇਲ ਸਕੈਨ ਆਖਰੀ ਅੱਪਡੇਟ
%1 ਉੱਤੇ" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Kaffeine ਪਲੇਅਰ]
ਤੁਹਾਡੇ ਡੈਸਕਟਾਪ ਲਈ ਕਾਹਵਾ!" #~ "
" #, fuzzy #~| msgid "Position" #~ msgid "Navigation" #~ msgstr "ਸਥਿਤੀ" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "ਨਵਾਂ" #~ msgid "Start scan" #~ msgstr "ਸਕੈਨ ਸ਼ੁਰੂ" #~ msgid "No source" #~ msgstr "ਕੋਈ ਸਰੋਤ ਨਹੀਂ" #~ msgid "&View" #~ msgstr "ਵੇਖੋ(&V)" #~ msgid "&Player" #~ msgstr "ਪਲੇਅਰ(&P)" #~ msgid "&DVB" #~ msgstr "&DVB" #, fuzzy #~| msgid "Delete channel" #~ msgid "Tune to the selected channel" #~ msgstr "ਚੈਨਲ ਹਟਾਓ" #~ msgid "Open file" #~ msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ" #~ msgid "Use right click to edit/delete" #~ msgstr "ਸੋਧਣ/ਹਟਾਉਣ ਲਈ ਸੱਜਾ ਕਲਿੱਕ ਕਰੋ" #~ msgid "Channel search" #~ msgstr "ਚੈਨਲ ਖੋਜ" #~ msgid "Change icon" #~ msgstr "ਆਈਕਾਨ ਬਦਲੋ" #~ msgid "DVB Settings" #~ msgstr "DVB ਸੈਟਿੰਗ" #~ msgid "Configure DVB" #~ msgstr "DVB ਸੰਰਚਨਾ" #~ msgid "Player" #~ msgstr "ਪਲੇਅਰ" #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F" #~ msgid "Main Controls" #~ msgstr "ਮੇਨ ਕੰਟਰੋਲ" #~ msgid "Position Slider" #~ msgstr "ਸਥਿਤੀ ਸਲਾਇਡਰ" #~ msgid "Tab Manager" #~ msgstr "ਟੈਬ ਮੈਨੇਜਰ" kaffeine-1.2.2/po/pa/CMakeLists.txt0000644000175000017500000000012711552636277016506 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(pa ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/fr/0000755000175000017500000000000011552636277013755 5ustar lxuserlxuserkaffeine-1.2.2/po/fr/kaffeine.po0000644000175000017500000007031611552636277016074 0ustar lxuserlxuser# translation of kaffeine.po to Français # translation of kaffeine.po to # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Alain Sacky , 2008. # Sébastien Renard , 2008. # Joëlle Cornavin , 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-26 06:50+0100\n" "Last-Translator: Joëlle Cornavin \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 1.0\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" "Un lecteur multimédia pour KDE avec prise en charge de la télévision " "numérique." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Les développeurs de Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Mainteneur" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Lire un fichier" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Lire un CD audio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Lire un CD vidéo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Lire un DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV numérique" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurer Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Mode d'affichage au démarrage :" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Mode normal" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Mode minimal" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mode plein écran" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Mémoriser le dernier réglage" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Durée de saut brève :" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Durée de saut longue :" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fichier" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Ouvrir un URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Lire un CD audio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Lire un CD vidéo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Lire un DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Lire un dossier de DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Lire" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Liste de lecture" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Télévision" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Configuration" #: mainwindow.cpp:352 msgid "Start" msgstr "Démarrer" #: mainwindow.cpp:353 msgid "Playback" msgstr "Lecture" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Liste de lecture" #: mainwindow.cpp:356 msgid "Television" msgstr "Télévision" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Démarrer en mode plein écran" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(option déconseillée)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Lire le canal TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Lire le dernier canal TV syntonisé" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Vider les données DVB (option de débogage)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fichiers ou URL à lire" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Ouvrir un URL" # unreviewed-context #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Saisissez un URL :" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Aller directement à une position" # unreviewed-context #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Saisissez une position :" #: mediawidget.cpp:237 msgid "Previous" msgstr "Précédent" #: mediawidget.cpp:245 msgid "Play" msgstr "Lire" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Arrêt" #: mediawidget.cpp:259 msgid "Next" msgstr "Suivant" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mode plein écran" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Mode minimal" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "désactivé" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Augmenter le volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Diminuer le volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Couper le volume" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vidéo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Désentrelacer" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Rapport hauteur/largeur" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatique" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajuster à la fenêtre" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Redimensionnement automatique" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Désactivé" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Taille originale" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Taille double" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Curseur de volume" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Aller directement à une position..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Sauter" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Retour rapide de %1s" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Avance rapide de %1s" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Curseur de recherche" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "(Dés)Activer le menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titre" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Chapitre" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Angle" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" "Basculer entre l'affichage du temps écoulé et l'affichage du temps restant" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Fichiers multimédia pris en charge" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tous les fichiers" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Quitter le mode plein écran" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Quitter le mode minimal" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Arrêté" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Volume muet" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Volume rétabli" # unreviewed-context #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume : %1 %" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Désentrelacement activé" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Désentrelacement désactivé" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pause" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "En cours de lecture" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Joëlle Cornavin,Alain Sacky" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "jcornavin AT laposte DOT net,nouslesfrancais@yahoo.fr" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Veuillez installer le module externe SQLite pour Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Impossible d'ouvrir la base de données SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilitaire interne pour Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Numéro" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Modifier" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Supprimer" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Les canaux seront triés par numéro pour permettre le glisser-déposer.\n" "Voulez-vous continuer ?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circulaire gauche" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circulaire droit" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canal" # unreviewed-context #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nom :" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Numéro :" # unreviewed-context #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Source :" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Fréquence (MHz) :" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Débit de symboles (kS/s) :" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulation :" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Taux de contrôle continu :" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisation :" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Affaiblissement :" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Largeur de bande :" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Taux de contrôle continu LP :" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Mode de transmission :" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervalle de garde :" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hiérarchie :" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID de la PMT :" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID de la vidéo :" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID du sous-titre :" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID du télétexte :" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID du réseau :" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID du flux de transport :" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID du service :" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal audio :" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Brouillé :" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configurer la télévision" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Dossier d'enregistrement :" # unreviewed-context #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Sélectionner un dossier" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Dossier de décalage horaire :" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Marge de départ (minutes) :" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Marge de fin (minutes :" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Utiliser le jeu de caractères ISO 8859-1 au lieu de ISO 6937 :" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Dernière mise à jour des données le %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Dernière mise à jour des données sur l'Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Votre position (nécessaire uniquement pour le rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitude :" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitude :" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Options générales" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Périphérique %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Mise à jour des données de balayage" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Téléchargement des données de balayage" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "La mise à jour des données de balayage a échoué." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Les données de balayage ont été mises à jour avec succès. Les modifications " "prendront\n" "effet lorsque vous aurez fermé la boîte de dialogue de configuration." # unreviewed-context #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nom : %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Déplacer vers la gauche" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Réinitialiser" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Déplacer vers la droite" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Périphérique non connecté." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Câble" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Recherche automatique de canaux" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Recherche automatique de canaux avec décalages de 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Recherche automatique de canaux pour l'Australie" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Recherche automatique de canaux pour l'Italie" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Recherche automatique de canaux pour Taïwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" # unreviewed-context #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Temps de réponse du tuner (ms) :" # unreviewed-context #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Source :" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Pas de source" # unreviewed-context #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nom :" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuration :" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Commutateur DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de positions" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Paramètres du LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Paramètres du LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Ajouter un satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Position" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Supprimer un satellite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universel" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB bande C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB bande C multipoint" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personnalisé" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Changer de fréquence (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF de bande basse (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF de bande haute (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guide des programmes" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Enregistrer une émission" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Rechercher :" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Démarrer" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Durée" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titre" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Impossible de trouver un périphérique disponible." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Impossible de trouver un périphérique disponible." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Programmation d'un enregistrement" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nouveau" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nom" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Modifier l'élément de programme" # unreviewed-context #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nom :" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal :" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Démarrer" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Durée :" # unreviewed-context #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Fin :" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Répéter :" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Jamais" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Quotidiennement" # unreviewed-context #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0 %" # unreviewed-context #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1 %" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "fournisseur" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canaux" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Effacer" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Balayage des chaînes" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Démarrer le balayage" # unreviewed-context #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal :" # unreviewed-context #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR :" # unreviewed-context #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Réglé :" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtre" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Chaîne en clair" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" # unreviewed-context #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Fournisseur :" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Ajouter les filtrés" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Ajouter les sélectionnés" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Résultats du balayage" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transpondeur actuel" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Arrêter le balayage" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guide des programmes" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Programmation d'un enregistrement" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Enregistrement immédiat" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurer la télévision..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Rechercher :" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal : %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine enregistre en ce moment des programmes.\n" "Voulez-vous vraiment fermer l'application ?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine a programmé des enregistrements.\n" "Voulez-vous vraiment fermer l'application ?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Enregistrement immédiat démarré" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Enregistrement immédiat arrêté" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titre" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artiste" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Numéro de piste" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Longueur" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Liste de lecture temporaire" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Répéter" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aléatoire" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Ajouter un sous-titre" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Renommer" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Liste de lecture sans nom" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Fichiers de sous-titres" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Liste de lecture XSPF\n" "*.m3u|Liste de lecture M3U\n" "*.pls|Liste de lecture PLS" #~ msgid "Channel Settings" #~ msgstr "Paramètres des canaux" #~ msgid "Name" #~ msgstr "Nom" #~ msgid "Edit" #~ msgstr "Modifier" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Supprimer" #~ msgid "Remove" #~ msgstr "Supprimer" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Début" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Début :" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nouveau" #~ msgid "Duration" #~ msgstr "Durée" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nom" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Programmer une émission" kaffeine-1.2.2/po/fr/CMakeLists.txt0000644000175000017500000000012711552636277016515 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(fr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/hr/0000755000175000017500000000000011552636277013757 5ustar lxuserlxuserkaffeine-1.2.2/po/hr/kaffeine.po0000644000175000017500000005170711552636277016101 0ustar lxuserlxuser# Translation of kaffeine to Croatian # # Andrej Dundovic , 2010. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-01-24 16:34+0100\n" "Last-Translator: Andrej Dundovic \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007-2009 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2009 Autori Kaffeinea" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:282 msgid "&File" msgstr "" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:322 msgid "&Playback" msgstr "" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "" #: mainwindow.cpp:352 msgid "Start" msgstr "" #: mainwindow.cpp:353 msgid "Playback" msgstr "" #: mainwindow.cpp:354 msgid "Playlist" msgstr "" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "" #: mediawidget.cpp:245 msgid "Play" msgstr "" #: mediawidget.cpp:246 msgid "Pause" msgstr "" #: mediawidget.cpp:253 msgid "Stop" msgstr "" #: mediawidget.cpp:259 msgid "Next" msgstr "" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" kaffeine-1.2.2/po/hr/CMakeLists.txt0000644000175000017500000000012711552636277016517 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(hr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sv/0000755000175000017500000000000011552636277013776 5ustar lxuserlxuserkaffeine-1.2.2/po/sv/kaffeine.po0000644000175000017500000006471311552636277016121 0ustar lxuserlxuser# translation of kaffeine.po to Swedish # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Stefan Asserhäll , 2008, 2009, 2010. # Stefan Asserhall , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-04-02 20:31+0200\n" "Last-Translator: Stefan Asserhall \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "Language: sv\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "En mediaspelare för KDE med stöd för digital-tv." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007-2010 Upphovsmännen till Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Underhåll" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Spela fil" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Spela ljudcd" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Spela video-cd" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Spela dvd" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digital-tv" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Anpassa Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Visningsläge vid start:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normalt läge" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimalt läge" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Fullskärmsläge" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Kom ihåg senaste inställning" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Kort tidslängd för överhopp:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Lång tidslängd för överhopp:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Arkiv" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Öppna webbadress..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Spela ljudcd" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Spela video-cd" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Spela dvd" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Spela dvd-katalog" #: mainwindow.cpp:322 msgid "&Playback" msgstr "U&ppspelning" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Spel&lista" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Television" #: mainwindow.cpp:333 msgid "&Settings" msgstr "In&ställningar" #: mainwindow.cpp:352 msgid "Start" msgstr "Starta" #: mainwindow.cpp:353 msgid "Playback" msgstr "Uppspelning" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Spellista" #: mainwindow.cpp:356 msgid "Television" msgstr "Television" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Starta med fullskärmsläge" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(alternativet avråds från)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Visa tv-kanal" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Visa senast inställda tv-kanal" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Dumpa DVB-data (felsökningsalternativ)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Filer eller webbadresser att spela" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Öppna webbadress" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Skriv in webbadress:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Gå till position" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Ange en position:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Föregående" #: mediawidget.cpp:245 msgid "Play" msgstr "Spela" #: mediawidget.cpp:246 msgid "Pause" msgstr "Paus" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stoppa" #: mediawidget.cpp:259 msgid "Next" msgstr "Nästa" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Fullskärmsläge" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimalt läge" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "av" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Ljud" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Öka volym" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Minska volym" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Tysta volym" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Ta bort inflätning" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proportion" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatisk" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Anpassa till fönster" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatisk storleksändring" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Av" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Originalstorlek" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dubbel storlek" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Volymskjutreglage" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Gå till position..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Gå" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Gå %1 s bakåt" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Gå %1 s framåt" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Sökreglage" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Växla meny" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitel" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Vinkel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Byt mellan visning av förfluten eller återstående tid" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Mediafiler som stöds" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Alla filer" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Avsluta fullskärmsläge" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Avsluta minimalt läge" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Stoppad" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Tyst" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Inte tyst" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volym: %1 %" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Borttagning av inflätning på" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Borttagning av inflätning av" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Paus" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Spelar" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Stefan Asserhäll" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "stefan.asserhall@comhem.se" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Installera Qt:s SQLite-insticksprogram" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Kan inte öppna SQLite-databasen." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Internverktyg för Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Redigera" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Ta bort" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Kanalerna kommer att sorteras enligt nummer för att tillåta dra och släpp.\n" "Vill du fortsätta?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horisontell" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikal" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Vänstercirkulär" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Högercirkulär" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Redigera kanal" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Namn:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Källa:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvens (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbolfrekvens (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulation:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC-frekvens:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisation:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Dämpning:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Bandbredd:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC-frekvens LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Överföringsläge:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Skyddsintervall:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarki:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "Processidentifikation för PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Processidentifikation för video:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Processidentifikation för textning:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Processidentifikation för teletext:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Nätverksidentifikation:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transportströmidentifikation:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Tjänstidentifikation:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Ljudkanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Förvrängd:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Anpassa television" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Inspelningskatalog:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Välj katalog" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Tidsförskjutningskatalog:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Inledande marginal (minuter)" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Avslutande marginal (minuter)" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Använd ISO 8859-1 teckenuppsättning istället för ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Sökdata senast uppdaterat den %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Uppdatera sökdata via Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Din position (behövs bara för USALS rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitud:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitud:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[V -180 ... 180 Ö]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Allmänna alternativ" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Enhet %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Uppdatera sökdata" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Laddar ner sökdata" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Uppdatering av sökdata misslyckades." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Sökdata uppdaterad med lyckat resultat. Ändringar får\n" "effekt efter du har stängt inställningsdialogrutan." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Namn: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Flytta åt vänster" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Återställ" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Flytta åt höger" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Enhet inte ansluten." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Markbunden" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Sök automatiskt" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Sök automatiskt med steg om 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Sök automatiskt i Australien" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Sök automatiskt i Italien" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Sök automatiskt i Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Mottagarens tidsgräns (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Källa:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Ingen källa" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Namn:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Inställning:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Diseqc-omkopplare" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-ratt" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positionsratt" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Inställningar av LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Inställningar av LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Lägg till satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Position" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Ta bort satellit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universell LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band flerpunkts LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Egen LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Bytesfrekvens (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Lågbands-LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Högbands-LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horisontell LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Programtablå" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Spela in program" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Sök:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Starta" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Tidslängd" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "Alla enheter används för inspelningar." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Ingen enhet hittades." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Ingen tillgänglig enhet hittades." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Inspelningsschema" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Ny" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Namn" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Redigera post i schemat" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Namn:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Start:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Längd:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Slut:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Upprepa:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Aldrig" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Dagligen" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0 %" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1 %" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Leverantör" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "Signal/brus" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanaler" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Rensa" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanalsökning" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Starta sökning" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "Signal/brus:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Inställd:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Fri utsändning" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Tv" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Leverantör:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Lägg till filtrerad" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Lägg till markerad" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Sökresultat" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Nuvarande transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Stoppa sökning" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programtablå" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Skärmvisning" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Inspelningsschema" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Snabbinspelning" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Anpassa television..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Sök:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine spelar för närvarande in program.\n" "Vill du verkligen avsluta programmet?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine har schemalagda inspelningar.\n" "Vill du verkligen avsluta programmet?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Snabbinspelning startad" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Snabbinspelning stoppad" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artist" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Spårnummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Längd" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Tillfällig spellista" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Upprepa" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Slumpmässig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Lägg till textning" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Byt namn" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Namnlös spellista" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Textningsfiler" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-spellista\n" "*.m3u|M3U-spellista\n" "*.pls|PLS-spellista" #~ msgid "Channel Settings" #~ msgstr "Kanalinställningar" #~ msgid "Name" #~ msgstr "Namn" #~ msgid "Edit" #~ msgstr "Redigera" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Ta bort" #~ msgid "Remove" #~ msgstr "Ta bort" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Början" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Början:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nytt" #~ msgid "Duration" #~ msgstr "Tidslängd" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Schemalägg program" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Namn" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Uppdatera" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Program schemalagt med lyckat resultat." #~ msgid "Cannot open %1." #~ msgstr "Kan inte öppna %1." #~ msgid "Unknown playlist format." #~ msgstr "Okänt spellisteformat." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Blanda" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Gå en minut bakåt" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Gå en minut framåt" kaffeine-1.2.2/po/sv/CMakeLists.txt0000644000175000017500000000012711552636277016536 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sv ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/pt/0000755000175000017500000000000011552636277013771 5ustar lxuserlxuserkaffeine-1.2.2/po/pt/kaffeine.po0000644000175000017500000006537511552636277016121 0ustar lxuserlxuser# translation of pt_PT.po to Portuguese # translation of kaffeine.pot to Portuguese # Portuguese messages for Kaffeine. # This file is distributed under the same license as the kaffeine package. # Flávio Moringa , 2004. # Diogo Sousa , 2005. msgid "" msgstr "" "Project-Id-Version: pt_PT\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-03-30 10:07+0100\n" "Last-Translator: Diogo Sousa \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-POFile-IgnoreConsistency: Signal:\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: KBabel 1.10\n" "X-POFile-SpellExtra: stream win pid Integration TVs DVB XBM judder\n" "X-POFile-SpellExtra: KaffeinePart Low Multimedia EPG pids sat xbm lib\n" "X-POFile-SpellExtra: chroma pulldown usr fps SMIL streams tvtime OSD Nº\n" "X-POFile-SpellExtra: AC LNBs VCD FEC Language dvds libdvdcss kaffeine Ch\n" "X-POFile-SpellExtra: Stream Synchronized WIN Pid dvb High upsampling SNR\n" "X-POFile-SpellExtra: Kaffeine ms Sat ParteFalsa Pids transponder smi tags\n" "X-POFile-SpellExtra: asc srt txt ssa Moringa gst tx GStreamerPart register\n" "X-POFile-IgnoreConsistency: Timers\n" "X-POFile-IgnoreConsistency: &Player\n" "X-POFile-SpellExtra: kaffeinedvbevents epg LNB PIDs Transponder PLS Return\n" "X-POFile-IgnoreConsistency: New Item\n" "X-POFile-SpellExtra: KaffeineOggVorbis KaffeineMp MP Lame SVCD Can CICAM\n" "X-POFile-IgnoreConsistency: Medium\n" "X-POFile-IgnoreConsistency: Reset\n" "X-POFile-SpellExtra: Atsc XinePart LNC Multiponto ATSC LOF DiSEqC USALS kS\n" "X-POFile-IgnoreConsistency: Subtitle\n" "X-POFile-SpellExtra: PMT LP min Pfister Christoph Taiwan xspf pls XSPF\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Um leitor multimédia para o KDE com suporte para a TV digital." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Os Autores do Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Manutenção" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reproduzir um Ficheiro" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reproduzir um CD Áudio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reproduzir um CD Vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reproduzir um DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV Digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configurar o Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Modo de apresentação inicial:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Modo Normal" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Modo Mínimo" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Modo de Ecrã Completo" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Recordar a Última Configuração" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Duração do pequeno salto:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Duração do longo salto:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Ficheiro" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Abrir o URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reproduzir um CD Áudio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reproduzir um CD Vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reproduzir um DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reproduzir a Pasta de DVD's" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Reprodução" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Lista de Reprodução" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisão" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Configuração" #: mainwindow.cpp:352 msgid "Start" msgstr "Iniciar" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reprodução" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Lista de Reprodução" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisão" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Iniciar com o ecrã completo" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(opção desactualizada)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Ver o canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Ver o último canal sintonizado de TV" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Apresentar os dados do DVB (opção de depuração)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Ficheiros ou URL's a reproduzir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Abrir o URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Indique um URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Saltar para a Posição" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Indique uma posição:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reproduzir" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Parar" #: mediawidget.cpp:259 msgid "Next" msgstr "Seguinte" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Modo de Ecrã Completo" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Modo Mínimo" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "desligado" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Áudio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Aumentar o Volume" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Diminuir o Volume" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Volume Silenciado" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vídeo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Desentrelaçar" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Proporções" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automática" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajustar à Janela" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Dimensionamento Automático" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Desligado" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Tamanho Original" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Tamanho Duplo" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Barra de Volume" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Saltar para a Posição..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Saltar" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Recuar %1 s" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Avançar %1 s" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Barra de Posicionamento" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Comutar o Menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Título" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítulo" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ângulo" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Alterna entre a apresentação do tempo decorrido e o restante" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Ficheiros Multimédia Suportados" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Todos os Ficheiros" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Sair do Modo de Ecrã Completo" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Sair do Modo Mínimo" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Parado" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silêncio Ligado" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Silêncio Desligado" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volume: %1" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Desentrelaçamento Ligado" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Desentrelaçamento Desligado" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Em Pausa" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "A Reproduzir" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "José Nuno Pires" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "zepires@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Instale por favor o 'plugin' do Qt para o SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Não é possível aceder à base de dados SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilitário interno do Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Editar" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Remover" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Os canais serão ordenados por ordem numérica, para permitir o arrastamento.\n" "Deseja continuar?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Circular à esquerda" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Circular à direita" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Editar o Canal" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Nome:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Número:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Origem:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frequência (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Taxa de símbolos (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulação:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Taxa de FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarização:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Seguimento:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Largura de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Taxa de FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Modo de transmissão:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Intervalo de guarda:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarquia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID do PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID do vídeo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID das legendas:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID do teletexto:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID da rede:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID da transmissão de transporte:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID do Serviço:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal de áudio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Codificado:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configurar a Televisão" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Pasta de gravações:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Seleccione a Pasta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Pasta de desvio de tempo:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Margem de início (minutos):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Margem de fim (minutos):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usar a codificação ISO 8859-1 em vez da ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Dados de sintonia actualizado a %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Actualizar os dados de sintonia pela Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "A sua posição (só necessária para o rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitude:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitude:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opções Gerais" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositivo %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Actualizar os Dados de Sintonia" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "A obter os dados de sintonia" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "A actualização dos dados de sintonia foi mal-sucedida." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Os dados de sintonia foram actualizados com sucesso.\n" "As alterações farão efeito após fechar a janela de configuração." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nome: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mover para a Esquerda" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Limpar" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mover para a Direita" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositivo não ligado." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cabo" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Auto-sintonizar" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Auto-sintonizar com deslocamentos de 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Auto-sintonizar na Austrália" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Auto-sintonizar em Itália" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Auto-sintonizar em Taiwan (Formosa)" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Fim do tempo-limite do sintonizador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Origem:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Sem Origem" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nome:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuração:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Interruptor DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de Posições" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Configuração do LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Configuração do LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Adicionar um Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satélite" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posição" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Remover o Satélite" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB Universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB banda-C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB Multi-Ponto Banda-C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB Personalizado" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Frequência de mudança (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF de banda baixa (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF de banda alta (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horizontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guia de Programação" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Gravar o Programa" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Procurar:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Início" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Duração" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Título" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "São usados todos os dispositivos para as gravações." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Não foi encontrado nenhum dispositivo." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Não foi encontrado nenhum dispositivo disponível." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Agenda da Gravação" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Nova" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Nome" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Editar o Item da Agenda" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Nome:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Início:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Duração:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Fim:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Repetição:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nunca" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diário" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Fornecedor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "S/R" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canais" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Limpar" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Sintonia de Canais" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Iniciar a Sintonia" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Sinal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "S/R:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonizado:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtro" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Aberto" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Rádio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Fornecedor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Adicionar um Filtrado" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Adicionar os Seleccionados" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultados da Sintonia" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "'Transponder' Actual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Parar a Sintonia" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guia de Programação" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Agenda da Gravação" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Gravação Instantânea" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configurar a Televisão..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Procurar:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "O Kaffeine está de momento a gravar programas.\n" "Deseja mesmo fechar a aplicação?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "O Kaffeine tem gravações agendadas.\n" "Deseja mesmo fechar a aplicação?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Gravação Instantânea Iniciada" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Gravação Instantânea Parada" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Título" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Álbum" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Número de Faixa" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Duração" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Lista de Reprodução Temporária" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repetir" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleatório" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Adicionar Legendas" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Mudar o Nome" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Lista de Reprodução sem Nome" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Ficheiros de Legendas" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Lista de Reprodução XSPF\n" "*.m3u|Lista de Reprodução M3U\n" "*.pls|Lista de Reprodução PLS" kaffeine-1.2.2/po/pt/CMakeLists.txt0000644000175000017500000000012711552636277016531 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(pt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/th/0000755000175000017500000000000011552636277013761 5ustar lxuserlxuserkaffeine-1.2.2/po/th/kaffeine.po0000644000175000017500000010023211552636277016067 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Thanomsub Noppaburana , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-03-06 01:12+0700\n" "Last-Translator: Thanomsub Noppaburana \n" "Language-Team: Thai \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=1; plural=0;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "เครื่องเล่นสื่อประสมสำหรับ KDE พร้อมการรองรับโทรทัศน์ดิจิทัล" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "สงวนลิขสิทธิ์ (C) 2007-2010 กลุ่มผู้เขียน Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "ผู้ดูแล" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 เล่นแฟ้ม" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 เล่นแผ่นซีดีเสียง" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 เล่นแผ่นซีดีวีดิโอ" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 เล่นแผ่นดีวีดีวีดิโอ" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 โทรทัศน์ดิจิทัล" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "ปรับแต่ง Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "โหมดขนาดเล็ก" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "โหมดขนาดเล็ก" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "โหมดเต็มจอภาพ" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "ระยะเวลาของการข้ามแบบสั้น ๆ:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "ระยะเวลาของการข้ามแบบยาว ๆ:" #: mainwindow.cpp:282 msgid "&File" msgstr "แ&ฟ้ม" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "เปิดที่อยู่ URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "เล่นแผ่นซีดีเสียง" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "เล่นแผ่นซีดีวีดิโอ" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "เล่นแผ่นดีวีดีวีดิโอ" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "เล่นแผ่นดีวีดีวีดิโอ" #: mainwindow.cpp:322 msgid "&Playback" msgstr "เ&ล่นกลับ" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&รายการเล่น" #: mainwindow.cpp:329 msgid "&Television" msgstr "โ&ทรทัศน์" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&ตั้งค่า" #: mainwindow.cpp:352 msgid "Start" msgstr "เริ่ม" #: mainwindow.cpp:353 msgid "Playback" msgstr "เล่นกลับ" #: mainwindow.cpp:354 msgid "Playlist" msgstr "รายการเล่น" #: mainwindow.cpp:356 msgid "Television" msgstr "โทรทัศน์" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "เริ่มในโหมดเต็มหน้าจอ" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(ตัวเลือกที่จะเลิกใช้งานแล้ว)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "เล่นช่องของโทรทัศน์" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "เล่นช่องโทรทัศน์ที่ได้ปรับไว้ล่าสุด" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "ดึงข้อมูล dvb (ตัวเลือกการดีบั๊ก)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "แฟ้ม/ตำแหน่ง URL ที่จะเล่น" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "เปิดที่อยู่ URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "ป้อนที่อยู่ URL:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "กระโดดไปยังตำแหน่ง" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "ป้อนตำแหน่ง:" #: mediawidget.cpp:237 msgid "Previous" msgstr "ก่อนหน้า" #: mediawidget.cpp:245 msgid "Play" msgstr "เล่น" #: mediawidget.cpp:246 msgid "Pause" msgstr "หยุดชั่วคราว" #: mediawidget.cpp:253 msgid "Stop" msgstr "หยุด" #: mediawidget.cpp:259 msgid "Next" msgstr "ถัดไป" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "โหมดเต็มจอภาพ" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "โหมดขนาดเล็ก" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "ปิด" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "เสียง" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "เพิ่มระดับเสียง" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "ลดระดับเสียง" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "ตัดเสียง" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "วีดิโอ" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "ปรับเกลี่ยเส้นแตก" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "สัดส่วนภาพ" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "อัตโนมัติ" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "พอดีกับหน้าต่าง" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "ขนาด 4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "ขนาด 16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "ปรับขนาดอัตโนมัติ" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "ปิด" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "ขนาดตามต้นฉบับ" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "ขนาดสองเท่าตัว" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "แถบเลื่อนปรับระดับเสียง" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "กระโดดไปยังตำแหน่ง" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "ข้าม" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "ข้ามย้อนกลับไป %1 วินาที" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "ข้ามไปข้างหน้า %1 วินาที" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "แถบเลื่อนการค้นหา" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "เปิด/ปิดเมนู" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "ชื่อ" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "บทที่" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "มุมกล้อง" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "สลับไปมาระหว่างการแสดงเวลาที่ใช้ไปและเวลาที่เหลืออยู่" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "แฟ้มสื่อแบบต่าง ๆ ที่รองรับ" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "แฟ้มทั้งหมด" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "ออกจากโหมดเต็มจอภาพ" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "ออกจากโหมดขนาดเล็ก" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "หยุดอยู่" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "ตัดเสียง: ใช่" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "ตัดเสียง: ไม่ใช่" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "ระดับเสียง: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "ปรับเกลี่ยเส้นแตก: ใช่" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "ปรับเกลี่ยเส้นแตก: ไม่ใช่" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "หยุดชั่วคราวอยู่" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "กำลังเล่น" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "ถนอมทรัพย์ นพบูรณ์" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "donga.nb@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "โปรดติดตั้งส่วนเสริม SQLite ของ Qt" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "ไม่สามารถเปิดฐานข้อมูล SQLite ได้" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "เครื่องมือภายในสำหรับ Kaffeine" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "ช่อง" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "หมายเลขช่อง" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "แก้ไข" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "เอาออก" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "แนวนอน" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "แนวตั้ง" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "ช่อง" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "ชื่อ:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "หมายเลขช่อง:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "ต้นทาง:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "ความถี่ (เมกะเฮิรตซ์):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "แบนด์วิท:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ค่าประจำตัวเครือข่าย:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ค่าประจำตัวบริการ:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "ช่องเสียง:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "ปรับแต่งโทรทัศน์" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "โฟลเดอร์ของการบันทึก:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "เลือกโฟลเดอร์" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "โฟลเดอร์ของการปรับเลื่อนเวลา:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "ข้อมูลการสแกนถูกปรับปรุงล่าสุดเมื่อ %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "ปรับปรุงข้อมูลการสแกนผ่านทางอินเทอร์เน็ต" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "เส้นรุ้ง:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "เส้นแวง:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "ตัวเลือกทั่วไป" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "อุปกรณ์ %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "ปรับปรุงข้อมูลการสแกนผ่านทางอินเทอร์เน็ต" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "กำลังดาวน์โหลดข้อมูลการสแกน" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "การปรับปรุงข้อมูลการสแกนล้มเหลว" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "ข้อมูลการสแกนถูกปรับปรุงเสร็จเรียบร้อยแล้ว โปรดตรวจสอบว่า\n" "ได้รับผลอย่างไรบ้างหลังจากที่คุณได้ปิดกล่องปรับแต่งค่าแล้ว" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "ชื่อ: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "ยังไม่ได้เชื่อมต่ออุปกรณ์" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr " " #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "เคเบิล" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "สแกนอัตโนมัติ" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "สแกนอัตโนมัติโดยใช้ช่วงห่างทีละ 167 กิโลเฮิรตซ์" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "สแกนอัตโนมัติ - ออสเตรเลีย" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "สแกนอัตโนมัติ - อิตาลี" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "สแกนอัตโนมัติ - ไต้หวัน" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "ต้นทาง:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "ชื่อ:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "การปรับแต่ง:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "ตั้งค่าต่าง ๆ ของ LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "ตั้งค่าต่าง ๆ ของ LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "เพิ่มดาวเทียม" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "ดาวเทียม" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "ตำแหน่ง" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "ย้ายดาวเทียม" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "แนะนำรายการ" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "จัดตารางการบันทึกรายการ" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "ค้นหา:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "เริ่ม" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "ระยะเวลา" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "รายการ" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "ไม่พบอุปกรณ์ใด ๆ ให้เลือกใช้" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "ไม่พบอุปกรณ์ใด ๆ ให้เลือกใช้" #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "จัดตารางการบันทึกรายการ" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "สร้างใหม่" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "ชื่อ" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "แก้ไขรายการของผังรายการ" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "ชื่อ:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "ช่อง:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "เริ่ม" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "ระยะเวลา:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "สิ้นสุด:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "เล่นซ้ำ:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "ไม่เลย" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "ทุกวัน" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "ผู้ให้บริการ" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "ช่องสัญญาณ" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "ล้าง" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "สแกนหาช่องสัญญาณ" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "เริ่มการสแกน" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "สัญญาณ:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "กรอง" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "ออกอากาศฟรี" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "วิทยุ" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "โทรทัศน์" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "ผู้ให้บริการ:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "เพิ่มที่ได้กรองไว้" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "เพิ่มที่เลือกไว้" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "ผลลัพธ์การสแกน" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "หยุดการสแกน" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "แนะนำรายการ" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "ข้อความบนหน้าจอ (OSD)" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "จัดตารางการบันทึกรายการ" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "บันทึกรายการทันที" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "ปรับแต่งโทรทัศน์" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "ค้นหา:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "ช่อง: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "การบันทึกรายการทันทีได้เริ่มแล้ว" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "การบันทึกรายการทันทีได้หยุดแล้ว" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "ชื่อ" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "ศิลปิน" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "อัลบั้ม" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "แทร็กที่" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "ความยาว" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "รายการเล่นชั่วคราว" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "เล่นซ้ำ" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "สุ่ม" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "เพิ่มดาวเทียม" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "เปลี่ยนชื่อ" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "รายการเล่นที่ยังไม่กำหนดชื่อ" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgctxt "file filter" #| msgid "All Files" msgctxt "file filter" msgid "Subtitle Files" msgstr "แฟ้มทั้งหมด" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|รายการเล่นแบบ XSPF\n" "*.m3u|รายการเล่นแบบ M3U\n" "*.pls|รายการเล่นแบบ PLS" #~ msgid "Channel Settings" #~ msgstr "ตั้งค่าช่อง" #~ msgid "Name" #~ msgstr "ชื่อ" #~ msgid "Edit" #~ msgstr "แก้ไข" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "เอาออก" #~ msgid "Remove" #~ msgstr "เอาออก" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "เริ่ม" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "เริ่ม:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "สร้างใหม่" #~ msgid "Duration" #~ msgstr "ระยะเวลา" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "ผังรายการ" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "ชื่อ" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "เรียกใหม่" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "รายการถูกจัดตารางเรียบร้อยแล้ว" kaffeine-1.2.2/po/th/CMakeLists.txt0000644000175000017500000000012711552636277016521 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(th ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/fi/0000755000175000017500000000000011552636277013744 5ustar lxuserlxuserkaffeine-1.2.2/po/fi/kaffeine.po0000644000175000017500000006652611552636277016073 0ustar lxuserlxuser# translation of kaffeine.po to Finnish # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Mikael Lammentausta , 2009. # Tommi Nieminen , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-05-20 22:01+0300\n" "Last-Translator: Tommi Nieminen \n" "Language-Team: Suomi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE:n mediasoitin, jossa on digi-TV-tuki." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Kaffeinen tekijät" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Ylläpitäjä" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Toista tiedosto" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Toista äänilevy" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Toista video-CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Toista DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digi-TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Kaffeinen asetukset" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Pienoistila" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Pienoistila" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Kokoruututila" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Lyhyen hyppäyksen kesto:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Pitkän hyppäyksen kesto:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Tiedosto" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Avaa verkko-osoite" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Toista äänilevy" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Toista video-CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Toista DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Toista DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Toista" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Soitto&lista" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisio" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Asetukset" #: mainwindow.cpp:352 msgid "Start" msgstr "Aloita" #: mainwindow.cpp:353 msgid "Playback" msgstr "Toista" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Soittolista" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisio" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Käynnistä kokoruututilassa" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(vanhentunut valitsin)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Näytä TV-kanava" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Näytä viimeksi viritetty TV-kanava" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Tulosta DVB-data (vianjäljitys)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Toistettavat tiedostot tai verkko-osoitteet" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Avaa verkko-osoite" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Syötä verkko-osoite:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Hyppää sijaintiin" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Syötä sijainti:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Edellinen" #: mediawidget.cpp:245 msgid "Play" msgstr "Toista" #: mediawidget.cpp:246 msgid "Pause" msgstr "Keskeytä" #: mediawidget.cpp:253 msgid "Stop" msgstr "Pysäytä" #: mediawidget.cpp:259 msgid "Next" msgstr "Seuraava" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Kokoruututila" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Pienoistila" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "ei käytössä" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Äänet" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Lisää äänenvoimakkuutta" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Vähennä äänenvoimakkuutta" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Mykistä äänet" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video:" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Lomituksen poisto" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Kuvasuhde" #: mediawidget.cpp:337 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Automatic" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automaattinen" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Sovita ikkunaan" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automaattinen koon muutos" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Ei käytössä" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Alkuperäinen koko" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Kaksinkertainen koko" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Äänenvoimakkuuden säädin" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Hyppää sijaintiin" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Ohita" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Ohita %1 s taaksepäin" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Ohita %1 s eteenpäin" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Hakusäädin" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Näytä tai piilota valikko" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Otsikko" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Luku" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Kuvakulma" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Vaihda kuluneen ja jäljellä olevan ajan näytön välillä" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Tuetut mediatiedostot" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Kaikki tiedostot" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Poistu kokoruututilasta" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Poistu pienoistilasta" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Pysäytetty" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Mykistetty" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Mykistys pois päältä" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Äänenvoimakkuus: %1 %" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Lomituksenpoisto" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Ei lomituksenpoistoa" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Keskeytetty" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Toisto käynnissä" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Mikael Lammentausta" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mikael.lammentausta+kdetrans@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Asenna Qt SQLite -liitännäinen." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "SQLite-tietokantaa ei voi avata." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Kaffeinen sisäinen apuohjelma." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanava" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Kanavapaikka" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Muokkaa" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Poista" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Vaaka" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Pysty" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanava" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nimi:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Kanavapaikka:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Lähde:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Taajuus (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbolitaajuus (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulaatio:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC-taajuus:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisaatio:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Kaistanleveys:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarkia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Videon PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Tekstitysten PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Teletext-PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Verkon PID:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Palvelun tunniste:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Äänikanava:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Salattu:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Määritä television asetukset" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Tallennuskansio:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Valitse kansio" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Tilapäiskansio:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Viritysasetukset päivitettu %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Hae viritysasetukset internetistä" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Sijaintisi (tarvitaan vain USALS rotorissa)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Leveysaste:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[E –90...90 P]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Pituusaste:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[L –180...180 I]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Yleiset asetukset" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Laite %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Hae viritysasetukset internetistä" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Haetaan viritysasetuksia" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Viritysasetusten haku epäonnistui." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Viritysasetukset noudettu. Uudet asetukset otetaan käyttöön, kun suljet " "tämän ikkunan." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nimi: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Siirrä vasemmalle" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Alusta" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Siirrä oikealle" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Laitetta ei ole kytketty." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kaapeli" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Antenni" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automaattinen haku" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automaattihaku 167 kHz siirtymin" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automaattihaku, Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automaattihaku, Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automaattihaku, Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Virittimen aikakatkaisu (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Lähde:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Ei lähdettä" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nimi:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Asetukset:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS Rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Mikropään (LNB) %1 asetukset" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Mikropään (LNB) asetukset" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Lisää satelliitti" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelliitti" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Sijainti" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Poista satelliitti" #: dvb/dvbconfigdialog.cpp:1076 #, fuzzy msgid "Universal LNB" msgstr "Mikropää (µ-LNB)" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-kaistan LNB" #: dvb/dvbconfigdialog.cpp:1084 #, fuzzy msgid "C-band Multipoint LNB" msgstr "C-kaistan LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Mukautettu LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Vaihda taajuutta (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Ohjelmaopas" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Ajastukset" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Haku:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Aloita" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Kesto" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Nimi" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Vastaanotinlaitetta ei löydy." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Vastaanotinlaitetta ei löydy." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Ajastukset" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Uusi" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nimi" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Muokkaa ajastusta" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nimi:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanava:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Aloita" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Kesto:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Loppu:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Toista:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Ei toistoa" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Päivittäin" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1 %" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Kanavapaketti" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "Signaali–kohina-suhde" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanavat" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Tyhjennä" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanavahaku" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Aloita haku" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signaali:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "Signaali–kohina-suhde:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Viritetty:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Suodatus" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Ilmaiskanavat" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Kanavapaketti:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Lisää suodatetut" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Lisää valitut" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Haun tulokset" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Vastaanotin" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Pysäytä haku" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Ohjelmaopas" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "Ruutunäyttö" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Ajastukset" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Tallenna heti" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Määritä television asetukset" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Haku:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanava: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Tallennus aloitettu" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Tallennus pysäytetty" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Nimi" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artisti" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Levy" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Kappaleen numero" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Kesto" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Tilapäinen soittolista" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Jatkuva toisto" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Satunnainen" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Lisää satelliitti" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Nimeä uudelleen" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Nimetön soittolista" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "Tekstitysten PID:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-soittolista\n" "*.m3u|M3U-soittolista\n" "*.pls|PLS-soittolista" #~ msgid "Channel Settings" #~ msgstr "Kanava-asetukset" #~ msgid "Name" #~ msgstr "Nimi" #~ msgid "Edit" #~ msgstr "Muokkaa" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Poista" #~ msgid "Remove" #~ msgstr "Poista" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Aloita" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Alku:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Uusi" #~ msgid "Duration" #~ msgstr "Kesto" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Ajasta ohjelma" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nimi" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Päivitä" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Ohjelma on nyt ajastettu." #~ msgid "Unknown playlist format." #~ msgstr "Tuntematon soittolistan muoto." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Satunnaistoisto" kaffeine-1.2.2/po/fi/CMakeLists.txt0000644000175000017500000000012711552636277016504 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(fi ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/be/0000755000175000017500000000000011552636277013734 5ustar lxuserlxuserkaffeine-1.2.2/po/be/kaffeine.po0000644000175000017500000006021411552636277016047 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Darafei Praliaskouski , 2008. msgid "" msgstr "" "Project-Id-Version: kaffeine4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2008-09-26 20:07+0300\n" "Last-Translator: Darafei Praliaskouski \n" "Language-Team: Belarusian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 0.2\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 #, fuzzy msgid "&1 Play File" msgstr "Граць файл..." #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:205 #, fuzzy msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Файлы настаўленняў" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Поўнаэкранны рэжым" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Файлы настаўленняў" #: mainwindow.cpp:282 msgid "&File" msgstr "" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Адкрыць URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:322 #, fuzzy msgid "&Playback" msgstr "Прайгравальнік" #: mainwindow.cpp:325 #, fuzzy msgctxt "menu bar" msgid "Play&list" msgstr "Граць" #: mainwindow.cpp:329 msgid "&Television" msgstr "" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Настаўленні" #: mainwindow.cpp:352 #, fuzzy msgid "Start" msgstr "Пачатковы" #: mainwindow.cpp:353 #, fuzzy msgid "Playback" msgstr "Граць" #: mainwindow.cpp:354 #, fuzzy msgid "Playlist" msgstr "Граць" #: mainwindow.cpp:356 msgid "Television" msgstr "" #: mainwindow.cpp:506 #, fuzzy #| msgid "Full Screen Mode" msgid "Start in full screen mode" msgstr "Поўнаэкранны рэжым" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Адкрыць URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Вызначце URL:" #: mediawidget.cpp:156 #, fuzzy msgctxt "@title:window" msgid "Jump to Position" msgstr "Пазіцыя" #: mediawidget.cpp:161 #, fuzzy #| msgid "Enter a URL:" msgid "Enter a position:" msgstr "Вызначце URL:" #: mediawidget.cpp:237 #, fuzzy msgid "Previous" msgstr "Папярэдні" #: mediawidget.cpp:245 #, fuzzy msgid "Play" msgstr "Граць" #: mediawidget.cpp:246 #, fuzzy msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Спыніць" #: mediawidget.cpp:259 #, fuzzy msgid "Next" msgstr "Наступная" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Поўнаэкранны рэжым" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Radio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Радыё" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 #, fuzzy msgctxt "'Playback' menu" msgid "Video" msgstr "&Паказаць" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 #, fuzzy msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Пазіцыя" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Поўнаэкранны рэжым" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Спыніць" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, fuzzy, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Назва:" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 #, fuzzy msgctxt "osd" msgid "Paused" msgstr "Pause" #: mediawidget.cpp:1299 #, fuzzy msgctxt "osd" msgid "Playing" msgstr "Граць" #: rc.cpp:1 #, fuzzy msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Дарафей Праляскоўскі" #: rc.cpp:2 #, fuzzy msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "komzpa@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channels" msgctxt "@title:column tv show" msgid "Channel" msgstr "Каналы" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy msgctxt "@title:column tv channel" msgid "Number" msgstr "Лік" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy msgctxt "@action" msgid "Remove" msgstr "Назва" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channels" msgctxt "@title:window" msgid "Edit Channel" msgstr "Каналы" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy msgctxt "@label tv channel" msgid "Name:" msgstr "Імя:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy msgctxt "@label tv channel" msgid "Number:" msgstr "Лік" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Крыніца:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 #, fuzzy msgid "Modulation:" msgstr "Файлы настаўленняў" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 #, fuzzy msgid "Polarization:" msgstr "Пазіцыя" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 #, fuzzy #| msgid "Search:" msgid "Hierarchy:" msgstr "Шукаць:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 #, fuzzy msgid "Service ID:" msgstr "Прылада:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy msgctxt "@title:window" msgid "Configure Television" msgstr "Файлы настаўленняў" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, fuzzy, kde-format msgid "Device %1" msgstr "Прылада:" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, fuzzy, kde-format msgid "Name: %1" msgstr "Назва:" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Крыніца:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 #, fuzzy #| msgid "Source:" msgid "No Source" msgstr "Крыніца:" #: dvb/dvbconfigdialog.cpp:680 #, fuzzy msgid "Name:" msgstr "Імя:" #: dvb/dvbconfigdialog.cpp:779 #, fuzzy msgid "Configuration:" msgstr "Файлы настаўленняў" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 #, fuzzy msgid "Positions Rotor" msgstr "Пазіцыя" #: dvb/dvbconfigdialog.cpp:801 #, fuzzy, kde-format #| msgid "&Settings" msgid "LNB %1 Settings" msgstr "&Настаўленні" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 #, fuzzy #| msgid "&Settings" msgid "LNB Settings" msgstr "&Настаўленні" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 #, fuzzy msgid "Add Satellite" msgstr "Дадаць выбраны" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 #, fuzzy msgid "Position" msgstr "Пазіцыя" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Шукаць:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy msgctxt "@title:column tv show" msgid "Start" msgstr "Пачатковы" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy msgctxt "@title:column tv show" msgid "Duration" msgstr "Файлы настаўленняў" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy msgctxt "@action" msgid "New" msgstr "Новая" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy msgctxt "@title:column recording" msgid "Name" msgstr "Назва" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy msgctxt "@label recording" msgid "Name:" msgstr "Імя:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channels" msgctxt "@label tv show" msgid "Channel:" msgstr "Каналы" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy msgctxt "@label tv show" msgid "Start:" msgstr "Пачатковы" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy msgctxt "@label tv show" msgid "Duration:" msgstr "Файлы настаўленняў" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "" #: dvb/dvbscandialog.cpp:209 #, fuzzy msgid "Provider" msgstr "Пастаўшчык: %1" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Каналы" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:267 #, fuzzy #| msgid "Channels" msgid "Channel Scan" msgstr "Каналы" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 #, fuzzy msgid "Start Scan" msgstr "Пачатковы" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 #, fuzzy msgid "Filter" msgstr "Фільтр" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радыё" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 #, fuzzy msgid "Provider:" msgstr "Пастаўшчык: %1" #: dvb/dvbscandialog.cpp:330 #, fuzzy msgid "Add Filtered" msgstr "Фільтр" #: dvb/dvbscandialog.cpp:334 #, fuzzy msgid "Add Selected" msgstr "Дадаць выбраны" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 #, fuzzy #| msgid "Stop" msgid "Stop Scan" msgstr "Спыніць" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Файлы настаўленняў" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Шукаць:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channels" msgctxt "osd" msgid "Channel: %1_" msgstr "Каналы" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy msgctxt "playlist track" msgid "Track Number" msgstr "Лік" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Граць" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Радыё" #: playlist/playlisttab.cpp:402 #, fuzzy msgid "Add Subtitle" msgstr "Дадаць выбраны" #: playlist/playlisttab.cpp:421 #, fuzzy msgctxt "rename an entry in a list" msgid "Rename" msgstr "Назва" #: playlist/playlisttab.cpp:630 #, fuzzy msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Граць" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #, fuzzy #~| msgid "Channels" #~ msgid "Channel Settings" #~ msgstr "Каналы" #, fuzzy #~ msgid "Name" #~ msgstr "Назва" #, fuzzy #~ msgid "Remove" #~ msgstr "Назва" #, fuzzy #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Новая" #, fuzzy #~ msgid "Duration" #~ msgstr "Файлы настаўленняў" #, fuzzy #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Назва" #~ msgid "Open file" #~ msgstr "Адкрыць файл" #, fuzzy #~ msgid "Player" #~ msgstr "&Прайгравальнік" #, fuzzy #~ msgctxt "View|Full Screen Mode" #~ msgid "F" #~ msgstr "F%1" #, fuzzy #~ msgid "Delete all" #~ msgstr "Выдаліць ус&е" #, fuzzy #~ msgid "Change icon" #~ msgstr "Змяніць значку" kaffeine-1.2.2/po/be/CMakeLists.txt0000644000175000017500000000012711552636277016474 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(be ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/nn/0000755000175000017500000000000011552636277013761 5ustar lxuserlxuserkaffeine-1.2.2/po/nn/kaffeine.po0000644000175000017500000005055511552636277016103 0ustar lxuserlxuser# Translation of kaffeine to Norwegian Nynorsk # msgid "" msgstr "" "Project-Id-Version: KDE 4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-03-25 03:24+0100\n" "PO-Revision-Date: 2008-11-26 17:46+0100\n" "Last-Translator: Karl Ove Hufthammer \n" "Language-Team: Norwegian Nynorsk \n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:204 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "" #: mainwindow.cpp:209 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:223 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:225 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:227 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "" #: mainwindow.cpp:229 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:234 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:242 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:281 msgid "&File" msgstr "" #: mainwindow.cpp:288 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "" #: mainwindow.cpp:299 mainwindow.cpp:503 msgid "Play Audio CD" msgstr "" #: mainwindow.cpp:303 mainwindow.cpp:504 msgid "Play Video CD" msgstr "" #: mainwindow.cpp:307 mainwindow.cpp:505 msgid "Play DVD" msgstr "" #: mainwindow.cpp:311 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "" #: mainwindow.cpp:321 msgid "&Playback" msgstr "" #: mainwindow.cpp:324 msgctxt "menu bar" msgid "Play&list" msgstr "" #: mainwindow.cpp:328 msgid "&Television" msgstr "" #: mainwindow.cpp:332 msgid "&Settings" msgstr "" #: mainwindow.cpp:351 msgid "Start" msgstr "" #: mainwindow.cpp:352 msgid "Playback" msgstr "" #: mainwindow.cpp:353 msgid "Playlist" msgstr "" #: mainwindow.cpp:355 msgid "Television" msgstr "" #: mainwindow.cpp:502 msgid "Start in full screen mode" msgstr "" #: mainwindow.cpp:506 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:507 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:508 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:509 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:510 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:663 msgctxt "@title:window" msgid "Open URL" msgstr "" #: mainwindow.cpp:663 msgid "Enter a URL:" msgstr "" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "" #: mediawidget.cpp:245 msgid "Play" msgstr "" #: mediawidget.cpp:246 msgid "Pause" msgstr "" #: mediawidget.cpp:253 msgid "Stop" msgstr "" #: mediawidget.cpp:259 msgid "Next" msgstr "" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:79 msgid "Horizontal" msgstr "" #: dvb/dvbchanneldialog.cpp:80 msgid "Vertical" msgstr "" #: dvb/dvbchanneldialog.cpp:81 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:82 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:270 dvb/dvbepgdialog.cpp:288 #: dvb/dvbepgdialog.cpp:449 dvb/dvbrecordingdialog.cpp:189 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "" #: dvb/dvbchanneldialog.cpp:272 msgid "Number" msgstr "" #: dvb/dvbchanneldialog.cpp:522 dvb/dvbrecordingdialog.cpp:62 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:530 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:69 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "" #: dvb/dvbchanneldialog.cpp:547 msgctxt "message box" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:596 msgid "Channel Settings" msgstr "" #: dvb/dvbchanneldialog.cpp:605 dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "" #: dvb/dvbchanneldialog.cpp:614 msgid "Number:" msgstr "" #: dvb/dvbchanneldialog.cpp:623 dvb/dvbconfigdialog.cpp:671 #: dvb/dvbscandialog.cpp:269 msgid "Source:" msgstr "" #: dvb/dvbchanneldialog.cpp:631 dvb/dvbchanneldialog.cpp:653 #: dvb/dvbchanneldialog.cpp:671 dvb/dvbchanneldialog.cpp:692 msgid "Frequency (MHz):" msgstr "" #: dvb/dvbchanneldialog.cpp:634 dvb/dvbchanneldialog.cpp:655 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:636 dvb/dvbchanneldialog.cpp:661 #: dvb/dvbchanneldialog.cpp:676 dvb/dvbchanneldialog.cpp:695 msgid "Modulation:" msgstr "" #: dvb/dvbchanneldialog.cpp:638 dvb/dvbchanneldialog.cpp:657 #: dvb/dvbchanneldialog.cpp:678 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:651 msgid "Polarization:" msgstr "" #: dvb/dvbchanneldialog.cpp:663 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:674 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:680 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:682 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:684 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:686 msgid "Hierarchy:" msgstr "" #: dvb/dvbchanneldialog.cpp:703 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:710 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:715 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:725 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:736 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:743 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:750 msgid "Service ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:757 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:781 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:279 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "" #: dvb/dvbepgdialog.cpp:39 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:58 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:66 msgctxt "@label:textbox" msgid "Search:" msgstr "" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "" #: dvb/dvbepgdialog.cpp:443 dvb/dvbrecordingdialog.cpp:191 msgctxt "@title:column tv show" msgid "Start" msgstr "" #: dvb/dvbepgdialog.cpp:445 dvb/dvbrecordingdialog.cpp:193 msgctxt "@title:column tv show" msgid "Duration" msgstr "" #: dvb/dvbepgdialog.cpp:447 msgctxt "@title:column tv show" msgid "Title" msgstr "" #: dvb/dvbliveview.cpp:207 dvb/dvbliveview.cpp:352 dvb/dvbscandialog.cpp:428 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:41 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:55 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "" #: dvb/dvbrecordingdialog.cpp:187 msgctxt "@title:column recording" msgid "Name" msgstr "" #: dvb/dvbrecordingdialog.cpp:281 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:289 msgctxt "@label recording" msgid "Name:" msgstr "" #: dvb/dvbrecordingdialog.cpp:302 msgctxt "@label tv show" msgid "Channel:" msgstr "" #: dvb/dvbrecordingdialog.cpp:312 msgctxt "@label tv show" msgid "Start:" msgstr "" #: dvb/dvbrecordingdialog.cpp:320 msgctxt "@label tv show" msgid "Duration:" msgstr "" #: dvb/dvbrecordingdialog.cpp:329 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:333 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:337 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:341 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "" #: dvb/dvbscandialog.cpp:256 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "" #: dvb/dvbscandialog.cpp:266 msgid "Channel Scan" msgstr "" #: dvb/dvbscandialog.cpp:274 dvb/dvbscandialog.cpp:387 msgid "Start Scan" msgstr "" #: dvb/dvbscandialog.cpp:286 msgid "Signal:" msgstr "" #: dvb/dvbscandialog.cpp:291 msgid "SNR:" msgstr "" #: dvb/dvbscandialog.cpp:296 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:309 msgid "Filter" msgstr "" #: dvb/dvbscandialog.cpp:312 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:315 msgid "Radio" msgstr "" #: dvb/dvbscandialog.cpp:318 msgid "TV" msgstr "" #: dvb/dvbscandialog.cpp:321 msgid "Provider:" msgstr "" #: dvb/dvbscandialog.cpp:329 msgid "Add Filtered" msgstr "" #: dvb/dvbscandialog.cpp:333 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:339 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:355 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:433 msgid "Stop Scan" msgstr "" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "" #: dvb/dvbtab.cpp:278 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "" #: dvb/dvbtab.cpp:290 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:300 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:359 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:363 dvb/dvbtab.cpp:373 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" kaffeine-1.2.2/po/nn/CMakeLists.txt0000644000175000017500000000012711552636277016521 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(nn ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/lt/0000755000175000017500000000000011552636277013765 5ustar lxuserlxuserkaffeine-1.2.2/po/lt/kaffeine.po0000644000175000017500000006265511552636277016113 0ustar lxuserlxuser# Lithuanian translations for l package. # Copyright (C) 2009 This_file_is_part_of_KDE # This file is distributed under the same license as the l package. # Andrius Štikonas , 2009. # msgid "" msgstr "" "Project-Id-Version: l 10n\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2009-06-06 20:46+0300\n" "Last-Translator: Andrius Štikonas \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==1 && n%100!=11 ? 1 : n%" "10>=2 && (n%100<10 || n%100>=20) ? 2 : 3);\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "KDE media grotuvas su skaitmeninės TV palaikymu." #: main.cpp:68 backend-xine/xineapplication.cpp:991 #, fuzzy #| msgid "(C) 2007-2009 The Kaffeine Authors" msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2009 Kaffeine autoriai" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Prižiūrėtojas" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Groti failą" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Groti Audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Groti Video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Groti DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Skaitmeninė TV" #: mainwindow.cpp:205 #, fuzzy #| msgid "Configuration:" msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Konfigūracija:" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Viso ekrano veiksena" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 #, fuzzy #| msgid "Configuration:" msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Konfigūracija:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Failas" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Atverti URL" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Groti Audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Groti Video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Groti DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Groti DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Grojimas" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Grojaraštis" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televizija" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Nustatymai" #: mainwindow.cpp:352 msgid "Start" msgstr "Pradėti" #: mainwindow.cpp:353 msgid "Playback" msgstr "Grojimas" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Grojaraštis" #: mainwindow.cpp:356 msgid "Television" msgstr "Televizija" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "" #: mainwindow.cpp:510 #, fuzzy #| msgctxt "playlist menu" #| msgid "Repeat" msgctxt "command line option" msgid "(deprecated option)" msgstr "Kartoti" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Atverti URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Įveskite URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "" #: mediawidget.cpp:245 msgid "Play" msgstr "Groti" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pauzė" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stabdyti" #: mediawidget.cpp:259 msgid "Next" msgstr "" #: mediawidget.cpp:269 mediawidget.cpp:547 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Viso ekrano veiksena" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "" #: mediawidget.cpp:293 #, fuzzy #| msgid "Audio" msgctxt "'Playback' menu" msgid "Audio" msgstr "Audio" #: mediawidget.cpp:296 #, fuzzy #| msgid "Increase Volume" msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Pagarsinti" #: mediawidget.cpp:302 #, fuzzy #| msgid "Decrease Volume" msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Patildyti" #: mediawidget.cpp:307 #, fuzzy #| msgid "Mute Volume" msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Išjungti garsą" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "" #: mediawidget.cpp:337 #, fuzzy #| msgctxt "aspect ratio" #| msgid "Automatic" msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatinis" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "" #: mediawidget.cpp:348 #, fuzzy #| msgctxt "aspect ratio" #| msgid "4:3" msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 #, fuzzy #| msgctxt "aspect ratio" #| msgid "16:9" msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dvigubas dydis" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 #, fuzzy #| msgid "Select Folder" msgid "Seek Slider" msgstr "Pasirinkite aplanką" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "" #: mediawidget.cpp:463 #, fuzzy #| msgid "&File" msgctxt "dvd navigation" msgid "Title" msgstr "&Failas" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "" #: mediawidget.cpp:475 #, fuzzy #| msgid "Angle" msgctxt "dvd navigation" msgid "Angle" msgstr "Kampas" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 #, fuzzy #| msgctxt "file filter description" #| msgid "Supported media files" msgctxt "file filter" msgid "Supported Media Files" msgstr "Palaikomi media failai" #: mediawidget.cpp:531 #, fuzzy #| msgctxt "file filter description" #| msgid "All files" msgctxt "file filter" msgid "All Files" msgstr "Visi failai" #: mediawidget.cpp:563 #, fuzzy #| msgid "Full Screen Mode" msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Viso ekrano veiksena" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 #, fuzzy #| msgid "Stop" msgctxt "osd" msgid "Stopped" msgstr "Stabdyti" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Garsumas: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pristabdyta" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Grojama" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Andrius Štikonas" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "stikonas@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanalas" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Numeris" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Keisti" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgctxt "remove an item from a list" #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Pašalinti" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horizontali" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikali" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Apskritiminė kairioji" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Apskritiminė dešinioji" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanalas" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Pavadinimas:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Numeris:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Dažnis (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Moduliacija:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Poliarizacija:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchija:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Konfigūruoti televiziją" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Pasirinkite aplanką" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Platuma:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[P -90 ... 90 Š]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Ilguma:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[V -180 ... 180 R]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Bendri nustatymai" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Įrenginys %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "" #: dvb/dvbconfigdialog.cpp:461 #, fuzzy #| msgctxt "playlist menu" #| msgid "Repeat" msgid "Reset" msgstr "Kartoti" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "" #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 #, fuzzy #| msgid "DVB-S" msgid "DVB-S2" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Antžeminė" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoskanavimas" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Pavadinimas:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Konfigūracija:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 nustatymai" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB nustatymai" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Pridėti palydovą" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Palydovas" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Ieškoti:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 – %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Pradėti" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Trukmė" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "&File" msgctxt "@title:column tv show" msgid "Title" msgstr "&Failas" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "" #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "" #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Naujas" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Pavadinimas" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Pavadinimas:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanalas:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Pradėti" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Trukmė:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Baigti:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgctxt "playlist menu" #| msgid "Repeat" msgctxt "@label recording" msgid "Repeat:" msgstr "Kartoti" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Tiekėjas" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanalai" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Išvalyti" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanalų skanavimas" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Pradėti skanavimą" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signalas:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtras" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radijas" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Tiekėjas:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Stabdyti skanavimą" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Konfigūruoti televiziją" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Ieškoti:" #: dvb/dvbtab.cpp:279 #, fuzzy, kde-format #| msgid "Channel:" msgctxt "osd" msgid "Channel: %1_" msgstr "Kanalas:" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 #, fuzzy #| msgid "&File" msgctxt "playlist track" msgid "Title" msgstr "&Failas" #: playlist/playlistmodel.cpp:785 #, fuzzy #| msgid "Atsc" msgctxt "playlist track" msgid "Artist" msgstr "Atsc" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "" #: playlist/playlistmodel.cpp:789 #, fuzzy #| msgid "Number" msgctxt "playlist track" msgid "Track Number" msgstr "Numeris" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "" #: playlist/playlisttab.cpp:367 #, fuzzy #| msgid "Playlist" msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Grojaraštis" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Kartoti" #: playlist/playlisttab.cpp:397 #, fuzzy #| msgid "Radio" msgctxt "playlist menu" msgid "Random" msgstr "Radijas" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Pridėti palydovą" #: playlist/playlisttab.cpp:421 #, fuzzy #| msgctxt "remove an item from a list" #| msgid "Remove" msgctxt "rename an entry in a list" msgid "Rename" msgstr "Pašalinti" #: playlist/playlisttab.cpp:630 #, fuzzy #| msgid "Playlist" msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Grojaraštis" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgctxt "file filter description" #| msgid "All files" msgctxt "file filter" msgid "Subtitle Files" msgstr "Visi failai" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" #~ msgid "Channel Settings" #~ msgstr "Kanalo nustatymai" #~ msgid "Name" #~ msgstr "Pavadinimas" #~ msgid "Edit" #~ msgstr "Keisti" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Pašalinti" #, fuzzy #~| msgctxt "remove an item from a list" #~| msgid "Remove" #~ msgid "Remove" #~ msgstr "Pašalinti" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Pradėti" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Pradėti:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Naujas" #~ msgid "Duration" #~ msgstr "Trukmė" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Pavadinimas" #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Maišyti" kaffeine-1.2.2/po/lt/CMakeLists.txt0000644000175000017500000000012711552636277016525 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(lt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/nb/0000755000175000017500000000000011552636277013745 5ustar lxuserlxuserkaffeine-1.2.2/po/nb/kaffeine.po0000644000175000017500000006037711552636277016072 0ustar lxuserlxuser# Translation of kaffeine to Norwegian Bokmål # # Bjørn Kvisli , 2008. # Bjørn Steensrud , 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: KDE 4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-03-25 03:24+0100\n" "PO-Revision-Date: 2011-02-24 14:35+0100\n" "Last-Translator: Bjørn Steensrud \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.1\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: main.cpp:66 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "En mediaspiller for KDE med støtte for digital-TV." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2010 Kaffeine-forfatterne" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Vedlikeholder" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Spill av fil" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Spill lyd-CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Spill video-CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Spill DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digital-TV" #: mainwindow.cpp:204 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Sett opp Kaffeine" #: mainwindow.cpp:209 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Visningsmodus ved oppstart:" #: mainwindow.cpp:223 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normalmodus" #: mainwindow.cpp:225 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimal modus" #: mainwindow.cpp:227 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Fullskjermmodus" #: mainwindow.cpp:229 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Husk siste innstilling" #: mainwindow.cpp:234 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Varighet for kort hopp:" #: mainwindow.cpp:242 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Varighet for langt hopp:" #: mainwindow.cpp:281 msgid "&File" msgstr "&Fil" #: mainwindow.cpp:288 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Åpne URL …" #: mainwindow.cpp:299 mainwindow.cpp:503 msgid "Play Audio CD" msgstr "Spill lyd-CD" #: mainwindow.cpp:303 mainwindow.cpp:504 msgid "Play Video CD" msgstr "Spill video-CD" #: mainwindow.cpp:307 mainwindow.cpp:505 msgid "Play DVD" msgstr "Spill DVD" #: mainwindow.cpp:311 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Spill DVD-mappe" #: mainwindow.cpp:321 msgid "&Playback" msgstr "Avs&pilling" #: mainwindow.cpp:324 msgctxt "menu bar" msgid "Play&list" msgstr "Spi&lleliste" #: mainwindow.cpp:328 msgid "&Television" msgstr "&Fjernsyn" #: mainwindow.cpp:332 msgid "&Settings" msgstr "&Innstillinger" #: mainwindow.cpp:351 msgid "Start" msgstr "Start" #: mainwindow.cpp:352 msgid "Playback" msgstr "Avspilling" #: mainwindow.cpp:353 msgid "Playlist" msgstr "Spilleliste" #: mainwindow.cpp:355 msgid "Television" msgstr "Fjernsyn" #: mainwindow.cpp:502 msgid "Start in full screen mode" msgstr "Start med fullskjerm" #: mainwindow.cpp:506 msgctxt "command line option" msgid "(deprecated option)" msgstr "(frarådet valg)" #: mainwindow.cpp:507 msgctxt "command line option" msgid "Play TV channel" msgstr "Spill TV-kanal" #: mainwindow.cpp:508 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Spill sist innstilte TV-kanal" #: mainwindow.cpp:509 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Dump dvb-data (feilsøkingsvalg)" #: mainwindow.cpp:510 msgid "Files or URLs to play" msgstr "Filer eller URL-er som skal spilles" #: mainwindow.cpp:663 msgctxt "@title:window" msgid "Open URL" msgstr "Åpne URL" #: mainwindow.cpp:663 msgid "Enter a URL:" msgstr "Skriv inn en nettadresse:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Hopp til posisjon" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Oppgi en posisjon:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Forrige" #: mediawidget.cpp:245 msgid "Play" msgstr "Spill" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stopp" #: mediawidget.cpp:259 msgid "Next" msgstr "Neste" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Fullskjermmodus" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimal modus" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "av" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Lyd" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Øk lydstyrke" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Minsk lydstyrke" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Demp lyd" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Linjedobler" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Bredde/høyde-forhold" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatisk" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Tilpass til vinduet" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Endre størrelse automatisk" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Av" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Opprinnelig størrelse" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dobbelt størrelse" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Lydstyrke-glidebryter" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Hopp til posisjon …" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Hopp over" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Hopp %1s bakover" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Hopp %1s forover" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Søkeglider" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Slå meny av/på" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Tittel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapittel" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Vinkel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Bytt mellom å vise forløpt og gjenstående tid" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Støttede mediafiler" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Alle Filer" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Avslutt fullskjermmodus" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Avslutt minimal modus" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Stoppet" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Demping på" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Demping av" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Lydstyrke: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Linjedobling på" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Linjedobling av" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pause" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Spiller av" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Bjørn Kvisli" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "bjorn.kvisli@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Installer SQLite-programtillegget for Qt." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Kan ikke åpne SQLite-databasen." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Internt verktøy for Kaffeine." #: dvb/dvbchanneldialog.cpp:79 msgid "Horizontal" msgstr "Vannrett" #: dvb/dvbchanneldialog.cpp:80 msgid "Vertical" msgstr "Loddrett" #: dvb/dvbchanneldialog.cpp:81 msgid "Circular left" msgstr "Sirkulært venstre" #: dvb/dvbchanneldialog.cpp:82 msgid "Circular right" msgstr "Sirkulært høyre" #: dvb/dvbchanneldialog.cpp:270 dvb/dvbepgdialog.cpp:288 #: dvb/dvbepgdialog.cpp:449 dvb/dvbrecordingdialog.cpp:189 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:272 msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:522 dvb/dvbrecordingdialog.cpp:62 msgctxt "@action" msgid "Edit" msgstr "" #: dvb/dvbchanneldialog.cpp:530 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:69 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "" #: dvb/dvbchanneldialog.cpp:547 msgctxt "message box" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Kanalene blir sortert etter nummer for at dra-og-slipp skal bli mulig.\n" "Vil du fortsette?" #: dvb/dvbchanneldialog.cpp:596 msgid "Channel Settings" msgstr "Kanalinnstillinger" #: dvb/dvbchanneldialog.cpp:605 dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Navn:" #: dvb/dvbchanneldialog.cpp:614 msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:623 dvb/dvbconfigdialog.cpp:671 #: dvb/dvbscandialog.cpp:269 msgid "Source:" msgstr "Kilde:" #: dvb/dvbchanneldialog.cpp:631 dvb/dvbchanneldialog.cpp:653 #: dvb/dvbchanneldialog.cpp:671 dvb/dvbchanneldialog.cpp:692 msgid "Frequency (MHz):" msgstr "Frekvens (MHz):" #: dvb/dvbchanneldialog.cpp:634 dvb/dvbchanneldialog.cpp:655 msgid "Symbol rate (kS/s):" msgstr "Symbol rate (kS/s):" #: dvb/dvbchanneldialog.cpp:636 dvb/dvbchanneldialog.cpp:661 #: dvb/dvbchanneldialog.cpp:676 dvb/dvbchanneldialog.cpp:695 msgid "Modulation:" msgstr "Modulasjon:" #: dvb/dvbchanneldialog.cpp:638 dvb/dvbchanneldialog.cpp:657 #: dvb/dvbchanneldialog.cpp:678 msgid "FEC rate:" msgstr "FEC-rate:" #: dvb/dvbchanneldialog.cpp:651 msgid "Polarization:" msgstr "Polarisering:" #: dvb/dvbchanneldialog.cpp:663 msgid "Roll-off:" msgstr "Demping:" #: dvb/dvbchanneldialog.cpp:674 msgid "Bandwidth:" msgstr "Båndbredde:" #: dvb/dvbchanneldialog.cpp:680 msgid "FEC rate LP:" msgstr "FEC-rate LP:" #: dvb/dvbchanneldialog.cpp:682 msgid "Transmission mode:" msgstr "Overføringsmodus:" #: dvb/dvbchanneldialog.cpp:684 msgid "Guard interval:" msgstr "Guard-intervall:" #: dvb/dvbchanneldialog.cpp:686 msgid "Hierarchy:" msgstr "Hierarki:" #: dvb/dvbchanneldialog.cpp:703 msgid "PMT PID:" msgstr "PMT-PID:" #: dvb/dvbchanneldialog.cpp:710 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:715 msgid "Subtitle PID:" msgstr "Undertekst-PID:" #: dvb/dvbchanneldialog.cpp:725 msgid "Teletext PID:" msgstr "Teletekst-PID" #: dvb/dvbchanneldialog.cpp:736 msgid "Network ID:" msgstr "Nettverks-ID:" #: dvb/dvbchanneldialog.cpp:743 msgid "Transport stream ID:" msgstr "Transportstrøm-ID:" #: dvb/dvbchanneldialog.cpp:750 msgid "Service ID:" msgstr "Tjeneste-ID:" #: dvb/dvbchanneldialog.cpp:757 msgid "Audio channel:" msgstr "Lydkanal:" #: dvb/dvbchanneldialog.cpp:781 msgid "Scrambled:" msgstr "Omstokket:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Sett opp fjernsyn" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Opptaksmappe::" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Velg mappe" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Utsettelsesmappe:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Startmarg (minutter):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Sluttmarg (minutter):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Bruk tegnsettet ISO 8859-1 i stedet for ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:279 #, kde-format msgid "Scan data last updated on %1" msgstr "Skannedata sist oppdatert %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Oppdater skannedata over Internett" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Din posisjon (trengs bare for USALS-rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Bredde:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 … 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Lengde:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 … 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Generelle valg" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Enhet: %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Oppdater skannedata" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Laster ned skannedata" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Feil ved oppdatering av skannedata." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Skannedata oppdatert. Endringer tas i bruk\n" "etter at oppsettsdialogen er lukket." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Navn: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Gå til venstre" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Tilbakestill" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Gå til høyre" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Enhet ikke tilkoblet." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Bakkesending" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoskann" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoskann med 167 kHz forskyvninger" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoskann Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoskann Italia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoskann Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tidsavbrudd (ms):" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Ingen kilde" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Oppsett:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC av/på" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Posisjonsrotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1-innstillinger" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-innstillinger" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Legg til satelitt" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelitt" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posisjon" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Fjern satelitt" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universell LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-band multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Selvvalgt LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Bytt frekvens (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Lavbånds LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Høybånds LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Vannrett LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Loddrett LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:39 msgctxt "@title:window" msgid "Program Guide" msgstr "Programliste" #: dvb/dvbepgdialog.cpp:58 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Ta opp programmet" #: dvb/dvbepgdialog.cpp:66 msgctxt "@label:textbox" msgid "Search:" msgstr "Søk:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 – %2

" #: dvb/dvbepgdialog.cpp:443 dvb/dvbrecordingdialog.cpp:191 msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:445 dvb/dvbrecordingdialog.cpp:193 msgctxt "@title:column tv show" msgid "Duration" msgstr "Varighet" #: dvb/dvbepgdialog.cpp:447 msgctxt "@title:column tv show" msgid "Title" msgstr "Tittel" #: dvb/dvbliveview.cpp:207 dvb/dvbliveview.cpp:352 dvb/dvbscandialog.cpp:428 msgctxt "message box" msgid "No available device found." msgstr "Fant ingen tilgjengelig enhet." #: dvb/dvbrecordingdialog.cpp:41 msgctxt "@title:window" msgid "Recording Schedule" msgstr "" #: dvb/dvbrecordingdialog.cpp:55 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "" #: dvb/dvbrecordingdialog.cpp:187 msgctxt "@title:column recording" msgid "Name" msgstr "" #: dvb/dvbrecordingdialog.cpp:281 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:289 msgctxt "@label recording" msgid "Name:" msgstr "" #: dvb/dvbrecordingdialog.cpp:302 msgctxt "@label tv show" msgid "Channel:" msgstr "" #: dvb/dvbrecordingdialog.cpp:312 msgctxt "@label tv show" msgid "Start:" msgstr "" #: dvb/dvbrecordingdialog.cpp:320 msgctxt "@label tv show" msgid "Duration:" msgstr "" #: dvb/dvbrecordingdialog.cpp:329 msgctxt "@label tv show" msgid "End:" msgstr "" #: dvb/dvbrecordingdialog.cpp:333 msgctxt "@label recording" msgid "Repeat:" msgstr "" #: dvb/dvbrecordingdialog.cpp:337 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "" #: dvb/dvbrecordingdialog.cpp:341 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0 %" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Leverandør" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanaler" #: dvb/dvbscandialog.cpp:256 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Tøm" #: dvb/dvbscandialog.cpp:266 msgid "Channel Scan" msgstr "Kanalskanning" #: dvb/dvbscandialog.cpp:274 dvb/dvbscandialog.cpp:387 msgid "Start Scan" msgstr "Start skanning" #: dvb/dvbscandialog.cpp:286 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:291 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:296 msgid "Tuned:" msgstr "Innstillt:" #: dvb/dvbscandialog.cpp:309 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:312 msgid "Free to air" msgstr "Fri til luft" #: dvb/dvbscandialog.cpp:315 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:318 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:321 msgid "Provider:" msgstr "Leverandør:" #: dvb/dvbscandialog.cpp:329 msgid "Add Filtered" msgstr "Legg til filtrert" #: dvb/dvbscandialog.cpp:333 msgid "Add Selected" msgstr "Legg til utvalgte" #: dvb/dvbscandialog.cpp:339 msgid "Scan Results" msgstr "Skanneresultater" #: dvb/dvbscandialog.cpp:355 msgid "Current Transponder" msgstr "Gjeldende transponder" #: dvb/dvbscandialog.cpp:433 msgid "Stop Scan" msgstr "Stopp skann" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programliste" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Timeplan for opptak" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Øyeblikksopptak" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Sett opp fjernsyn …" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Søk:" #: dvb/dvbtab.cpp:278 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:290 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine holder på med programopptak.\n" "Er du sikker på at du vil lukke programmet?" #: dvb/dvbtab.cpp:300 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine har programopptak på planen.\n" "Er du sikker på at du vil lukke programmet?" #: dvb/dvbtab.cpp:359 msgctxt "osd" msgid "Instant Record Started" msgstr "Øyeblikksopptak startet" #: dvb/dvbtab.cpp:363 dvb/dvbtab.cpp:373 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Øyeblikksopptak stoppet" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Tittel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artist" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Spornummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Lengde" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Midlertidig spilleliste" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Gjenta" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Tilfeldig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Legg til undertekst" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Gi nytt navn" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Spilleliste uten navn" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Undertekst-filer" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-spilleliste\n" "*.m3u|M3U-spilleliste\n" "*.pls|PLS-spilleliste" kaffeine-1.2.2/po/nb/CMakeLists.txt0000644000175000017500000000012711552636277016505 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(nb ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/ca@valencia/0000755000175000017500000000000011552636277015534 5ustar lxuserlxuserkaffeine-1.2.2/po/ca@valencia/kaffeine.po0000644000175000017500000007021711552636277017653 0ustar lxuserlxuser# Translation of kaffeine.po to Catalan # Copyright (C) 2009 This_file_is_part_of_KDE. # This file is distributed under the license LGPL version 2 or later. # # Manuel Tortosa , 2009. # Josep Ma. Ferrer , 2010. # Joan Maspons , 2010. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-12-15 00:34+0100\n" "Last-Translator: Joan Maspons \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Language: ca_ES\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Un reproductor de suports pel KDE amb implementació de TV digital." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Els autors del Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Mantenidor" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Reprodueix fitxer" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Reprodueix CD d'àudio" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Reprodueix CD de vídeo" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Reprodueix DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 TV digital" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Configura Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Mode mínim" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Mode mínim" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Mode de pantalla completa" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Mida del salt curt:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Mida del salt llarg:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fitxer" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Obri l'URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Reprodueix CD d'àudio" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Reprodueix CD de vídeo" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Reprodueix DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Reprodueix la carpeta del DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Re&producció" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Llista de reproducció" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televisió" #: mainwindow.cpp:333 msgid "&Settings" msgstr "A&rranjament" #: mainwindow.cpp:352 msgid "Start" msgstr "Inicia" #: mainwindow.cpp:353 msgid "Playback" msgstr "Reprodueix" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Llista de reproducció" #: mainwindow.cpp:356 msgid "Television" msgstr "Televisió" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Inicia en mode de pantalla completa" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(Opció obsoleta)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Reprodueix el canal de TV" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Reprodueix l'últim canal de TV sintonitzat" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Bolca la informació del DVD (opció del depurador)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Fitxers o URL a reproduir" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Obri l'URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Introduïu un URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Salta a la posició" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Introduïu una posició:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Anterior" #: mediawidget.cpp:245 msgid "Play" msgstr "Reprodueix" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pausa" #: mediawidget.cpp:253 msgid "Stop" msgstr "Atura" #: mediawidget.cpp:259 msgid "Next" msgstr "Següent" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Mode de pantalla completa" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Mode mínim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "desactivats" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Àudio" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Puja el volum" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Baixa el volum" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Silencia el volum" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Vídeo" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Desentrellaça" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Relació d'aspecte" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automàtica" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Ajusta a la finestra" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Reamidament automàtic" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Desactivat" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Mida original" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Mida doble" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Botó lliscador de volum" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Salta a la posició..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Salta" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Salta %1s arrere" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Salta %1s avant" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Botó lliscador de cerca" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Commuta el menú" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Títol" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Capítol" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Angle" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Commuta el visor del temps entre passat i restant" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Fitxers de suports acceptats" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Tots els fitxers" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Ix del mode de pantalla completa" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Ix del mode mínim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Aturat" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Silenci" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Volum activat" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Volum: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Desentrellaçat activat" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Desentrellaçat desactivat" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pausat" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "En reproducció" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Manuel Tortosa Moreno,Joan Maspons Ventura" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "manutortosa@gmail.com,joanmaspons@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Per favor, instal·leu el connector Qt SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "No es pot obrir la base de dades SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Utilitat interna pel Kaffeine" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Número" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Edita" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Elimina" #: dvb/dvbchanneldialog.cpp:315 #, fuzzy #| msgctxt "message box" #| msgid "" #| "The channels will be sorted by number to allow drag and drop.\n" #| "Do you want to continue?" msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Els canals s'ordenaran per número per permetre arrossegar-los i deixar-los " "anar.\n" "Voleu continuar?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horitzontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertical" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Cursor esquerre" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Cursor dret" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Canal" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Nom:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Número:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Font:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Freqüència (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Taxa de símbols (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulació:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Ràtio FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarització:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Amplada de banda:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "Ràtio FEC LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Mode de transmissió:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Interval de guàrdia:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Jerarquia:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PID de PMT:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID de vídeo:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID de subtítols:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID de teletext:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID de xarxa:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID de flux de transport:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID de servei:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Canal d'àudio:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Mesclat:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Configura la televisió" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Carpeta d'enregistrament:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Selecció de carpeta" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Carpeta de desplaçament temporal:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Comença marge (minuts):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Acaba marge (minuts):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Usa el joc de caràcters ISO 8859-1 en comptes de l'ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Dades d'exploració actualitzats per darrera vegada el %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Actualització de dades d'exploració mitjançant Internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "La vostra posició (només és necessari pel Rotor USALS)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Latitud:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Longitud:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[O -180... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Opcions generals" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Dispositiu %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Actualització de dades d'exploració mitjançant Internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "S'estan baixant les dades d'exploració" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Ha fallat en actualitzar les dades d'exploració." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Les dades d'exploració s'han actualitzat amb èxit. Els canvis\n" "seran efectius una vegada que tanqueu el diàleg de configuració." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Nom: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Mou a l'esquerra" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Inicialitza" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Mou a la dreta" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Dispositiu no connectat." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Cable" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Terrestre" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoscan" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoscan amb compensacions de 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoscan Australia" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoscan Itàlia" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoscan Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Temps d'espera del sintonitzador (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Font:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Cap font" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Nom:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Configuració:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Interruptor DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "Rotor USALS" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Rotor de posicions" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Arranjament de LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Arranjament de LNB" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Afig satèl·lit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satèl·lit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Posició" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Elimina satèl·lit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "LNB universal" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB de banda C" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "LNB multipunt de banda C" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "LNB personalitzat" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Freqüència d'intercanvi (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Banda baixa de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Banda alta de LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "LOF horitzontal (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "LOF vertical (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Guia de programes" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Planificació d'enregistrament" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Cerca:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Inici" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Durada" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Títol" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "No hi ha cap dispositiu disponible." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "No hi ha cap dispositiu disponible." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Planificació d'enregistrament" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nou" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Nom" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Edita l'entrada planificada" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Nom:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Canal:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Inicia" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Durada:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Final:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Repeteix:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Mai" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Diàriament" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Proveïdor" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Canals" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Neteja" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Exploració de canals" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Inicia l'exploració" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Senyal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Sintonitzat:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtre" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "A l'aire lliure" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Proveïdor:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Afig filtrat" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Afig seleccionat" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Resultats de l'exploració" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Transponedor actual" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Atura l'exploració" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Guia de programes" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Planificació d'enregistrament" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Enregistrament instantani" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Configura la televisió..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Cerca:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Canal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Actualment el Kaffeine està gravant programes.\n" "Segur que voleu tancar l'aplicació?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "El Kaffeine té gravacions programades.\n" "Segur que voleu tancar l'aplicació?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "S'ha iniciat l'enregistrament instantani" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "S'ha aturat l'enregistrament instantani" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Títol" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Artista" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Àlbum" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Número de peça" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Durada" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Llista de reproducció temporal" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Repeteix" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Aleatòria" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Afig subtítols" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Reanomena" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Llista de reproducció sense nom" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Fitxers de subtítols" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Llista de reproducció XSPF\n" "*.m3u|Llista de reproducció M3U\n" "*.pls|Llista de reproducció PLS" #~ msgid "Channel Settings" #~ msgstr "Paràmetres del canal" #~ msgid "Name" #~ msgstr "Nom" #~ msgid "Edit" #~ msgstr "Edita" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Elimina" #~ msgid "Remove" #~ msgstr "Elimina" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Inici" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Inici:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nou" #~ msgid "Duration" #~ msgstr "Durada" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Planificació de programes" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Nom" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Refresca" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "El programa s'ha planificat correctament." #~ msgid "Cannot open %1." #~ msgstr "No s'ha pogut obrir %1." #~ msgid "Unknown playlist format." #~ msgstr "Format de llista de reproducció desconegut." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Odre aleatori" kaffeine-1.2.2/po/ca@valencia/CMakeLists.txt0000644000175000017500000000014011552636277020267 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(ca@valencia ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/sr@ijekavian/0000755000175000017500000000000011552636277015754 5ustar lxuserlxuserkaffeine-1.2.2/po/sr@ijekavian/kaffeine.po0000644000175000017500000007263311552636277020077 0ustar lxuserlxuser# Translation of kaffeine.po into Serbian. # Slobodan Simic , 2009, 2010. # Dalibor Djuric , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-04-22 17:40+0200\n" "Last-Translator: Dalibor Djuric \n" "Language-Team: Serbian \n" "Language: sr@ijekavian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Generator: Lokalize 1.0\n" "X-Environment: kde\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Кафеин" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Медија плејер за КДЕ са подршком за дигиталну телевизију." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "© 2007–2010, аутори Кафеина" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Кристоф Пфистер" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Одржавалац" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Пусти фајл" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Пусти аудио ЦД" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Пусти видео ЦД" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Пусти ДВД" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Дигитална ТВ" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Подеси Кафеин" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Минималистички режим" #: mainwindow.cpp:226 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Minimal Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Минималистички режим" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Режим пуног екрана" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Мали прескок:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Велики прескок:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Фајл" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Отвори УРЛ" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Пусти аудио ЦД" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Пусти видео ЦД" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Пусти ДВД" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Пусти ДВД" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Пуштање" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Листа пуштања" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Телевизија" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Подешавање" #: mainwindow.cpp:352 msgid "Start" msgstr "Почетна" #: mainwindow.cpp:353 msgid "Playback" msgstr "Пуштање" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Листа пуштања" #: mainwindow.cpp:356 msgid "Television" msgstr "Телевизија" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Покрени у режиму пуног екрана" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(застарела опција)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Пусти ТВ канал" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Пусти последње подешен ТВ канал" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Попиши ДВБ податке (исправљачка опција)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Фајлови или УРЛ‑ови за пуштање" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Отвори УРЛ" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Унесите УРЛ:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Jump to Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Скочи на позицију" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Унесите позицију:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Претходно" #: mediawidget.cpp:245 msgid "Play" msgstr "Пусти" #: mediawidget.cpp:246 msgid "Pause" msgstr "Паузирај" #: mediawidget.cpp:253 msgid "Stop" msgstr "Заустави" #: mediawidget.cpp:259 msgid "Next" msgstr "Сљедеће" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Режим пуног екрана" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Минималистички режим" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "искључено" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Аудио" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Повећај јачину звука" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Смањи јачину звука" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Умукни звук" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Видео" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Расплићи" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Пропорција" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Аутоматски" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Уклопи у прозор" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Сам промијени величину" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Искључено" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Оригинална величина" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Двострука величина" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Клизач јачине звука" #: mediawidget.cpp:405 #, fuzzy #| msgid "Jump to Position" msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Скочи на позицију" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Скочи" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Скочи %1 сек. уназад" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Скочи %1 сек. унапријед" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Клизач тражења" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Укљученост менија" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Наслов" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Поглавље" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Угао" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Пребацивање између приказа протеклог и преосталог времена" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Подржани медија фајлови" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Сви фајлови" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Напусти режим пуног екрана" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Напусти минималистички режим" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Заустављено" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Утишано" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Чујно" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Јачина: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Расплитање укључено" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Расплитање искључено" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Паузирано" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Пуштено" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Слободан Симић" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "slsimic@gmail.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Инсталирајте прикључак СКуЛајта за КуТ." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Не могу да отворим СКуЛајтову базу." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Интерна алатка за Кафеин." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "број" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Уреди" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Уклони" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "хоризонтална" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "вертикална" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Кружно лијево" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Кружно десно" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Име:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Број:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Извор:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Фреквенција (MHz):" # http://en.wikipedia.org/wiki/Symbol_rate #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Модулациони проток (Bd):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Модулација:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "ФЕЦ проток:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Поларизација:" # http://en.wikipedia.org/wiki/Roll-off #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Фреквентни пад:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Опсег:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "ФЕЦ проток ниског приоритета:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Режим преноса:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Заштитни период:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Хијерархија:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "ПИД ПМТ‑а:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "ПИД видеа:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "ПИД титла:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "ПИД телетекста:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ИД мреже:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ИД преносног тока:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ИД сервиса:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Аудио канал:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Кодиран:" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Подешавање телевизије" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Фасцикла за снимање:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Изаберите фасциклу" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Фасцикла за помјерај:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Подаци о скенирању ажурирани %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Освежи податке о скенирању са Интернета" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Ваш положај (потребно само за УСАЛС роторе)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Гео. ширина:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[Ј -90 ... 90 С]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Гео. дужина:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[З -180 ... 180 И]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Опште опције" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Уређај %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Освежи податке о скенирању са Интернета" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Преузимам податке о скенирању" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Неуспело освежавање података о скенирању." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Подаци о скенирању успјешно ажурирани. Промјене\n" "ће имати утицаја након што затворите дијалог за подешавање." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Име: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Помјери улијево" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Ресетуј" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Помјери удесно" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Уређај није повезан." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "ДВБ‑Ц" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "ДВБ‑С2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "ДВБ‑С" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "ДВБ‑Т" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "АТСЦ" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Кабловска" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Земаљска" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Аутоскенирање" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Аутоскенирање са помјерајем од 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Аутоскенирање за Аустралију" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Аутоскенирање за Италију" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Аутоскенирање за Тајван" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "АТСЦ" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Прековреме бирача (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Извор:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Нема извора" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Име:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Подешавање:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Дајсек прекидач" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "УСАЛС ротор" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Позициони ротор" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Поставке ЛНБ‑а %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "Поставке ЛНБ‑а" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Додај сателит" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Сателит" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Положај" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Уклони сателит" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Универзални ЛНБ" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C‑појасни ЛНБ" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C‑појасни вишеодредишни ЛНБ" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Посебан ЛНБ" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Фреквенција пребацивања (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Нископојасни ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Високопојасни ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Хоризонтални ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Вертикални ЛОФ (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "ЛОФ (MHz)" #: dvb/dvbepgdialog.cpp:40 #, fuzzy #| msgid "Program Guide" msgctxt "@title:window" msgid "Program Guide" msgstr "Програмски водич" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Распоред снимања" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Тражи:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 — %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Почетна" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "трајање" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "наслов" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Није нађен доступан уређај." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Није нађен доступан уређај." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Распоред снимања" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Ново" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "име" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Уреди унос распореда" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Име:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Канал:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Почетна" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Трајање:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Завршетак:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Понови:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "никад" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "дневно" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "провајдер" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "СНР" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Канали" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Очисти" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Скенирање канала" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Почни скенирање" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Сигнал:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "СНР:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Подешено:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Филтер" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Слободно за емитовање" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радио" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "ТВ" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Провајдер:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Додај филтрирано" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Додај изабрано" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Резултати скенирања" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Тренутни транспондер" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Заустави скенирање" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Програмски водич" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "ОСД" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Распоред снимања" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Тренутно снимање" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Подешавање телевизије" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Тражи:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Канал: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Тренутно снимање је покренуто" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Тренутно снимање је заустављено" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "наслов" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "извођач" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "албум" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "број нумере" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "трајање" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Привремена листа пуштања" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Понови" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Насумично" #: playlist/playlisttab.cpp:402 #, fuzzy #| msgid "Add Satellite" msgid "Add Subtitle" msgstr "Додај сателит" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Преименуј" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Неименована листа пуштања" #: playlist/playlisttab.cpp:836 #, fuzzy #| msgid "Subtitle PID:" msgctxt "file filter" msgid "Subtitle Files" msgstr "ПИД титла:" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|ИксСПФ листа\n" "*.m3u|М3У листа\n" "*.pls|ПЛС листа" kaffeine-1.2.2/po/sr@ijekavian/CMakeLists.txt0000644000175000017500000000014111552636277020510 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(sr@ijekavian ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/bg/0000755000175000017500000000000011552636277013736 5ustar lxuserlxuserkaffeine-1.2.2/po/bg/kaffeine.po0000644000175000017500000006550211552636277016056 0ustar lxuserlxuser# translation of kaffeine.po to Bulgarian # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Yasen Pramatarov , 2010. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2010-07-03 01:21+0300\n" "Last-Translator: Yasen Pramatarov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "" #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Авторите на Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Поддръжка" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Настройки на Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "" #: mainwindow.cpp:228 #, fuzzy #| msgctxt "'Playback' menu" #| msgid "Full Screen Mode" msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Режим на цял екран" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "" #: mainwindow.cpp:282 msgid "&File" msgstr "&Файл" #: mainwindow.cpp:289 #, fuzzy #| msgid "Open URL" msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Отваряне на адрес" #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Изпълнение на звуков диск" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Изпълнение на видео диск" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Изпълнение на DVD" #: mainwindow.cpp:312 #, fuzzy #| msgid "Play DVD" msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Изпълнение на DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Изпълнение" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "&Списък" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Телевизия" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Настройки" #: mainwindow.cpp:352 msgid "Start" msgstr "Начало" #: mainwindow.cpp:353 msgid "Playback" msgstr "Изпълнение" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Списък" #: mainwindow.cpp:356 msgid "Television" msgstr "Телевизия" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Зареждане на програмата на цял екран" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "" #: mainwindow.cpp:667 #, fuzzy #| msgid "Open URL" msgctxt "@title:window" msgid "Open URL" msgstr "Отваряне на адрес" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Въведете адрес:" #: mediawidget.cpp:156 #, fuzzy #| msgid "Position" msgctxt "@title:window" msgid "Jump to Position" msgstr "Позиция" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "" #: mediawidget.cpp:237 msgid "Previous" msgstr "Предишно" #: mediawidget.cpp:245 msgid "Play" msgstr "Изпълнение" #: mediawidget.cpp:246 msgid "Pause" msgstr "Пауза" #: mediawidget.cpp:253 msgid "Stop" msgstr "Спиране" #: mediawidget.cpp:259 msgid "Next" msgstr "Следващо" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Режим на цял екран" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "изключено" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Аудио" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Увеличаване силата на звука" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Намаляване силата на звука" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Заглушаване на звука" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Видео" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Разплитане" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Съотношение" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Автоматично" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Напасване към прозореца" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Автоматично преоразмеряване" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Изключено" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Оригинален размер" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Двоен размер" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "" #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Пропускане" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Превключване на менюто" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Заглавие" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Глава" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Ъгъл" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Всички файлове" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Изход от пълен екран" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Спряно" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Сила на звука: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "На пауза" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Изпълнение" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Ясен Праматаров" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "yasen@lindeas.com" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "" #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "" #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "" #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 #, fuzzy #| msgid "Channel" msgctxt "@title:column tv show" msgid "Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Номер" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Редактиране" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Премахване" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Хоризонтално" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Вертикално" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Канал" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Име:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Номер:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Източник:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Честота (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Модулация:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Поляризация:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Режим на предаване:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Йерархия:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Идентификатор на услугата:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Звуков канал:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "" #: dvb/dvbconfigdialog.cpp:46 #, fuzzy #| msgid "Configure Television" msgctxt "@title:window" msgid "Configure Television" msgstr "Настройки на телевизията" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Папка за записи:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Избор на папка" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Широчина:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Дължина:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Общи настройки" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Устройство %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "" #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Име: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Придвижване наляво" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Възстановяване" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Придвижване надясно" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Устройството не е свързано." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Кабел" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Наземен" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Автоматично претърсване" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Автоматично претърсване с отмествания от 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Автоманично претърсване на Австралия" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Автоманично претърсване на Италия" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Автоманично претърсване на Тайван" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Изчакване на тунера (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Източник:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Няма източник" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Име:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Настройка:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Добавяне на спътник" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Спътник" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Позиция" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Премахване на спътник" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Търсене:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 #, fuzzy #| msgid "Start" msgctxt "@title:column tv show" msgid "Start" msgstr "Начало" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 #, fuzzy #| msgid "Duration" msgctxt "@title:column tv show" msgid "Duration" msgstr "Продължителност" #: dvb/dvbepgdialog.cpp:362 #, fuzzy #| msgid "Title" msgctxt "@title:column tv show" msgid "Title" msgstr "Заглавие" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Няма открити устройства." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Няма открити устройства." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgid "Recording folder:" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Папка за записи:" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Нов" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Име" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Име:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Канал:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Начало" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Продължителност:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Край:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Повторение:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Никога" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Ежедневно" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Доставчик" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Канали" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Изчистване" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Претърсване на каналите" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Начало на претърсването" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Сигнал:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Настроено:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Филтър" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Радио" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Телевизия" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Доставчик:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Добавяне на филтрираните" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Добавяне на избраните" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Резултати от претърсването" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Спиране на претърсването" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "" #: dvb/dvbtab.cpp:118 #, fuzzy #| msgid "Configure Television" msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Настройки на телевизията" #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Търсене:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Канал: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Заглавие" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Изпълнител" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Албум" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Номер на запис" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Времетраене" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Временен списък" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Повтаряне" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Случайно" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Добавяне на субтитри" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Преименуване" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Неозаглавен списък" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Файлове със субтитри" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Списък XSPF\n" "*.m3u|Списък M3U\n" "*.pls|Списък PLS" #~ msgid "Channel Settings" #~ msgstr "Настройки на канал" #~ msgid "Name" #~ msgstr "Име" #~ msgid "Edit" #~ msgstr "Редактиране" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Премахване" #~ msgid "Remove" #~ msgstr "Премахване" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Начало" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Начало:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Нов" #~ msgid "Duration" #~ msgstr "Продължителност" #, fuzzy #~| msgid "Name" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Име" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Обновяване" kaffeine-1.2.2/po/bg/CMakeLists.txt0000644000175000017500000000012711552636277016476 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(bg ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/CMakeLists.txt0000644000175000017500000000255011552636277016110 0ustar lxuserlxuserfind_package(Gettext REQUIRED) IF(NOT GETTEXT_MSGFMT_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgfmt binary") endif(NOT GETTEXT_MSGFMT_EXECUTABLE) if(NOT GETTEXT_MSGMERGE_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgmerge binary") endif(NOT GETTEXT_MSGMERGE_EXECUTABLE) add_subdirectory(ar) add_subdirectory(ast) add_subdirectory(be) add_subdirectory(bg) add_subdirectory(ca) add_subdirectory(ca@valencia) add_subdirectory(cs) add_subdirectory(da) add_subdirectory(de) add_subdirectory(el) add_subdirectory(en_GB) add_subdirectory(eo) add_subdirectory(es) add_subdirectory(et) add_subdirectory(fi) add_subdirectory(fr) add_subdirectory(ga) add_subdirectory(gl) add_subdirectory(hr) add_subdirectory(hu) add_subdirectory(it) add_subdirectory(ja) add_subdirectory(km) add_subdirectory(ko) add_subdirectory(ku) add_subdirectory(lt) add_subdirectory(mai) add_subdirectory(nb) add_subdirectory(nds) add_subdirectory(nl) add_subdirectory(nn) add_subdirectory(pa) add_subdirectory(pl) add_subdirectory(pt) add_subdirectory(pt_BR) add_subdirectory(ro) add_subdirectory(ru) add_subdirectory(se) add_subdirectory(sk) add_subdirectory(sr) add_subdirectory(sr@ijekavian) add_subdirectory(sr@ijekavianlatin) add_subdirectory(sr@latin) add_subdirectory(sv) add_subdirectory(th) add_subdirectory(tr) add_subdirectory(uk) add_subdirectory(zh_CN) add_subdirectory(zh_TW) kaffeine-1.2.2/po/da/0000755000175000017500000000000011552636277013732 5ustar lxuserlxuserkaffeine-1.2.2/po/da/kaffeine.po0000644000175000017500000006531211552636277016051 0ustar lxuserlxuser# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Martin Schlander , 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-04-02 11:44+0200\n" "Last-Translator: Martin Schlander \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "Language: da\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "En medieafspiller til KDE med understøttelse af digitalt tv." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(C) 2007-2010 Kaffeine-udviklerne" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Vedligeholder" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Afspil fil" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Afspil lyd-cd" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Afspil video-cd" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Afspil dvd" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitalt tv" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Indstil Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "Visningstilstand ved opstart:" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normal tilstand" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimaltilstand" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Fuldskærmtilstand" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Husk seneste indstilling" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Kort springlængde:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Lang springlængde:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Fil" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Åbn URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Afspil lyd-cd" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Afspil video-cd" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Afspil dvd" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Afspil dvd-mappe" #: mainwindow.cpp:322 msgid "&Playback" msgstr "Afs&pilning" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Spille&liste" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Fjernsyn" #: mainwindow.cpp:333 msgid "&Settings" msgstr "&Indstillinger" #: mainwindow.cpp:352 msgid "Start" msgstr "Start" #: mainwindow.cpp:353 msgid "Playback" msgstr "Afspilning" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Spilleliste" #: mainwindow.cpp:356 msgid "Television" msgstr "Fjernsyn" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Start i fuldskærmtilstand" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(forældet indstilling)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Afspil tv-kanal" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Afspil senest indstillede tv-kanal" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Dump dvd-data (fejlretningsindstilling)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Filer eller URL'er der skal afspilles" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Åbn URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Angiv en URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Spring til position" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Angiv en position:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Forrige" #: mediawidget.cpp:245 msgid "Play" msgstr "Afspil" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pause" #: mediawidget.cpp:253 msgid "Stop" msgstr "Stop" #: mediawidget.cpp:259 msgid "Next" msgstr "Næste" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Fuldskærmtilstand" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimaltilstand" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "fra" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Lyd" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Forøg lydstyrke" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Formindsk lydstyrke" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Sæt på lydløs" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Deinterlace" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Aspektforhold" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automatisk" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Tilpas til vindue" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Tilpas størrelse automatisk " #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Fra" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Oprindelig størrelse" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dobbelt størrelse" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Skydeknap til lydstyrke" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Spring til position..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Spring" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Spring %1s tilbage" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Spring %1s frem" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Skydeknap til søgning" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Slå menu til/fra" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Titel" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitel" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Vinkel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Skift mellem visning af forløbet tid og tilbageværende tid" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Understøttede mediefiler" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Alle filer" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Afslut fuldskærmtilstand" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Afslut minimaltilstand" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Stoppet" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Lydløs til" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Lydløs fra" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Lydstyrke: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Deinterlacing til" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Deinterlacing fra" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pause" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Afspiller" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Martin Schlander" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mschlander@opensuse.org" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Installér venligst Qt SQLite-pluginet." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Kan ikke åbne SQLite-databasen." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Internt værktøj til Kaffeine." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanal" #: dvb/dvbchanneldialog.cpp:108 msgctxt "@title:column tv channel" msgid "Number" msgstr "Nummer" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 msgctxt "@action" msgid "Edit" msgstr "Redigér" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 msgctxt "@action" msgid "Remove" msgstr "Fjern" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" "Kanalerne vil blive sorteret efter nummer for at muliggøre træk og slip.\n" "Vil du fortsætte?" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Horisontal" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Vertikal" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Cirkulær til venstre" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Cirkulær til højre" #: dvb/dvbchanneldialog.cpp:514 msgctxt "@title:window" msgid "Edit Channel" msgstr "Redigér kanal" #: dvb/dvbchanneldialog.cpp:524 msgctxt "@label tv channel" msgid "Name:" msgstr "Navn:" #: dvb/dvbchanneldialog.cpp:533 msgctxt "@label tv channel" msgid "Number:" msgstr "Nummer:" #: dvb/dvbchanneldialog.cpp:542 msgctxt "@label tv channel" msgid "Source:" msgstr "Kilde:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Frekvens (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Symbolrate (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulering:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "FEC-rate:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarisering:" #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Roll-off:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Båndbredde:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "FEC-rate LP:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Sendetilstand:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Guard-interval:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarki:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT-PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "Video-PID:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "Undertekst-PID:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "Tekst-tv-PID:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "Netværks-id:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "Transport-stream-id:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "Tjeneste-id:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Lydkanal:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Scramblet:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Indstil fjernsyn" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Optagemappe:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Vælg mappe" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Timeshift-mappe:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "Startmargen (minutter):" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "Slutmargen (minutter):" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Brug tegnsættet ISO 8859-1 i stedet for ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Scanningsdata senest opdateret %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Opdatér scanningsdata over internettet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Din position (kræves kun til USALS-rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Breddegrad:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[S -90 ... 90 N]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Længdegrad:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[W -180 ... 180 E]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Generelle indstillinger" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Enhed %1" #: dvb/dvbconfigdialog.cpp:382 msgid "Update Scan Data" msgstr "Opdatér scanningsdata" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Downloader scanningsdata" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Opdatering af scanningsdata mislykkedes." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Opdatering af scanningsdata gennemført. Ændringer træder\n" "i kraft efter du har lukket konfigurationsdialogen." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Navn: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Flyt til venstre" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Nulstil" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Flyt til højre" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Enheden er ikke tilsluttet." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Jordantenne" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Autoscan" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Autoscan med 167 kHz forskydninger" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Autoscan Australien" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Autoscan Italien" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Autoscan Taiwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Tidsudløb for tuner (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Kilde:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Ingen kilde" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Navn:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Konfiguration:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "DiSEqC-omskifter" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS-rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Positionsrotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "Indstilling af LNB %1" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB-indstillinger" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Tilføj satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satellit" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Position" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Fjern satellit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Universel LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "LNB med C-bånd" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "Multipunkt-LNB med C-bånd" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Tilpasset LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Skiftefrekvens (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "LOF med lavt bånd (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "LOF med højt bånd (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Horisontal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Vertikal LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Programguide" #: dvb/dvbepgdialog.cpp:60 msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Optag udsendelse" #: dvb/dvbepgdialog.cpp:68 msgctxt "@label:textbox" msgid "Search:" msgstr "Søg:" #: dvb/dvbepgdialog.cpp:137 #, kde-format msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, kde-format msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, kde-format msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Start" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Varighed" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Titel" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "Alle enheder bruges til optagelser." #: dvb/dvbliveview.cpp:212 msgctxt "@info" msgid "No device found." msgstr "Ingen enhed fundet." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Ingen tilgængelig enhed fundet." #: dvb/dvbrecordingdialog.cpp:42 msgctxt "@title:window" msgid "Recording Schedule" msgstr "Optagelsesskema" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 msgctxt "@action" msgid "New" msgstr "Ny" #: dvb/dvbrecordingdialog.cpp:240 msgctxt "@title:column recording" msgid "Name" msgstr "Navn" #: dvb/dvbrecordingdialog.cpp:363 msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Redigér skemaindgang" #: dvb/dvbrecordingdialog.cpp:371 msgctxt "@label recording" msgid "Name:" msgstr "Navn:" #: dvb/dvbrecordingdialog.cpp:384 msgctxt "@label tv show" msgid "Channel:" msgstr "Kanal:" #: dvb/dvbrecordingdialog.cpp:394 msgctxt "@label tv show" msgid "Start:" msgstr "Start:" #: dvb/dvbrecordingdialog.cpp:402 msgctxt "@label tv show" msgid "Duration:" msgstr "Varighed:" #: dvb/dvbrecordingdialog.cpp:411 msgctxt "@label tv show" msgid "End:" msgstr "Slut:" #: dvb/dvbrecordingdialog.cpp:415 msgctxt "@label recording" msgid "Repeat:" msgstr "Gentag:" #: dvb/dvbrecordingdialog.cpp:419 msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Aldrig" #: dvb/dvbrecordingdialog.cpp:423 msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Dagligt" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Udbyder" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanaler" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Ryd" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Kanalscanning" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Start scanning" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signal:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Tunet:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filter" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Ukrypteret (FTA)" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Radio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "Tv" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Udbyder:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Tilføj filtrerede" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Tilføj markerede" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Scanningsresultater" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Nuværende transponder" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Stop scanning" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Programguide" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Optagelsesskema" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Optag straks" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Indstil fjernsyn..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Søg:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanal: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" "Kaffeine optager i øjeblikket programmer.\n" "Vil du virkelig lukke programmet?" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" "Kaffeine har skemalagte optagelser.\n" "Vil du virkelig lukke programmet?" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Optag straks startet" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Optag straks stoppet" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Titel" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Kunstner" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Spornummer" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Længde" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Midlertidig spilleliste" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Gentag" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Tilfældig" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Tilføj undertekst" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Omdøb" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Unavngiven spilleliste" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Undertekstfiler" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|XSPF-spilleliste\n" "*.m3u|M3U-spilleliste\n" "*.pls|PLS-spilleliste" #~ msgid "Channel Settings" #~ msgstr "Kanalindstillinger" #~ msgid "Name" #~ msgstr "Navn" #~ msgid "Edit" #~ msgstr "Redigér" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Fjern" #~ msgid "Remove" #~ msgstr "Fjern" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Start" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Start:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Ny" #~ msgid "Duration" #~ msgstr "Varighed" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Skemalæg program" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Navn" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Genopfrisk" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Skemalægning af program gennemført." #~ msgid "Cannot open %1." #~ msgstr "Kan ikke åbne %1." #~ msgid "Unknown playlist format." #~ msgstr "Ukendt spillelisteformat." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Bland" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Backward" #~ msgstr "Spring 1 min. tilbage" #~ msgctxt "submenu of skip" #~ msgid "Skip 1min Forward" #~ msgstr "Spring 1 min. frem" #~ msgid "Scan data last updated
on %1" #~ msgstr "Scanningsdata senest opdateret
%1" #~ msgid "Remove All" #~ msgstr "Fjern alle" #~ msgid "" #~ "
[Kaffeine Player]
caffeine for your " #~ "desktop!
" #~ msgstr "" #~ "
[Afspilleren Kaffeine]
koffein til " #~ "dit skrivebordsmiljø!
" #~ msgid "Navigation" #~ msgstr "Navigation" #~ msgid "Recordings" #~ msgstr "Optagelser" #~ msgid "Edit Recording" #~ msgstr "Redigér optagelse" #, fuzzy #~| msgid "New" #~ msgctxt "playlist menu" #~ msgid "New" #~ msgstr "Ny" kaffeine-1.2.2/po/da/CMakeLists.txt0000644000175000017500000000012711552636277016472 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(da ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/po/cs/0000755000175000017500000000000011552636277013753 5ustar lxuserlxuserkaffeine-1.2.2/po/cs/kaffeine.po0000644000175000017500000006666111552636277016102 0ustar lxuserlxuser# translation of kaffeine.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Vít Pelčák , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: kaffeine\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2011-04-03 03:25+0200\n" "PO-Revision-Date: 2011-02-14 16:02+0100\n" "Last-Translator: Vít Pelčák \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 1.2\n" #: main.cpp:66 mainwindow.cpp:431 backend-xine/xineapplication.cpp:988 msgid "Kaffeine" msgstr "Přehrávač Kaffeine" #: main.cpp:67 msgid "A media player for KDE with digital TV support." msgstr "Přehrávač multimédií pro KDE s podporou digitální TV." #: main.cpp:68 backend-xine/xineapplication.cpp:991 msgid "(C) 2007-2010 The Kaffeine Authors" msgstr "(c) 2007-2010, Autoři Kaffeine" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Christoph Pfister" msgstr "Christoph Pfister" #: main.cpp:71 backend-xine/xineapplication.cpp:993 msgid "Maintainer" msgstr "Správce" #: mainwindow.cpp:86 msgid "&1 Play File" msgstr "&1 Přehrát soubor" #: mainwindow.cpp:91 msgid "&2 Play Audio CD" msgstr "&2 Přehrát audio CD" #: mainwindow.cpp:96 msgid "&3 Play Video CD" msgstr "&3 Přehrát video CD" #: mainwindow.cpp:101 msgid "&4 Play DVD" msgstr "&4 Přehrát DVD" #: mainwindow.cpp:107 msgid "&5 Digital TV" msgstr "&5 Digitální TV" #: mainwindow.cpp:205 msgctxt "dialog" msgid "Configure Kaffeine" msgstr "Nastavit Kaffeine" #: mainwindow.cpp:210 msgctxt "@label:listbox" msgid "Startup display mode:" msgstr "" #: mainwindow.cpp:224 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Normal Mode" msgstr "Normální režim" #: mainwindow.cpp:226 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Minimal Mode" msgstr "Minimální režim" #: mainwindow.cpp:228 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Full Screen Mode" msgstr "Celoobrazovkový režim" #: mainwindow.cpp:230 msgctxt "@item:inlistbox 'Startup display mode:'" msgid "Remember Last Setting" msgstr "Zapamatovat si poslední nastavení" #: mainwindow.cpp:235 msgctxt "'Configure Kaffeine' dialog" msgid "Short skip duration:" msgstr "Časová délka krátkého krokování:" #: mainwindow.cpp:243 msgctxt "'Configure Kaffeine' dialog" msgid "Long skip duration:" msgstr "Časová délka dlouhého krokování:" #: mainwindow.cpp:282 msgid "&File" msgstr "&Soubor" #: mainwindow.cpp:289 msgctxt "@action:inmenu" msgid "Open URL..." msgstr "Otevřít URL..." #: mainwindow.cpp:300 mainwindow.cpp:507 msgid "Play Audio CD" msgstr "Přehrát audio CD" #: mainwindow.cpp:304 mainwindow.cpp:508 msgid "Play Video CD" msgstr "Přehrát video CD" #: mainwindow.cpp:308 mainwindow.cpp:509 msgid "Play DVD" msgstr "Přehrát DVD" #: mainwindow.cpp:312 msgctxt "@action:inmenu" msgid "Play DVD Folder" msgstr "Přehrát složku DVD" #: mainwindow.cpp:322 msgid "&Playback" msgstr "&Přehrávání" #: mainwindow.cpp:325 msgctxt "menu bar" msgid "Play&list" msgstr "Seznam sk&ladeb" #: mainwindow.cpp:329 msgid "&Television" msgstr "&Televize" #: mainwindow.cpp:333 msgid "&Settings" msgstr "Nastav&ení" #: mainwindow.cpp:352 msgid "Start" msgstr "Spustit" #: mainwindow.cpp:353 msgid "Playback" msgstr "Přehrávání" #: mainwindow.cpp:354 msgid "Playlist" msgstr "Seznam skladeb" #: mainwindow.cpp:356 msgid "Television" msgstr "Televize" #: mainwindow.cpp:506 msgid "Start in full screen mode" msgstr "Spustit v celoobrazovkovém režimu" #: mainwindow.cpp:510 msgctxt "command line option" msgid "(deprecated option)" msgstr "(nedoporučovaná volba)" #: mainwindow.cpp:511 msgctxt "command line option" msgid "Play TV channel" msgstr "Přehrávat TV kanál" #: mainwindow.cpp:512 msgctxt "command line option" msgid "Play last tuned TV channel" msgstr "Přehrávat naposledy naladěný TV kanál" #: mainwindow.cpp:513 msgctxt "command line option" msgid "Dump dvb data (debug option)" msgstr "Zahazovat dvb data (ladicí volba)" #: mainwindow.cpp:514 msgid "Files or URLs to play" msgstr "Soubory nebo URL pro přehrání" #: mainwindow.cpp:667 msgctxt "@title:window" msgid "Open URL" msgstr "Otevřít URL" #: mainwindow.cpp:667 msgid "Enter a URL:" msgstr "Zadejte URL:" #: mediawidget.cpp:156 msgctxt "@title:window" msgid "Jump to Position" msgstr "Skočit na pozici" #: mediawidget.cpp:161 msgid "Enter a position:" msgstr "Zadejte pozici:" #: mediawidget.cpp:237 msgid "Previous" msgstr "Předchozí" #: mediawidget.cpp:245 msgid "Play" msgstr "Přehrát" #: mediawidget.cpp:246 msgid "Pause" msgstr "Pozastavit" #: mediawidget.cpp:253 msgid "Stop" msgstr "Zastavit" #: mediawidget.cpp:259 msgid "Next" msgstr "Další" #: mediawidget.cpp:269 mediawidget.cpp:547 msgctxt "'Playback' menu" msgid "Full Screen Mode" msgstr "Celoobrazovkový režim" #: mediawidget.cpp:275 mediawidget.cpp:551 msgctxt "'Playback' menu" msgid "Minimal Mode" msgstr "Minimální režim" #: mediawidget.cpp:287 msgctxt "subtitle selection entry" msgid "off" msgstr "vypnuto" #: mediawidget.cpp:293 msgctxt "'Playback' menu" msgid "Audio" msgstr "Zvuk" #: mediawidget.cpp:296 msgctxt "'Audio' menu" msgid "Increase Volume" msgstr "Zvýšit hlasitost" #: mediawidget.cpp:302 msgctxt "'Audio' menu" msgid "Decrease Volume" msgstr "Snížit hlasitost" #: mediawidget.cpp:307 msgctxt "'Audio' menu" msgid "Mute Volume" msgstr "Ztlumit hlasitost" #: mediawidget.cpp:318 msgctxt "'Playback' menu" msgid "Video" msgstr "Video" #: mediawidget.cpp:323 msgctxt "'Video' menu" msgid "Deinterlace" msgstr "Zrušit proklad" #: mediawidget.cpp:332 msgctxt "'Video' menu" msgid "Aspect Ratio" msgstr "Poměr stran" #: mediawidget.cpp:337 msgctxt "'Aspect Ratio' menu" msgid "Automatic" msgstr "Automaticky" #: mediawidget.cpp:343 msgctxt "'Aspect Ratio' menu" msgid "Fit to Window" msgstr "Přizpůsobit velikosti okna" #: mediawidget.cpp:348 msgctxt "'Aspect Ratio' menu" msgid "4:3" msgstr "4:3" #: mediawidget.cpp:353 msgctxt "'Aspect Ratio' menu" msgid "16:9" msgstr "16:9" #: mediawidget.cpp:359 msgid "Automatic Resize" msgstr "Automatická změna velikosti" #: mediawidget.cpp:366 msgctxt "automatic resize" msgid "Off" msgstr "Vypnuto" #: mediawidget.cpp:371 msgctxt "automatic resize" msgid "Original Size" msgstr "Původní velikost" #: mediawidget.cpp:376 msgctxt "automatic resize" msgid "Double Size" msgstr "Dvojnásobná velikost" #: mediawidget.cpp:391 msgid "Volume Slider" msgstr "Posuvník hlasitosti" #: mediawidget.cpp:405 msgctxt "@action:inmenu" msgid "Jump to Position..." msgstr "Skočit na pozici..." #: mediawidget.cpp:410 msgctxt "playback menu" msgid "Skip" msgstr "Přeskočit" #: mediawidget.cpp:420 mediawidget.cpp:427 mediawidget.cpp:777 #: mediawidget.cpp:785 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Backward" msgstr "Přeskočit %1 sekund zpět" #: mediawidget.cpp:434 mediawidget.cpp:441 mediawidget.cpp:779 #: mediawidget.cpp:786 #, no-c-format, kde-format msgctxt "submenu of 'Skip'" msgid "Skip %1s Forward" msgstr "Přeskočit o %1 sekund vpřed" #: mediawidget.cpp:447 mediawidget.cpp:449 msgid "Seek Slider" msgstr "Posuvník přehrávání" #: mediawidget.cpp:459 msgctxt "dvd navigation" msgid "Toggle Menu" msgstr "Vysunout/Zasunout menu" #: mediawidget.cpp:463 msgctxt "dvd navigation" msgid "Title" msgstr "Název" #: mediawidget.cpp:469 msgctxt "dvd navigation" msgid "Chapter" msgstr "Kapitola" #: mediawidget.cpp:475 msgctxt "dvd navigation" msgid "Angle" msgstr "Úhel" #: mediawidget.cpp:481 msgid "Switch between elapsed and remaining time display" msgstr "Přepnout mezi zobrazením uplynulého a zbývajícího času" #: mediawidget.cpp:530 msgctxt "file filter" msgid "Supported Media Files" msgstr "Podporované multimediální soubory" #: mediawidget.cpp:531 msgctxt "file filter" msgid "All Files" msgstr "Všechny soubory" #: mediawidget.cpp:563 msgctxt "'Playback' menu" msgid "Exit Full Screen Mode" msgstr "Ukončit celoobrazovkový režim" #: mediawidget.cpp:567 msgctxt "'Playback' menu" msgid "Exit Minimal Mode" msgstr "Ukončit minimální režim" #: mediawidget.cpp:868 msgctxt "osd" msgid "Stopped" msgstr "Zastaveno" #: mediawidget.cpp:1205 msgctxt "osd" msgid "Mute On" msgstr "Zapnout ztlumení" #: mediawidget.cpp:1208 msgctxt "osd" msgid "Mute Off" msgstr "Vypnout ztlumení" #: mediawidget.cpp:1215 #, kde-format msgctxt "osd" msgid "Volume: %1%" msgstr "Hlasitost: %1%" #: mediawidget.cpp:1241 msgctxt "osd message" msgid "Deinterlacing On" msgstr "Rušení prokladu zapnuto" #: mediawidget.cpp:1243 msgctxt "osd message" msgid "Deinterlacing Off" msgstr "Rušení prokladu vypnuto" #: mediawidget.cpp:1288 msgctxt "osd" msgid "Paused" msgstr "Pozastaveno" #: mediawidget.cpp:1299 msgctxt "osd" msgid "Playing" msgstr "Přehrává se" #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vít Pelčák, David Kolibáč, Pavel Fric, Hynek Janoušek" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" "vit@pelcak.org, kolibac@gmail.com, pavelfric@seznam.cz, hynek." "janousek@seznam.cz" #: sqlhelper.cpp:49 msgctxt "message box" msgid "Please install the Qt SQLite plugin." msgstr "Prosím, nainstalujte modul SQLite." #: sqlhelper.cpp:64 msgctxt "message box" msgid "Cannot open the SQLite database." msgstr "Nepovedlo se otevřít databázi SQLite." #: backend-xine/xineapplication.cpp:990 msgctxt "program description" msgid "Internal utility for Kaffeine." msgstr "Interní nástroj Kaffeinu." #: dvb/dvbchanneldialog.cpp:106 dvb/dvbepgdialog.cpp:255 #: dvb/dvbepgdialog.cpp:364 dvb/dvbrecordingdialog.cpp:242 #: dvb/dvbscandialog.cpp:207 msgctxt "@title:column tv show" msgid "Channel" msgstr "Kanál" #: dvb/dvbchanneldialog.cpp:108 #, fuzzy #| msgid "Number" msgctxt "@title:column tv channel" msgid "Number" msgstr "Číslo" #: dvb/dvbchanneldialog.cpp:290 dvb/dvbrecordingdialog.cpp:64 #, fuzzy #| msgid "Edit" msgctxt "@action" msgid "Edit" msgstr "Upravit" #: dvb/dvbchanneldialog.cpp:298 dvb/dvbconfigdialog.cpp:466 #: dvb/dvbrecordingdialog.cpp:71 playlist/playlisttab.cpp:406 #: playlist/playlisttab.cpp:426 #, fuzzy #| msgid "Remove" msgctxt "@action" msgid "Remove" msgstr "Odstranit" #: dvb/dvbchanneldialog.cpp:315 msgctxt "@info" msgid "" "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?" msgstr "" #: dvb/dvbchanneldialog.cpp:402 msgid "Horizontal" msgstr "Vodorovné" #: dvb/dvbchanneldialog.cpp:403 msgid "Vertical" msgstr "Svislé" #: dvb/dvbchanneldialog.cpp:404 msgid "Circular left" msgstr "Prováděný v kruzích vlevo" #: dvb/dvbchanneldialog.cpp:405 msgid "Circular right" msgstr "Prováděný v kruzích vpravo" #: dvb/dvbchanneldialog.cpp:514 #, fuzzy #| msgid "Channel" msgctxt "@title:window" msgid "Edit Channel" msgstr "Kanál" #: dvb/dvbchanneldialog.cpp:524 #, fuzzy #| msgid "Name:" msgctxt "@label tv channel" msgid "Name:" msgstr "Název:" #: dvb/dvbchanneldialog.cpp:533 #, fuzzy #| msgid "Number:" msgctxt "@label tv channel" msgid "Number:" msgstr "Číslo:" #: dvb/dvbchanneldialog.cpp:542 #, fuzzy #| msgid "Source:" msgctxt "@label tv channel" msgid "Source:" msgstr "Zdroj:" #: dvb/dvbchanneldialog.cpp:550 dvb/dvbchanneldialog.cpp:572 #: dvb/dvbchanneldialog.cpp:590 dvb/dvbchanneldialog.cpp:611 msgid "Frequency (MHz):" msgstr "Kmitočet (MHz):" #: dvb/dvbchanneldialog.cpp:553 dvb/dvbchanneldialog.cpp:574 msgid "Symbol rate (kS/s):" msgstr "Rychlost symbolu (kS/s):" #: dvb/dvbchanneldialog.cpp:555 dvb/dvbchanneldialog.cpp:580 #: dvb/dvbchanneldialog.cpp:595 dvb/dvbchanneldialog.cpp:614 msgid "Modulation:" msgstr "Modulace:" #: dvb/dvbchanneldialog.cpp:557 dvb/dvbchanneldialog.cpp:576 #: dvb/dvbchanneldialog.cpp:597 msgid "FEC rate:" msgstr "Rychlost FEC:" #: dvb/dvbchanneldialog.cpp:570 msgid "Polarization:" msgstr "Polarizace:" # jde o volbu plynuleho tlumeni zvuku od urcite nastavene frekvence #: dvb/dvbchanneldialog.cpp:582 msgid "Roll-off:" msgstr "Utlumení:" #: dvb/dvbchanneldialog.cpp:593 msgid "Bandwidth:" msgstr "Šířka vlnového pásma:" #: dvb/dvbchanneldialog.cpp:599 msgid "FEC rate LP:" msgstr "LP rychlost FEC:" #: dvb/dvbchanneldialog.cpp:601 msgid "Transmission mode:" msgstr "Režim přenosu:" #: dvb/dvbchanneldialog.cpp:603 msgid "Guard interval:" msgstr "Rozmezí hlídání:" #: dvb/dvbchanneldialog.cpp:605 msgid "Hierarchy:" msgstr "Hierarchie:" #: dvb/dvbchanneldialog.cpp:622 msgid "PMT PID:" msgstr "PMT PID:" #: dvb/dvbchanneldialog.cpp:629 msgid "Video PID:" msgstr "PID videa:" #: dvb/dvbchanneldialog.cpp:634 msgid "Subtitle PID:" msgstr "PID titulků:" #: dvb/dvbchanneldialog.cpp:644 msgid "Teletext PID:" msgstr "PID teletextu:" #: dvb/dvbchanneldialog.cpp:655 msgid "Network ID:" msgstr "ID sítě:" #: dvb/dvbchanneldialog.cpp:662 msgid "Transport stream ID:" msgstr "ID přenosového proudu:" #: dvb/dvbchanneldialog.cpp:669 msgid "Service ID:" msgstr "ID služby:" #: dvb/dvbchanneldialog.cpp:676 msgid "Audio channel:" msgstr "Zvukový kanál:" #: dvb/dvbchanneldialog.cpp:700 msgid "Scrambled:" msgstr "Pomíchaný:" #: dvb/dvbconfigdialog.cpp:46 msgctxt "@title:window" msgid "Configure Television" msgstr "Nastavit televizi" #: dvb/dvbconfigdialog.cpp:55 msgid "Recording folder:" msgstr "Složka pro nahrávání:" #: dvb/dvbconfigdialog.cpp:63 dvb/dvbconfigdialog.cpp:75 msgid "Select Folder" msgstr "Vybrat složku" #: dvb/dvbconfigdialog.cpp:67 msgid "Time shift folder:" msgstr "Složka pro časově posunuté přehrávání:" #: dvb/dvbconfigdialog.cpp:81 msgid "Begin margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:88 msgid "End margin (minutes):" msgstr "" #: dvb/dvbconfigdialog.cpp:97 msgid "Use ISO 8859-1 charset instead of ISO 6937:" msgstr "Použít kódování ISO 8859-1 namísto ISO 6937:" #: dvb/dvbconfigdialog.cpp:109 dvb/dvbscandialog.cpp:280 #, kde-format msgid "Scan data last updated on %1" msgstr "Data z prohledávání byla naposledy obnovena %1" #: dvb/dvbconfigdialog.cpp:112 msgid "Update scan data over Internet" msgstr "Obnovit data z prohledávání přes internet" #: dvb/dvbconfigdialog.cpp:120 msgid "Your position (only needed for USALS rotor)" msgstr "Vaše pozice (potřeba pouze pro USALS rotor)" #: dvb/dvbconfigdialog.cpp:123 msgid "Latitude:" msgstr "Šířka:" #: dvb/dvbconfigdialog.cpp:124 msgid "[S -90 ... 90 N]" msgstr "[J -90 ... 90 S]" #: dvb/dvbconfigdialog.cpp:138 msgid "Longitude:" msgstr "Délka:" #: dvb/dvbconfigdialog.cpp:139 msgid "[W -180 ... 180 E]" msgstr "[Z -180 ... 180 V]" #: dvb/dvbconfigdialog.cpp:156 msgid "General Options" msgstr "Obecné volby" #: dvb/dvbconfigdialog.cpp:168 dvb/dvbconfigdialog.cpp:259 #: dvb/dvbconfigdialog.cpp:260 dvb/dvbconfigdialog.cpp:286 #: dvb/dvbconfigdialog.cpp:287 dvb/dvbconfigdialog.cpp:311 #, kde-format msgid "Device %1" msgstr "Zařízení %1" #: dvb/dvbconfigdialog.cpp:382 #, fuzzy #| msgid "Update scan data over Internet" msgid "Update Scan Data" msgstr "Obnovit data z prohledávání přes internet" #: dvb/dvbconfigdialog.cpp:389 msgid "Downloading scan data" msgstr "Stahují se data z prohledávání" #: dvb/dvbconfigdialog.cpp:432 dvb/dvbconfigdialog.cpp:444 msgid "Scan data update failed." msgstr "Obnova dat z prohledávání selhala." #: dvb/dvbconfigdialog.cpp:441 msgid "" "Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog." msgstr "" "Dat z prohledávání byla úspěšně obnovena.\n" "Změny se projeví po uzavření dialogu s nastavením." #: dvb/dvbconfigdialog.cpp:453 #, kde-format msgid "Name: %1" msgstr "Název: %1" #: dvb/dvbconfigdialog.cpp:456 msgid "Move Left" msgstr "Posunout doleva" #: dvb/dvbconfigdialog.cpp:461 msgid "Reset" msgstr "Vynulovat" #: dvb/dvbconfigdialog.cpp:471 msgid "Move Right" msgstr "Posunout doprava" #: dvb/dvbconfigdialog.cpp:477 msgid "Device not connected." msgstr "Zařízení nepřipojeno." #: dvb/dvbconfigdialog.cpp:509 msgid "DVB-C" msgstr "DVB-C" #: dvb/dvbconfigdialog.cpp:525 msgid "DVB-S2" msgstr "DVB-S2" #: dvb/dvbconfigdialog.cpp:527 msgid "DVB-S" msgstr "DVB-S" #: dvb/dvbconfigdialog.cpp:534 msgid "DVB-T" msgstr "DVB-T" #: dvb/dvbconfigdialog.cpp:547 msgid "ATSC" msgstr "ATSC" #: dvb/dvbconfigdialog.cpp:630 msgid "Cable" msgstr "Kabel" #: dvb/dvbconfigdialog.cpp:638 msgid "Terrestrial" msgstr "Pozemní" #: dvb/dvbconfigdialog.cpp:646 msgid "Autoscan" msgstr "Automatické prohledávání" #: dvb/dvbconfigdialog.cpp:647 msgid "Autoscan with 167 kHz Offsets" msgstr "Automatické prohledávání s vyrovnáním 167 kHz" #: dvb/dvbconfigdialog.cpp:648 msgid "Autoscan Australia" msgstr "Automatické prohledávat Austrálii" #: dvb/dvbconfigdialog.cpp:649 msgid "Autoscan Italy" msgstr "Automatické prohledávat Itálii" #: dvb/dvbconfigdialog.cpp:650 msgid "Autoscan Taiwan" msgstr "Automatické prohledávat Tchajwan" #: dvb/dvbconfigdialog.cpp:653 msgid "Atsc" msgstr "Atsc" #: dvb/dvbconfigdialog.cpp:662 dvb/dvbconfigdialog.cpp:771 msgid "Tuner timeout (ms):" msgstr "Vypršení tuneru (ms):" #: dvb/dvbconfigdialog.cpp:671 dvb/dvbscandialog.cpp:270 msgid "Source:" msgstr "Zdroj:" #: dvb/dvbconfigdialog.cpp:674 dvb/dvbconfigdialog.cpp:807 msgid "No Source" msgstr "Žádný zdroj" #: dvb/dvbconfigdialog.cpp:680 msgid "Name:" msgstr "Název:" #: dvb/dvbconfigdialog.cpp:779 msgid "Configuration:" msgstr "Nastavení:" #: dvb/dvbconfigdialog.cpp:782 msgid "DiSEqC Switch" msgstr "Přepínač DiSEqC" #: dvb/dvbconfigdialog.cpp:783 msgid "USALS Rotor" msgstr "USALS rotor" #: dvb/dvbconfigdialog.cpp:784 msgid "Positions Rotor" msgstr "Poziční rotor" #: dvb/dvbconfigdialog.cpp:801 #, kde-format msgid "LNB %1 Settings" msgstr "LNB %1 nastavení" #: dvb/dvbconfigdialog.cpp:820 dvb/dvbconfigdialog.cpp:1067 msgid "LNB Settings" msgstr "LNB nastavení" #: dvb/dvbconfigdialog.cpp:835 dvb/dvbconfigdialog.cpp:847 msgid "Add Satellite" msgstr "Přidat satelit" #: dvb/dvbconfigdialog.cpp:855 msgid "Satellite" msgstr "Satelitní" #: dvb/dvbconfigdialog.cpp:855 msgid "Position" msgstr "Poloha" #: dvb/dvbconfigdialog.cpp:872 msgid "Remove Satellite" msgstr "Odstranit satelit" #: dvb/dvbconfigdialog.cpp:1076 msgid "Universal LNB" msgstr "Všeobecný LNB" #: dvb/dvbconfigdialog.cpp:1080 msgid "C-band LNB" msgstr "C-Band LNB" #: dvb/dvbconfigdialog.cpp:1084 msgid "C-band Multipoint LNB" msgstr "C-Band Multipoint LNB" #: dvb/dvbconfigdialog.cpp:1088 msgid "Custom LNB" msgstr "Vlastní LNB" #: dvb/dvbconfigdialog.cpp:1099 msgid "Switch frequency (MHz)" msgstr "Přepnout kmitočet (MHz)" #: dvb/dvbconfigdialog.cpp:1172 msgid "Low band LOF (MHz)" msgstr "Dolní propust LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1177 msgid "High band LOF (MHz)" msgstr "Horní propust LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1183 msgid "Horizontal LOF (MHz)" msgstr "Vodorovný LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1188 msgid "Vertical LOF (MHz)" msgstr "Svislý LOF (MHz)" #: dvb/dvbconfigdialog.cpp:1194 msgid "LOF (MHz)" msgstr "LOF (MHz)" #: dvb/dvbepgdialog.cpp:40 msgctxt "@title:window" msgid "Program Guide" msgstr "Průvodce programy" #: dvb/dvbepgdialog.cpp:60 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@action:inmenu tv show" msgid "Record Show" msgstr "Plán nahrávání" #: dvb/dvbepgdialog.cpp:68 #, fuzzy #| msgid "Search:" msgctxt "@label:textbox" msgid "Search:" msgstr "Hledat:" #: dvb/dvbepgdialog.cpp:137 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show title" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:140 #, fuzzy, kde-format #| msgid "%1
" msgctxt "@info tv show subheading" msgid "%1
" msgstr "%1
" #: dvb/dvbepgdialog.cpp:146 #, fuzzy, kde-format #| msgid "%1 - %2

" msgctxt "@info tv show start, end" msgid "%1 - %2

" msgstr "%1 - %2

" #: dvb/dvbepgdialog.cpp:358 dvb/dvbrecordingdialog.cpp:244 msgctxt "@title:column tv show" msgid "Start" msgstr "Spustit" #: dvb/dvbepgdialog.cpp:360 dvb/dvbrecordingdialog.cpp:246 msgctxt "@title:column tv show" msgid "Duration" msgstr "Doba trvání" #: dvb/dvbepgdialog.cpp:362 msgctxt "@title:column tv show" msgid "Title" msgstr "Název" #: dvb/dvbliveview.cpp:209 msgctxt "@info" msgid "All devices are used for recordings." msgstr "" #: dvb/dvbliveview.cpp:212 #, fuzzy #| msgctxt "message box" #| msgid "No available device found." msgctxt "@info" msgid "No device found." msgstr "Nenalezeno vhodné zařízení." #: dvb/dvbliveview.cpp:358 dvb/dvbscandialog.cpp:429 msgctxt "message box" msgid "No available device found." msgstr "Nenalezeno vhodné zařízení." #: dvb/dvbrecordingdialog.cpp:42 #, fuzzy #| msgctxt "dialog" #| msgid "Recording Schedule" msgctxt "@title:window" msgid "Recording Schedule" msgstr "Plán nahrávání" #: dvb/dvbrecordingdialog.cpp:57 playlist/playlisttab.cpp:416 #, fuzzy #| msgctxt "add a new item to a list" #| msgid "New" msgctxt "@action" msgid "New" msgstr "Nový" #: dvb/dvbrecordingdialog.cpp:240 #, fuzzy #| msgid "Name" msgctxt "@title:column recording" msgid "Name" msgstr "Název" #: dvb/dvbrecordingdialog.cpp:363 #, fuzzy #| msgctxt "subdialog of 'Recording Schedule'" #| msgid "Edit Schedule Entry" msgctxt "@title:window recording" msgid "Edit Schedule Entry" msgstr "Upravit údaje v plánu" #: dvb/dvbrecordingdialog.cpp:371 #, fuzzy #| msgid "Name:" msgctxt "@label recording" msgid "Name:" msgstr "Název:" #: dvb/dvbrecordingdialog.cpp:384 #, fuzzy #| msgid "Channel:" msgctxt "@label tv show" msgid "Channel:" msgstr "Kanál:" #: dvb/dvbrecordingdialog.cpp:394 #, fuzzy #| msgid "Start" msgctxt "@label tv show" msgid "Start:" msgstr "Spustit" #: dvb/dvbrecordingdialog.cpp:402 #, fuzzy #| msgid "Duration:" msgctxt "@label tv show" msgid "Duration:" msgstr "Doba trvání:" #: dvb/dvbrecordingdialog.cpp:411 #, fuzzy #| msgid "End:" msgctxt "@label tv show" msgid "End:" msgstr "Konec:" #: dvb/dvbrecordingdialog.cpp:415 #, fuzzy #| msgid "Repeat:" msgctxt "@label recording" msgid "Repeat:" msgstr "Opakovat:" #: dvb/dvbrecordingdialog.cpp:419 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Never" msgctxt "@action next to 'Repeat:'" msgid "Never" msgstr "Nikdy" #: dvb/dvbrecordingdialog.cpp:423 #, fuzzy #| msgctxt "button next to the 'Repeat:' label" #| msgid "Daily" msgctxt "@action next to 'Repeat:'" msgid "Daily" msgstr "Denně" #: dvb/dvbscandialog.cpp:46 msgid "0%" msgstr "0%" #: dvb/dvbscandialog.cpp:62 #, kde-format msgid "%1%" msgstr "%1%" #: dvb/dvbscandialog.cpp:209 msgid "Provider" msgstr "Poskytovatel" #: dvb/dvbscandialog.cpp:211 msgid "SNR" msgstr "SNR" #: dvb/dvbscandialog.cpp:220 dvb/dvbscandialog.cpp:225 dvb/dvbtab.cpp:87 msgid "Channels" msgstr "Kanály" #: dvb/dvbscandialog.cpp:257 playlist/playlisttab.cpp:410 msgctxt "remove all items from a list" msgid "Clear" msgstr "Vyprázdnit" #: dvb/dvbscandialog.cpp:267 msgid "Channel Scan" msgstr "Prohledávání kanálů" #: dvb/dvbscandialog.cpp:275 dvb/dvbscandialog.cpp:388 msgid "Start Scan" msgstr "Spustit vyhledávání" #: dvb/dvbscandialog.cpp:287 msgid "Signal:" msgstr "Signál:" #: dvb/dvbscandialog.cpp:292 msgid "SNR:" msgstr "SNR:" #: dvb/dvbscandialog.cpp:297 msgid "Tuned:" msgstr "Naladěno:" #: dvb/dvbscandialog.cpp:310 msgid "Filter" msgstr "Filtr" #: dvb/dvbscandialog.cpp:313 msgid "Free to air" msgstr "Volně do éteru" #: dvb/dvbscandialog.cpp:316 msgid "Radio" msgstr "Rádio" #: dvb/dvbscandialog.cpp:319 msgid "TV" msgstr "TV" #: dvb/dvbscandialog.cpp:322 msgid "Provider:" msgstr "Poskytovatel:" #: dvb/dvbscandialog.cpp:330 msgid "Add Filtered" msgstr "Přidat filtrované" #: dvb/dvbscandialog.cpp:334 msgid "Add Selected" msgstr "Přidat vybrané" #: dvb/dvbscandialog.cpp:340 msgid "Scan Results" msgstr "Prohledat výsledky" #: dvb/dvbscandialog.cpp:356 msgid "Current Transponder" msgstr "Současný rádiový odpovídač" #: dvb/dvbscandialog.cpp:434 msgid "Stop Scan" msgstr "Ukončit vyhledávání" #: dvb/dvbtab.cpp:92 msgid "Program Guide" msgstr "Průvodce programy" #: dvb/dvbtab.cpp:97 msgid "OSD" msgstr "OSD" #: dvb/dvbtab.cpp:103 msgctxt "dialog" msgid "Recording Schedule" msgstr "Plán nahrávání" #: dvb/dvbtab.cpp:110 msgid "Instant Record" msgstr "Okamžité nahrávání" #: dvb/dvbtab.cpp:118 msgctxt "@action:inmenu" msgid "Configure Television..." msgstr "Nastavit televizi..." #: dvb/dvbtab.cpp:138 msgid "Search:" msgstr "Hledat:" #: dvb/dvbtab.cpp:279 #, kde-format msgctxt "osd" msgid "Channel: %1_" msgstr "Kanál: %1_" #: dvb/dvbtab.cpp:291 msgctxt "message box" msgid "" "Kaffeine is currently recording programs.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:301 msgctxt "message box" msgid "" "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?" msgstr "" #: dvb/dvbtab.cpp:362 msgctxt "osd" msgid "Instant Record Started" msgstr "Okamžité nahrávání zahájeno" #: dvb/dvbtab.cpp:366 dvb/dvbtab.cpp:376 msgctxt "osd" msgid "Instant Record Stopped" msgstr "Okamžité nahrávání zastaveno" #: playlist/playlistmodel.cpp:783 msgctxt "playlist track" msgid "Title" msgstr "Název" #: playlist/playlistmodel.cpp:785 msgctxt "playlist track" msgid "Artist" msgstr "Umělec" #: playlist/playlistmodel.cpp:787 msgctxt "playlist track" msgid "Album" msgstr "Album" #: playlist/playlistmodel.cpp:789 msgctxt "playlist track" msgid "Track Number" msgstr "Číslo stopy" #: playlist/playlistmodel.cpp:791 msgctxt "playlist track" msgid "Length" msgstr "Délka" #: playlist/playlisttab.cpp:367 msgctxt "playlist browser" msgid "Temporary Playlist" msgstr "Dočasný seznam skladeb" #: playlist/playlisttab.cpp:392 msgctxt "playlist menu" msgid "Repeat" msgstr "Opakovat" #: playlist/playlisttab.cpp:397 msgctxt "playlist menu" msgid "Random" msgstr "Náhodně" #: playlist/playlisttab.cpp:402 msgid "Add Subtitle" msgstr "Přidat titulky" #: playlist/playlisttab.cpp:421 msgctxt "rename an entry in a list" msgid "Rename" msgstr "Přejmenovat" #: playlist/playlisttab.cpp:630 msgctxt "playlist browser" msgid "Unnamed Playlist" msgstr "Nepojmenovaný seznam skladeb" #: playlist/playlisttab.cpp:836 msgctxt "file filter" msgid "Subtitle Files" msgstr "Soubory titulků" #: playlist/playlisttab.cpp:853 msgctxt "file filter" msgid "" "*.xspf|XSPF Playlist\n" "*.m3u|M3U Playlist\n" "*.pls|PLS Playlist" msgstr "" "*.xspf|Seznam skladeb XSPF\n" "*.m3u|Seznam skladeb M3U\n" "*.pls|Seznam skladeb PLS" #~ msgid "Channel Settings" #~ msgstr "Nastavení kanálů" #~ msgid "Name" #~ msgstr "Název" #~ msgid "Edit" #~ msgstr "Upravit" #~ msgctxt "remove an item from a list" #~ msgid "Remove" #~ msgstr "Odstranit" #~ msgid "Remove" #~ msgstr "Odstranit" #, fuzzy #~| msgid "Begin" #~ msgctxt "@title:column tv show" #~ msgid "Begin" #~ msgstr "Začátek" #, fuzzy #~| msgid "Begin:" #~ msgctxt "@label tv show" #~ msgid "Begin:" #~ msgstr "Začátek:" #~ msgctxt "add a new item to a list" #~ msgid "New" #~ msgstr "Nový" #~ msgid "Duration" #~ msgstr "Doba trvání" #~ msgctxt "program guide" #~ msgid "Schedule Program" #~ msgstr "Naplánovat program" #~ msgctxt "@title:column tv channel name" #~ msgid "Name" #~ msgstr "Název" #~ msgctxt "epg" #~ msgid "Refresh" #~ msgstr "Obnovit" #~ msgctxt "program guide" #~ msgid "Program successfully scheduled." #~ msgstr "Program úspěšně naplánován." #~ msgctxt "playlist menu" #~ msgid "Shuffle" #~ msgstr "Zamíchat" kaffeine-1.2.2/po/cs/CMakeLists.txt0000644000175000017500000000012711552636277016513 0ustar lxuserlxuserGETTEXT_PROCESS_PO_FILES(cs ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} kaffeine.po) kaffeine-1.2.2/NOTES0000644000175000017500000000345111552636277013546 0ustar lxuserlxuser=============== About this file =============== This file covers various topics relevant to Kaffeine development. ------------------------ DVB-T channel allocation ------------------------ Geneva 2006 Agreement (GE06) - http://www.itu.int/ITU-R/terrestrial/broadcast/plans/ge06/index.html - VHF band: channels 5 - 12 ; center frequency = 142.5 + 7 * channel number MHz ; bandwidth = 7 MHz - UHF band: channels 21 - 69 ; center frequency = 306 + 8 * channel number MHz ; bandwidth = 8 MHz Australia: 177.5 - 226.5 and 529.5 (?) - 816.5 (?) MHz ; bandwidth = 7 MHz Italy VHF band: 177.5, 186, 194.5, 203.5, 212.5, 219.5 and 226.5 MHz ; bandwidth = 7 or 8 (?) MHz ----------------- SQL table formats ----------------- - table "Channels" - column "Id" - INTEGER PRIMARY KEY - column "Name" - string; not empty - column "Number" - int; Number >= 1 - column "Source" - string; not empty - column "Transponder" - string; linuxtv format - column "NetworkId" - int; -1 <= NetworkId <= 0xffff; from SDT - column "TransportStreamId" - int; 0 <= TransportStreamId <= 0xffff; from PAT - column "PmtPid" - int; 0 <= PmtPid <= 0x1fff; from PAT - column "PmtSection" - byte array; not empty; from PMT - column "AudioPid" - int; -1 <= AudioPid <= 0x1fff; from PMT - column "Flags" - int; (1 << 0) = has video (from PMT), (1 << 1) = is scrambled (from SDT or VCT) - table "RecordingSchedule" - column "Id" - INTEGER PRIMARY KEY - column "Name" - string; not empty - column "Channel" - string; not empty - column "Begin" - string; ISO 8601 encoded date and time; UTC (ends with 'Z') or local time (older versions) - column "Duration" - string; ISO 8601 encoded time - column "Repeat" - int; (1 << 0) = on Mondays ... (1 << 6) = on Sundays kaffeine-1.2.2/icons/0000755000175000017500000000000011552636277014043 5ustar lxuserlxuserkaffeine-1.2.2/icons/hi48-apps-kaffeine.png0000644000175000017500000000702111552636277020034 0ustar lxuserlxuserPNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org< IDATxYilT>Y=u .f 1B4@IEU_UB~%VT.I6PUAPlpKx;GfPJ޽o!5 LK.뭭 =ql߾}մiӶuvvX,pҶyѢEy>..nHNWWAϗvcw͛7bZWl6Saa!ڦ]vŋemJJ  FaI. hUVvJk#OPrr2hT]]Mж-77w9s8g 8޽itt^y~@Rii)8qr7oެ!"o[%\0fIHH d7n;vȾAzč nPssr3nO< S#0E~ZbBٴi&;w.}BO? ܿ]] 10mmsDDDrAA 23 v~Pee5[rD=qhz;w΅&k%ӧO3m65k^uz*˗/'|BMMMw7667&Pڶ@۩Ax))::ٰamݺU/LoV*g*au?}Kä-/BGEEf0hTG00(ѣDׯgr@9LGluևdc .:Ip[*Ga-D4Ĩf$"6VNOIPJ"݋SUUVCg!x<4V އ_444|T__7J \:@ KdpHQYP$rZ( k46B _o W=#F7g"jxxV,,Õ+W27|P qC۶m3pX1—*rt1~2b Z.W!%VP3∃\暚:~߻w/=Ӓz-[kJ\x;vLb RF!, @5]F;wk+VrY^'X0$}aB'kA!rFPVVl>y$)˗/k*Uą;R#VzWe{z#`3gRnn;II):r;wNR,֊+s!QM~ȬY-`gΜSNZ\kT!JA| g(fⷰʝfe 3H8 0Gő3#l[WZkkT\x}!ư%@rL&Je;-bV{\j*㴖7jkݶ}<,3y8a/(C>!vSdD mXHD3<\j`Py) M1"hPځ`p iANz"63%hp̌EgX(aԬ~naywťzA0ji%]Hp'k RztWRD3(%5rr稠!vpDI 7NrX:fb +lܭ:ԙ9K<NJS`=Af|,AWyb~94\D4!d >P'wX91x?K ֮8,fWPPZ]=uuv .|uZZZn,q Z(, BX; jD| jVnpZִbb :y: 4(Det@^IIH!Mir [̅L -<K qV7^l7VdAq1u Q "bH@ĝ ߿bdB|e9Љ/Ŀ: ЧY I976R~]nЈ#f̟_Kkr!aK-f̠4.p(nvOҰ$-`m_)R B fX,Ld ,hN?p(FduӺpz!Feî~%>_f P H"*H #UFOsiUsDwǠ&XE%E…OY7n^ ~Hj\Hcӝ!ćP;rh7Bg&s"cd<:WD{iZկkF$oh9B7!|]l]n&4f>vki., 4-PD?R +Ԣ}trrȷh=HfXҋ"D \I^@)~""7rH1ܓV7g `H?RK -1~ @>ƽ^cvڧfi|Ppys/DŽdc zFGh V[U@sW,r,( Ix -0(<9fq d(qCnQs3 Pp6,,όA4in7b@HCXS4vCACz x F Kj4y> xjcQEߚqp愴jGB Zؼx;s=|A M:OiR;@UfFuӿQć&.m4A ' ! `<$Z bX3z~lBEvzj#'4cpVHJZMl%cd?XO`(CF҂{ Ր 2.h֌ДbwzvHj-~['1-e;{{huSs8?72,.5mCƹ6зz .,y~__ubb`pttt,L>B6v_2jh4_\7SjjjZaŢ~||R6t:? BBMVcÁDZnTxHj^l v5χH$˨Uh2 B;BhiiٟFuT*Aȵz،FX dr9UC*BHᬰ`lP񬦙JJj2=OA(~ot`'XM`aF Z_/u(e=H.2N9 )uu-X- ;;}x=p:\ëQh4y"" dbf._>n .$LHduY0H0exX bgk NHѶc C*!EM|(Z h* ,TIX`F>_@*J Wl檪[U*EX\NZj?T*IENDB`kaffeine-1.2.2/icons/hi128-apps-kaffeine.png0000644000175000017500000003050111552636277020112 0ustar lxuserlxuserPNG  IHDR>asBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<0IDATx] ՙn6f_nQYeC'GM&Ɍ1'6cgL#*E5j@!*HX}޻_|ߝS{yo{بuZ:5 A~Tj3?,[N4i ڷo_Z2 ( ڴiӮڵ줤h>\b2j<Վ-9,iO0aBСCdff!r<ܹsԩSgrrx95P);w:eʔk.k/I:}:a9r7n| 5hq PĉaۿMiRF;2Рx8tliOwmٽ{YÔB:s挖j[wThth*\/&HߐTJ1c}tVUUEi6-DdO8q_,3'~Kڃ"yyyѣ5pڊxSWYYrssu]p_&ٳ^A+ӧ#F(mذAWkg8ji8C/n&<"\B4p_~7o8_^Z@r “Ov#NxJCرCxƎdѽ55@K;I=`\q3_ibv]ZZJ= .@w} @^|ESO1U6mFk84xEaG4j0$Ho :9^SSCN'yzzR{JKKS^Z_gJq8pDž M@7B<8_~3!HAts pةɓ'+ ِ!dOM@/~>￯-[c[*8ÇX2.@:a`Ӥ=j {*l`AC8sYfy:tއz5+e]i*?)СC=` z 74 &@rNu, 2y Dʫ=r %*Qc@Լ=hgH.YP7$QJduHQ xdh5hFOChϭQ#n?mA!~/5g褝@BOؾnM@"ONgضlB f!C5y=,\zz뭷Ӏ`zo1E$|oO䂺FfcJ;G=%Btx<2Ϩȑ#9fgp$cx2H/b1C8 cdw Nro6UmX J+S; '={5|?xG5VSBP|UZ#06'NPdhla3 ~J|ʊ?T3qzG AԕBڳC9zMXϮF} yOƪXb, 2+Q\hlh\<\rd_`L[,U^W!n n'zׯG SͷH/UY*ڿXWwƮ#dD1I$a팾j. %X3rl#Q1)ejH*殀Fb(Uɝ'׿02:AW[0@#0v Z5|vԨm Y&H lI0_y.pl,A!VH*4I@ \j-dn;n{E1IiȈ?>PA 7wU~̴UB6iMҚ@ ,KieCb=@'Nd5\o? m9lé[Hkt VI L,0EpHR Vz}MC,7KCϷ&=@8 p5ox_0pj ÐtAPM` r̺A7 T0D3yzIf2P(Nq0DG5~{~s%ӹDy?tR Q2'4tH_Ú1ՠCPy|M#0_RCY;L˿(FĒ65I7]ܾhDsY[ܾcTw4At༤^XJY_vߞ5{P@@"X[ dAnVY$fýrq41nᛛG鏌?^$Ӑٌ|:T @wc%fv7&%dXMSq(^k8q~bA |Au:h$YY6 ۊ<~ʇz+K];D'y~;qo/a 6ӡl\~6tԿMEo f7-`9z\ߵlC$rLkmTȳDCAJNMey>9O<`᳎|Ukk5?1͝bg<6Pd3D< Lqr -;S[Sd@.h,f `,Ƅ}o@]A~$RD LV[ld%mzjӪU=q ,DT!|M?31. `&0 |H<pDcY1$ qR0'w^Rrck> O?o*tD1߅e.z P/DEg12A $0&!]3d믿u?u{t\X;6'JA6RP+ &h۵ddPO b%K۫Ej3O{bC3bȘU?NYp"E' B Uw~0h ֟e97 )(2dۏǍCV=@6cKeY ȡX2Kܫ:l[gmp&O$? !} Mo½z_T0p`?7=#];wZG\_Կ1O`2@:@KWJ34A5U$|&#؟Eo,?7gNٳ!&ZfZ5iDTvn;h髯E= tQ(WyxH,L%.LQ#0DN"fl;5A ۺYΟּ|hb&8GF SYyW>rdIKk_s5@^^*VyLEھr?dju ]e0m'uԨϘ&N:w鬏)H޵G3GMud4^mbrQze\ME Pjuo0LPk& σ=u` |- ~E/6ɹ9:RvU {WMUECUqrڲyx ԴT:&d 3y[nVCfHY=ټB q#qTЫA"|AJÜa5y JAH4S1`o6ؘY&J>T:!vSmꔟA^nzSaj?6QUaBӋ9C!VTK;1RVuujŃT~^^L"9{mALC mgn)a58d8v1Dv恟MMַA04*[nZU~}kՑ#G~ui3f\qaukTvN6_>tDlU{SnZ!&t_M2/1SO(R CXZdxAH$2Aф y4hT/H2A{-aਾ^oo޴U}Q+Μ>}9ݲdOBFpa=Ij!ć ?CXuL@Z|\y1K4zN (4d3H&Nc˛2Z178wk׬&/W_{9'Do-m[˼?f"zKSG t=3^D3πJ8?nYU&9]n'c$DEbVyN7d T18bj4-_R巊_ ٚSAӌc9($i=HIVD &C%8 DHR};D`:KiPM0k(G2&,@ͧhSc$ {O(d0֒AU`h!{{\@m$փysI'D@rjOMzLzZQb$k8$MUCWr/1xzƎ#bZ@.m}=dv]v%V9]]ͰUٴfP8,$- K'OasC2Ij1)2j0pAӕӦ)?ʨkP )L?$| hN:* 73I%}+#׈ԚSzZ(J:e䭸@ t MbB8/@6kֽMR.!_`7`$TS5jdA$zeM|z5kr1x*u$&X\g r͈S $/7n7zzXA~Hwة`$ <\ꐴߚT_r7:wP>A'[QDS]> ~Ǫ={T97ިkpӬqAFp}eQ- =m4c_Hk C_UbY&Mշ5z_{# 0qd.MZ]xذbջO/T @&&[= lp3$= -3 o1?{7E voj3(:sQH8 a Z ȾI0KާOڼ~ X|Űט %*xH5Zg(IFn & 1qmۘ@$yKK p%d< cA%gQw1t5Y[>nX(*Q@L ͛nR0NZp,%-Z;)fS @Pu}L@pdC͟{c-\"^ D-@!If#Tgp؄ 7E X5@~^r$=Xׇ7<d/d/$KpZgai5ky0 =UyL;v3B^fNÅ8gQHA]{/MC޺{vmGywգ>,XjNAoB~aM0ճ @O>W;-0dU!5r=2|ݸA~g2A j2rsFJ[l>+cܝaYR|¹FB8kX3P8J.D@ 6WЅLE Ll94hy<=2A;h-!r 8f<{))pӣNǚ6rHu}!0ͷhP hx sd gV7nVР? рN@; $OFw5>A =Hc;I5ӼM@,3M}-E=8$22 0JŘw\Z%0xOr\gˠK@5Ag$ROI3`Q-2ܽS;g`mcԤ+`$ f j-\Ě) C99-6y5w\U}{w˽8P;v+e/Nԛ;@$ id| Kowo/@d; B0A_ד9HZؖf3ત݋Qz0lj2z1"&Ρ"U4͡ Gw-w~a'H uK%6 tF|FemO|Z !^_&SCd-v4PgE ge: /`f~͂4^>V ԛ޿%"Y%0>^?[ |/G̡|Y ?YS- LP_4^fo(~M^H@l 8E{0B @gE?%l弾~٭p#}"ZLlqohb^z_ 4h*))=_r:\S.fCf1' $2A$U2Dq4\RFj$ (C0_VP y%7!O0Q/>P^>\hbP9 gJ%#Ȅ)C`<,>Bqk\闌}!Iyֶ-#;Lb@=lA,s>|0"ȤG 1jHLx\ZTC (RD3}^F茝VC /)%/YیzV F-GS䐧N2h|Dxzŋ#拙;=+8}JVk12c 2n2 ;x q^1;hs (@;H)dc>̚d,3KF0bq D PABM6|8þ;bI0)lT|>^yv7kP;/ 3")4<{MxSsʗ:C |/h0p13C)LA]kWI y ]-0܄^@NENɧY 3F-\Ќ?ג ^`ӿ YķU;VUՐ9Jhtji:&l*0?"E7Ah1.k3CgO>Z?U&wgtEd6{˦@P p>Z5f0~B~R3XɢQR{=PQrСc nQ5j 6St\Ho*oK,+y&?>5%5^z L-Z@zS`6]ŋ 8uk-3c`}D- صiGkfڗ`Ssx:g|ɳj І-d]a} T۵4.@X4lt2P's޾V`KJbқMQ4눦g;K~XߩcڲeIqXG 6%*z.onUU^aIu)EՖԇlfZCF_mH2A`AOf o:|Rht=XCQ '2(%njAõbު0qn9@eDx`U[D7 Ig!3bfq'US`Meȕ'%]ppPwЪ!&K` la9ؽss|Ib'EMv>Su@Qs`G*$=N| RG`k a-OM$K-FǑ-~)U4ЮtFt7L/H)IDjX>3D~:qЕttGzgH"D67f # zHH7-rSs#:a{zj]jղ|NϘ&jS&{ .Ro17hkHe ߟiPw5Db!*)&U= [)HҐˎ@8}Ԙ2;h-!`X+ao31ؙϖ1*8IFLQ%iE)Mffc6pH^C u5U"y'u?~H0^1P+2'؋h0UOkXUP Nzf-AI6L8 \, PAqO"{CV Ee @QbK?&˺X&]wvO@D:PcO`Jtep+ ]{|2:ClbKp z[*J[3'5IENDB`kaffeine-1.2.2/icons/ox32-actions-video-television-encrypted.png0000644000175000017500000000251311552636277024261 0ustar lxuserlxuserPNG  IHDR szzsRGBbKGD pHYsvv}ՂtIME 3OIDATXMh\U73dRiuPB ~`TB .Mu@ ѕP(SֶQR!4R$Cmf4f=.}7thPw޻sr7.թ)J:OY Q,9}b=D6Bƿ*BW/d"""[Lrl"pQEOgFCPE XAD1wH+2]A,,Ȅ8-107b`[/dlįû0$h؈zŞ:#i \},#z:ųyr9]8$udYk)$|C,pOycpN݅ms8%/AAGh-0󜜬c=3g@@=P%"@ \[o$ƍ~f pSjueqI),WgL:VB2)HƏ\0T)R 8ٌ5`*:Uen`l #Z>ʹꄶz- 5_.((p/h4EڷNMXzW݊`vwZV_{@( XfBhV6^Ē{o'/eI$Ȋп0G(/^I'gy,lr'? O?A ]@== ݼ8_kT923sQpvs) )y{;_NӲmGYQWpEoظ&]ZMra7d*6%+"Y Y#u,fAfp ['&KgXN{Ft|Z1}T3: z )/Aq󠿁վ>-[sx)8p`ef3WD$m 8J&s4)\5x#wF%Tզ6\ \#%h1e5w)Sns޿0Tߛ`TT] ޲fo:߫IENDB`kaffeine-1.2.2/icons/ox22-actions-audio-radio-encrypted.png0000644000175000017500000000273411552636277023175 0ustar lxuserlxuserPNG  IHDRĴl;sRGBbKGD pHYs^tIME KC\IDAT8u[l\G3gm׻^;ۉ& MMBZJZ#T$PIE}B၂hUQEH %ӈKڔ\m^{w^mvH4/lQɚwec@uҌ.TÃVU=>"VejS$Z͸ u+{|1׊ؿkStCOv,Lm2:R B!lɑS.V.5+g~XW쨱鵓 oYMAX"1}>ƾ M=yn{[+Wy,P]f;U(e,@:5DsؿԗX#-?~nP&fl[~|/9G=o].UCIktH䡳ڳpr1^hp$4W#iy8 ?(+JC.z)J+\SxQ䫟@wRc o20:6͡{cKʹ4%ET6v&&x֕Kx(u7msbT/{rϑVmf%y,b%B)H 6alDi˒1m]3B?Z*xֵ)낖nX4i[`IJ!5PSbF#ț|ϱ=?DQw067]듋 NgOsD3^,sj$eRrF0Z86j1*6G߰ __\VkE{-x_>ÜP"l QaL!i/YĚ(#c@9ПZ$ c yE ]Mmʉ+?o " grVo+ikpQRY ֆG+E;2##X°|AM:Xox~7яOscCWn߿)[w*f7jbEf} o_e 5{rh. Ͻⵔ[5߼qAGNq/s\r;VҒwAfzuļ Η+qS 3b^WޱQ⩷.o]hGq`=K,U|r"i$j.8<tK\xBʆ=~dοNUͽpZ~_g7-ku_}ClM=h! D"m!Ck'g$6h`Eg@8 YەGJ|׿7ٟoʹs|U 2<8; tQ[/ċ ^hBG ,`YW3-K] cc;w|m,\yyc?{0Z\"̱D&a$iMk8Nؙb:f{(*6I-ݭ9^:YahBgaaS[>nCwMƀ1!V-4elûre"b$~d)^kg%aOcvE6 h(BWʂN V.d9t2շ? FKdDZ*aMS a̴B:K#\}^W\~:1x c4^Ǟ{럼$B)T#G74Pv92Ư$ÊcU4gTwX|6eaןP.M 4$&B.C\ͽ\LuMy5n+FGi?]8MX+b%O~VNf>yK/5NgU8J #ݖjaZ* R)P4՘j̤%S׃R@H8g߯q-!, $ğ<>Lqrd`x/J;Bci4YR`!j *%QJ!mIyٹSπ:Q^$ՕzD#)JYH;ŎD!JKʋV0{< cXs C k)VI)Q )%BYZ֯zJHMc"Xvj1XeY(PJ1}R)]28,-$ehm,KFDJj &+5+ε34R}<> @T65dTɮ3Q! `|K`NV6k $ZO@@,kjlw!ҲN!dFԎ~-ǒ# .6XHXH@Hlu@9sjRBl\WN+ljy%О%g* /1,S+R ˶Yʟq姹opi`곐J$%%mR؎jb;Xi׳P b~;J?`05R hnȐw-$ ,Ttc+w?tÿ<zwb,2 bKIH  :DzC%CeB)nnKF/B|l`̿)O[ޡ4k3E#(ƿ?=Ch\Rs[;4Z2R 7Yտ+s|Sd͸p\P #k)jLY24~Dqs{}W\ 6|s7CEv@*G*A6RȤAlj,1~o|7H[c)%eq_@3TPMQD< 4.''1In=9Zv:ٜJLt-#, vSitM|65m]Yd',ZT Z`Y4JIA*:bX,)%bTt(.!Y,fmv&$xA|GPcLCIrZ&ɦ36k]D[7u7œф3,֨(њquL&%#lc3w)Qq<bL|vO+}%i'&L*fڢSga@Ba\t!4JL^L"1@\wM' L'6e?sJŲ681q\ ,!PQ,Kb;TJM@k":-}I땙R(QM)+%ŽP4] "8DYV8"*܌E:kd)r, -Igy{JDԍO4 x܃}kG&*+]Wc0()-JHU)IX;”QKa2:VfYZimR_*`eM{"CGQmP`[QضJdf3m`Buu.ToYuLYPM};E]mt/q,mNHT-T+Dak'G&fߦβNy sbBu-cw5KZ/~gE,)X٪LW*+xxaBMȠ# FprN XɵܴԔh.4y Ľ홛Vo{`T&|D**S`rHqLiJS-x{1,2fNK&jUd][>9>}c6dK[S4 *>#ՐQ-9؎XGQ䳊,`ժUOn?7XbiKM):]ӵb2QtsO]` =cX̉efG>EU=Sh{ۋml~k>ӐVd$# y6"aEԁPƋ7 nq*'=8GV{SVl:\ixe]FNԜS@Z1m2cU5D SjohT)2*jA&b\L nLvJ31Q֑ϯlIENDB`kaffeine-1.2.2/icons/hi32-apps-kaffeine.png0000644000175000017500000000413211552636277020025 0ustar lxuserlxuserPNG  IHDR szzsBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDATxڭW{LW>}JiAP,F.:M# t%64c[eYY%jeK$Gft>,'F!ԩSSΞ=K<: Ig}`m6225AgbH2MJhTh/ttxg%6{ LDQ|IiJRaO[M֌gάeT ab g77 %NGaRkAkq.WJ}_nߞuYYt2r4n<577I2rJ$Hjk=BU(ZR# CӇ(Iւ/ +/̈} ₅+S5;{-HVX _-ЃG9ޥy̯o ɸf'{Z[ڨj19'(*AB3"0C./'B\݌c7۩4W1 FDPA:`r*XSxW>orQ\gX{myk^.izbBl3a|D ?ܰA =aeF:Id2)55V,_.GGP.>~ Ch&"%I QHc̓Hk`oF`voA799.vBz+HSBNT~h'`nD(k9=0=Vd99)SQ(h0wA. LbV IPx}rFj_a3bp.oX ̍<%E͛Њ_*=̽[[Sr6=2nIENDB`kaffeine-1.2.2/icons/hi22-apps-kaffeine.png0000644000175000017500000000250511552636277020026 0ustar lxuserlxuserPNG  IHDRĴl;sBIT|d pHYsaa0UtEXtSoftwarewww.inkscape.org<IDATxڕU]H[g~s<'9$Ks&լVVV1PAon1 ]WeXvӲ]mcsewk@ iYe)Q4:ĘЀL}p}}HnWzMFeeeږ4gEEEFFFHqg MMM>.,,@IOCCCaY:i0??+Hz?;3gԕ^5r.--QOOQ?`𛕕{.+x Zm0LAeknn5 QwwwbkkC K#%Qڛ 5R)J&P:.o!IR ` ʲG_NNN1|>l08i,0bH@BA޻xf?zWT3c409 B8A# c<Vd.ݔNJEEr 5;wmmO(05552ij<ceHITA!I)H\P@V/Ax`6#@3@  SJ@yx#28pEc) ƌ@ؑy͑*+#B;&ZM"TOqn-0bidؠjHW 糳I!|t Y8r<|(]moXqĨT$P(6PB9[㥍 ҈"5,,=p[I6^vv<\%g~_ؓRXXH^/P7F8:*yUD"cGƳVTӅ d*0See%םuy8yO*36$lEKŬPBQoo/'---}9T U"`1c \Q…`+#B"A܏3Ƕ:/X 8o @NGH % L 'q`K  an8)Dx\J H<<$%0Ŭyqv󪪪6W`&y7JCלJ-~.Bߘ?/Fy 'M~‹@Z}=HsUw^$wJu9ymIENDB`kaffeine-1.2.2/icons/hi64-apps-kaffeine.png0000644000175000017500000001212011552636277020026 0ustar lxuserlxuserPNG  IHDR@@iqsBIT|d pHYsu85tEXtSoftwarewww.inkscape.org<IDATx[ypU$tt,8, h06PF'W2eY#5"Rs\jk,W53 :P "(d#!+d!$I'n}o;oՏwι{L&,@4?z  I+W|(==΋/fݻp_ݒ`BӴm[pawܱpYe |7zi D9VXpVV֣6ma__IV`%ڶs=ӋWNj[L6Mk׮xm%1S] @BM|>l2dnsω+WZw}hڎmv:H&\INL}P ,3ׯ|N(/\pf~5x t74%Di8/Φ4 mx'Od{ڠV ;A_|d"6V K5Y9~)"hGeRxy;͇I0VCA$-΄@9=dBPV ͥbG3є#Qx~-ͼC-)-#gȆ?i,.\'Rp ~Ct*G=5rx>84+ %yKGG!;15ri?Iueš2@*HIRp p]hM$Z^ J'?Z`6(O%cǎ/^L:&VZ%1cԿo>՗G:; M@ ua!-n6vX⣏>b֧̃wݻW|W< 687?_[hNСCFƣ C'W2]U![N<*g֧?lU;|0Q}8q2~ׯ!PաqpJm.T[ ڞP:usǏY`-$'yΝ;9UѯgUxh.;KO?T1Mk+)^}UIY:˧~:R_RTcScO>C Lч ֯#[Lae#82MfUڋ TTT7x $ Bp*[j? #&xwsH㛱:RǕ16 @R`K,@HaG5QG8vuA5Cl4%d ~#G(F!H&$x;;?СMTUE%%%Ytf-5cTHC@M!( DihB0IV<_:_΁ `eTgMt181TJ47(Y?p)u͞ @~/(.SX8u{ {kk#vQ>`EPRGFse&23Z0odHVԺɑ%m./U*wjSfy LXX"HGA)WNf$jdȎqJ@6(iυ E~AHMKs#fY,uhz4&-+ip֦eab#q1y+`AGf9P#:P^$=KAY P"wwn}~$NpHw:]UnYUګub tk${{(jďh n"A^P0ehgMt!+Me2 %6D `ժ3~Supr<+Gx=DHAU˦7N7s,E%BVGF_f?{V8Rrs]&napq}Bjfg;R'8 JMCU@x!0lϟbRI#vWMPN|@Ip0 E@jJ0J5Q;FBD&L @f/O6Dt }*50Z O'bljz3ԅu! &Kh|YL5u`'A h3 G+Հe" 0&bX4  ת%,?{a}a1LV$>sD#I$&`}n KkkeJnS5 .)/M9oc kXkn6(+9NmojGq ÉB)D\gӶ*M8QTWUqBPd "$D/HB @w3v4#8" !wEA~pbAH0k-Yf#m]}0oSc &t+Г#ki3DyܨEb0aJ0(Sa뗕/C朝Eji&@37W4c&ك%j$ ɳs2"aĈ Bw0'lmO=5?tD ,> u^c;qg\Ó3ClBb",g'ɛ, cZ*0}} s|o3$TDv3y, J;s!WCY s<&jq.Ty/,o>)6DiRҼ QC4GE1'|BEpê}uca515u9Y9sD8,E}jn a=給V" 7e3 Pr`01w Zv?{X0 Kj $ppS:45O7`a f1xv铐Ғ>yτ?f{4 JCXB n{ %ոH2TSg1p((HH^ ђ8 aU"4'L@/(sÑ9A eX`hH0 `ܡ!16?;5+$2{lr&)$6k3e9 dXg̯?5Hܬtl9X+P0qدX5h<<3?g)͟D{=y sAT~x8a I6c0xo&QEX !9 -NC*[o=vY9 7zO"1ߏbǎ%0C4aϞˢY*X'Xhܜe; t@ kߏbY,S@ެtJe$D:sB!&aWOpIvo0hp h[(B;%_m!WUpHEjTjl';L7 a< L@=p1kml(hB]FB pY+ 9Bff 85c!(xOX9 d0y1m}D"1HRv>st$C0~-K9`j3%C$ 񼖌FIUpT-`HGCgzGXVR+\)T*#6:z=M>r #]$QͫIENDB`kaffeine-1.2.2/icons/ox22-actions-video-television-encrypted.png0000644000175000017500000000175611552636277024270 0ustar lxuserlxuserPNG  IHDRĴl;sRGBbKGD pHYsaa0UtIME 5 XnIDAT8ՔkU3ArKƋ6(BLՖlb\Wu%nDA\(RBܨJnԪZA(`В&3;̍i B{=+!nPܢ +++̘(3([T^4@9g#/RHF)AX?yRTMAD JQ$тjM8]g t.ͳ1x SG74RD$#| D Z*䉷!K QrAALKPYT))f]&몯OR~x${y7~山mW4Y |{44ifOߡ9W!麝ǎ_=)gu-RDq!R-+*3eap|DZHjc#J`D4k(QZ0Z0qHPiF:PGlu;M0y+Z{>l m![[eA&J 4<8p 8;gIz mh≵@M l.|eLo?:Ԁ kk$I&K\hj_kI/ @[i-]~4MӺoEE$xw"Y^. `ve;|}8{?@ܕ|Ӎz P)!"_3=(ZWWOmy]վj__N2 ;Ԫ~hU{nH4w򙩡CzѨ턕@;U3zjpWQ4 tmQ9лF~'-[Z Or FaehFIENDB`kaffeine-1.2.2/icons/CMakeLists.txt0000644000175000017500000000027711552636277016611 0ustar lxuserlxuser# All icons are copied & hacked from oxygen # Copyright 2007 The Oxygen Team # Creative Common Attribution-ShareAlike 3.0 or LGPL2+ (+ clarification) kde4_install_icons(${ICON_INSTALL_DIR}) kaffeine-1.2.2/icons/ox32-actions-audio-radio-encrypted.png0000644000175000017500000000467411552636277023203 0ustar lxuserlxuserPNG  IHDR szzsRGBbKGD pHYs^tIME ;-c k4MGHJE9u`Ӯ,8 SΞ_RW=7Z4!5g&v%IF> [06ĜI|tٞ) 71T %769罝8 ' Y䜠l~K~|쒏LŚp393#]rQrpl#\3d, b@''GBV!E{50Eͫif*<3Mw<]o͇F ʇWT&R] K+8gd3}lgX~gbQi_ҌCuDw!ۛ3K'Gg:Ԏ:K_dz76ƯE&]ty\œs)m [{(zڪ82h[?ctK 5>gm]ÝQ5 t0 vf`b5Q͝W`6> t+djka'ۻ!E7i+a6Tƥdw2q$4h[ (diѥ9&vD{Sf]H~M(dQA!p3]lJ}[Ջ?CXV{^C@O|HER0I*A k; YGӛdrӺdx7d뢔D)=o^{NGv{}-MtwЛ}ZϩR{2%Jքњ@RJF`PAcb?Guw|V,4MLӤ/qa=38,nA5!Qz T BUPJbwmn-@*36p00qc8^К/$am0 Ra$1^Yb#.j$H!@R*^KO`HPR` 4 SC_~, ( C$ Q‘8hP4N(, C! k@z>&a}[Lo%CmiJ"TY{P?m1/O})%ZO,ױoy) xo;~M֚៯Vfn2ĉ(@kRv1V4*4y~z~.HY)vq T#Q("ॎޜEF~ 5RXE(!`„c R l>.xc{ @5R ӗ3G6=eﮯ S \)0dG,U1v<۲IֿB,׿8^ .q{mu[SGFP^+!² "Qx$Ybx]i0h"z֡VMURrDEw=0F%F b X 7&a KqxUeP]&,5Bl_dXҘ n1J C )PQ>Bvu xivI=zk_fO܂ )QHKg3y Nާx%j w eEEe ;@:[3oMͻLI;;j馻-Mog?}6<ż{}A<-CsoRϔ*ZIZcdg=  ʃeG- Gϯ<.j21$\ WPP"_I`0fS9ոӮY0LL" !ӌҎ QYxf7XF8ӳ*3+MJiH)彾?:Ø㺁 <!#z: H𷶶M0PL=IENDB`kaffeine-1.2.2/icons/ox16-actions-audio-radio-encrypted.png0000644000175000017500000000166711552636277023204 0ustar lxuserlxuserPNG  IHDRasRGBbKGD pHYs^tIME s7IDAT8U[h\esk2$Zb5oML+Ѣ4Eħ "*4 AJP-B|P"(Rbiibɜdf̜Cc {l(yԝ[;LvV+[}LSc!YyJY7:7/m!! [b[͚ߚɹ=tOc]w'dSZ1!b%C%Y:[꫗Hq9?(*-dDBH85}#;I do&+)dR!}=T*jpQro'n{|rj'/"RݲhVL]4T ]h.jCW}s=)qa';(EߧQ%wp4#>g.f8ל0f%}l~U C5p)|se#/Xk;iH:MvܸJi/WrFƧW~%Уih|nzeVDS͠="qk{ 4%/LJ.̖غcؔr8^ 7_džvtw6[2?2|ΗGǯt;܍03&Ogǃ_]k:MpWSڕ^|In%hcv\~ous|u{;oGˋK^<^A]͛RDNۋqMst[_UGiKN֟^WϮڬ^XN`QEN1{Fݣv~lP/?RDZz GKI!h&vughB_=Q99%89%IhNIȦ|G~|6x7Nd zNmLp?/Vu{:{~~xs^ݴ͇+cy<;|p /M9xB<8Y=F0cG_DG{DOyJ%{DGKtPx|T=)S=YʏKO&!"9"?RDL% "c;!p `7Y9βZ#WODRƓIHx/`h_>&%pM)79.qN!=2q Yh7Dtu;YOXa?_,ecm~#h!XR!>C>C};-!@_lw|t>7}_}~P3lƘ3kf[j]MXUѲŦ:SwJWqg29d (ch$Le)$U |b=rp N!S湥&܈1lܨ9ĕᄴb 1٧Oz7JJvUvcK+ -5f*4ЙLH;4$t Iccp Q5oUQ}55Ms.qsU6͐SHGpBn`#7i&Y/b^qb%`hL.z҄,"h7PuP0{'T:r_SlwP0nP?f QDMhri>A 糘am: xi7"_RF[eyE(4_f0-Ij\Urqj洖Z9oc+-(Y9p͸ɝ(LeqDpNi,3.wAYKKͼzyO鿙 7U$.־MRu/$>Tl>cqMLqk*>7|Kjʀre4u!KKK0זqI~I~)~x?yx7N]{TY +Sٲ&[!Gx9]Od.v_׽7k?,?\}'be$Ϋru~zQIb mŌ)9l/̌ןg^Ȯ.q}rzRLOOgw{taJBo߮.?;lGӮ|^ׅf3^z E/HF܏l!H:%SW~X׾j_Ћٲ?xztblu|䪫/<7G=KP/&Ύ:97'^%;^\Lq49v?<=hH Lti#l١0Ts4yu﻽>KωpCA3 !}F֡k6 4+z p YbH4 T#DtYXxh%gp"HrCjP"osR•՜XNmzLt:恽oq@" 1K$%mb$>1j6 _(B\L\#P1F(HƱFV fIb0e ]^e ?SN u=w=U?;{ociĊe+?X]̈ (fմGBNx4^|=iN TSg[m"BiDMLHCH*p4hZ9eV{%TYR/repWi %h*-PDw`x%a&PY({$Dw q.')EL&aE@Av }sΗGk̻vn]dn:zuƈ:&QZwz#*ZR(Ց(!!'5&1Qp)F)81MKjheW̾*S4rkŗ3Ył+Zk4KTҗ8=$.KK?b(O0M'ZR:EtH-]Ϲ}hy6yu}倩Q*d/UEEfޞVg냋,_X`)w:YTTjFi\8j{.+:R"AXJRgƹ8[4R-Ċ~NGW(9E'T-)("D1S᱖$LI3@Qm21*32T,FdYLDptP*ꨪ PϱEŀ tO E9cb,Nйd!cB}6f7 -^+$E&TxYg@C`qNoBXu)i !n\EdE+c˼cZZ0,zgYLQK;4Ȏ,EGMg#%њԋ)V$\MmӖƁt4UB"NQ2r͂Ċ9 J-@ {הjBLžEIŐŋA%ʂ*rP.j:_  I: Yr XjOTǶw$w }357 `qpGB QA@3GV*(bP/I)RL"ù3bd̕h3qW7 ;Sf@;\6i{QLDbŌ.빌6\^T2 a vܲd\+f^ ECIF1A[6Z!; cq-a -{. #юHqYD('I1Έ̳c"QrGx!`up _s_2˹Yrr\o=<ҲzEE q@$sg=_WtZ(*&r'u[$03 (!MF1հі (Pa j13f))^6آLі]!T83u&bP3:SXASL2æ #M]62RXZG-d̝1+j15L84*-jt*A!e\Lj=[ᔵ 1$ h!DشOECM$6J4GlؙrJwJwڡ9hL`ŒVLcT rX"S(Y %*]A;#ѐ18Xs-7ME(cT p˴(U KwAh1Id> v/(R%.=;rBaE}Lcԉ$b $?ܢnnPy!p,n<VteQ(|D ɴXt`j#:2DnZݩG[cabA쀕2TӉq1Kឌ-F*m L8@7721!CrdRUsnh\̒KT=%pʒ+tzi1f b0~Zz-SB+qcuHbnqrME3\TQtvg+-ݒXTjaA&!.dN$:SrR:e3bDFޑji;`< ܩ;!dḵE^P;s 2blNuB, 9X7bF5! wjʱP[=j- 2F(DQf´i a*fK,Yv23S,)jѩS'OLEIz  ((;ebXY."RlfHD6' KPP,Ҋ3l1T3Đٷ OP(ǽZpJ`9hJ>Z nY( IgXQՈA l#D-bZuf)(RBLu-cL7#c0XBʰCRGHWMSy@lQS%{Sbi4G`1KЍ;D9 eŬ#q,41hHZ,GcTIٲ1ir Q,d\49xG®,.Mx'pi4!3#ª15ӰТ {)oQwLq-e"%+f>spTb$,$c a} [4UE%uF\/z bδuVsbBqZsQW6*(Œ"nXkJs-. V̂AF$Y) R <<ag-4O:1͔/e$F%(܊Yst ,7bEC +anؙ+1^^gnm0%4ɋs R"h3Cj8U *fQL`B%c1RI=Ż%`p@^(],#>޹v,Uxί詥"+0!5է8ecm[jމ%H= tc:4cl 6̔xBesD0isq޺ujMdYQOшo2U|i,:([-f| Kjy ֻ̏q%tKmLX[L"s(:&w+KUt(:((#xy>ªeCѺ+DS,5ڴW:c/`ۆAT?U}G1>Ɩ1ldma6a@Kf?UaܲI6}Խ 01oyQ;gi kVl%EuQC6˴ TX=W[&g'&t(gB_L}FuKhI8zQ)Yf#5 SKfǺ4vðTñ( WI"1͈rC;$ZtNbhU趫^ݙ:HEkRb3*ӏF6T%sXm<-1y*}$c56Ό װUPp԰4gf)٠ֺumk0f4*#+YMO=Y9〶 ed A /#|oJG'+ܬqKfczbX}ZփagAAf’FdVi;ۗW;m;UEhzӏvvSE8 VV8 &m= ݊<{͖ܩ!2N#Ԋ3=9 YK%XhRêu3{۴SR!<,G>Xm2u/z*!Î RYc(kv ~J25ݏ5I =,1ubahvEmm̺:i]Fi- ͇a)Nz*ɢ'kJm, 4xYGљ(k;B ->6k?tV,`cT {(KJ0,z*lp(kfimM#Y=P beVZAc=d T:E73cwXmAu٦X@ho`5 AԞN? IڬQtiL`Kjc{bd2D7.bP@龙wf.bhZA>f`hv~lzc2|4H ++A 3GC%/:shZfZ$?&ԆxШC5UݣNe<:zgFU::S8,v.oüOf8aާiYeT)Fm4Z7bwm"5e3NEĘ4F@ vt eOLU+pX4I;Qش;j2xg:PO,VFR^2A;iaJdp3fEZgaխ}0]~CC*C]4'"d33Tذ:91־@%ѵ}⃬Сt^;vBl϶ TوLӶ#*q :ei4lY9\K|rnMڰv]_bJ 1Ԃn1,~BSX6#~LD: u:ΒZ!1,m=LcиIxwc@LLE9Iq'̇EI_ɏ=AHlVm,hKmTa^]WA01a-cܖ؜hN1>o]` oaemHmpt= (㨰an1XS̡0BGev<ؙ)i!)9BJmlka&nwՆi'^oL[~VԦ2_ B ä[,X_kHdưa  .;HouK 84ԃ;8iFSN};Շ۩lʼ/k'ٴy 'o_OeIg{>zDt5ҺF$uܡB/Rtialo~!lWڗPk~yD@G5j&v YJ\^͛n މ1.OH-bV(S[ޞ>#EgiBW6fUR[ yMEzojzV.4tK5bJT pfEMnI/} {$0eE¯|d)$-gi,k7T!x3]zZo3 c,ؗHa(4LbYrvD#>Ag׮1eViӶ$r}j^X|%Y/G'm贯N%<'틽833l< qk~qP]RͰjUlCx^j=7jFG4"wJ%騾i = -MʕLW~WEA.qץyߨF M4wBpr{cj.'i'ۘKo hH[T/hګ**r@wy_)UY_b&5/}X얭j8FY`S9wn 0Wrx߭/g0+<8eosAe/ OxJRqJ_ny˘(OCo9oͨ_x"sPJb4^y "|_şz }fH+տۣٛ7b}幡,^T=6/^+]TV-KQٻ0B.U[j)KXdHeB?sTXjiu"q%q2Ib$Aj Yu/ciXi(zu u-VU[B6xkYi>1S!V‰!eq `_[=?&&:).fKnꢮ6LCuXd+\\,>?wM宄^Vm})Rʂk_T@/o~"+~s5U(*}KI}dY*KxUx{T_u=̮\e߾U ?d(nXp1|j)] )szsX_2߽xɳNd/27XbY,LзRNz5_zQjP~qpFrc9U/2l_d/!XȻ}">ϛD'<"uJ2#zCGmK"y+%?0onuЫc3+YaG̭ʌ<꠨nuDV\oqhuĈC:ȣ !9hx(/mD;r@d6ڜt╯N):EaxPK3)2;5{[Vv cmlL2k[;(9Y2$uwI5my#5|G)6P o.cDmfܬ[ Ju/mg#n _̏5zŭBIt6zVm7`ui& ;O+ j~ #~JubӢvY 75ަvg3=FBn\,dmcY0Da)_餏#5UmT nP|\,x%'sfI)W[ \QQhy=*+.2H;s T@S3t CN[j݌ͼqYLY J(4Cu<)@tZP[r]7Gaf{ɮ/"ᷰdKsYWmUǜ-Qі; CrD(N8h}i 5,Ƭ:XҨ5W7Aam)ޚ +MwH.rRׄNC̺[\~>/~iU؟dzWtfݒDCy/=jfqCtDKP:C ruZmq˛,Ol6P$vbYP2-JΖF}kS^j"aaä-U575b*KUJnB; B0;l3Vǰ4,[vƝF'0lInfC$۔U0/GDF@i tXFCpw/ʃkyO'/rrHo>B9,uiխC)~kg5MiCA?S_E;Ll'\4Gz^:UQ,;w CK$P,N˔:L<=Sf`/,l:,Qt3=ix6,Ì5ROUXGCugfi-zʡ'_eUU'L?&IFQ.R-<'.eSǩ\ng)3f&LW cS cM݃~w(3(D!7uk)I }袀VġuPG Kv񺈤'av  CO*rQz{2tY8XK]O%gsӮIA8d\4͌MrB26 Oa,O1h|6jϩ`PQA%e:$#9,tDyl] YCbRT7m;:G Wh2)i6"vm)ej_qnPpXfŰ3̳:jX[; @-All&܂B(vmxhQCYb=蜉ʥ2Ui#59aV)6Q<5gɶ8C]G X۫>Zz=и#W494=L{14WTtVl(tphFHXJjאS6TŮ8O0Z>le*0顏 #̻v7DuL2Nj[n綹Ɩ6L= q~?& "jX+z3m1gue%;QJia ?M \m闤QݲnX(otD#tLSqoo'}2>X[!O րlu_w(iqmĄpYdDk^vwj.h-LR.jB~ߌ`h-A2, @_[>BlQ۲ 1OY䣰ve9P&[W3%'5޾);`>.ijYqO L#ԓ=GAĐS~z%]J3†5JoܱƘÝ~TbIe;ԯP#~e֡b7w.@1TW%@#2va\Kuf>"պ{6B޼~uh]љ1  GdjQ\c+Ƃ@Y]Js9(5r;:+So8g/^}l5fĀllkmcL|]kti"&jcnLb¾AUR(.jocF gViUU!۸G󻏳$Jj-1ˈ 5G ĆR*5H :klO"Ҁy `ӲkZƘ[[,\ٌ-]brFʲz[ڻ݋(Uk'cU\JO Nh1kYĒdY;KfȔ\+K[CXn7Zm],%_`=Tg䪫kY?0 _֪hF3k dE>3hE>qR٪;:b"3%7kpP)Dbz 5k&O&U9&h~+.ʩ[mN>[xJAt?e-ՏV9*.QTK!"xsaQCZY h'%BOEcfZ@'R}cэΦʼn5vVnnśXW+i%6/u >p9&ޢ%wΧvDu\5„;z #HI9ݞOh=tX6#bMC_Nc̦?MjՕR%EeeȾW8<ƾ}4\P/UZ$o}+kks6#s1zk°EeN$1϶ֵg4 1Q >&(n$hh|St-3Jȝ`9Sv }k}{׈~ .@ z?i6_c߾}`E[nZݻH.UEUVlٲ=\+vС\WU{TU>O ?gD h%J;NMDU j ƘZxvmF H@χ99&  s+N;q}೻1&+{@r sNAAb">'X#P1$L {/9DV*+J9G|ɚ> F`YH6Dqc<|Hb eM& qH =$B0Dc膍~nՅrUB9,֔!{10)<}3fk!b_͟fuחx1R-[~_o҂Hn嶼ůYZ7_ewI׀iȅh4\oy'#%gP`hZRmyP7/jCmfE&'8L݀^)&>}_#G8jk~_M ȑF("P>Z߀q7ab .scpr TI7^13ېJ9Gp'^չiJS ,! \N2%cYd.]ie)Y\ҳ\iUq3yx!c!U^NS4#lA`9 9Д@"A|eHYZ"M558;eDJK3e[7 0jqzq(d]YB{͖'A y`˫ȸsa/b8q;l,ƐMƥ.33WLMMq0FU `m cLLT h&$oӀ KXE\Wd0󑫩 3*v"rZ;P,8i(u1`o$x>RM L_r%TCbL F L|Nl`<)uUB+oJ@]KKs入%k͉XkCXJD pT,V\~.ZN=KsaU7¶m8u8~&myްщPV}=kJ)񽌏?nݺ뮻o fg/h:4:<< M5|[R>R#Zґ70%2J:zY +[N8!O=}%v*> Ih 4 +Y-xc]VivFL6,c@qd!߳oG&'SJnҹ^ O6 vrii7{ 6R.Lq~t~ϏH 0Bd Őe$o,J hy~HhjE5`zjIENDB`kaffeine-1.2.2/src/0000755000175000017500000000000011552636277013517 5ustar lxuserlxuserkaffeine-1.2.2/src/mainwindow.h0000644000175000017500000000466611552636277016060 0ustar lxuserlxuser/* * mainwindow.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include class QStackedLayout; class KActionCollection; class KCmdLineOptions; class KRecentFilesAction; class KTabBar; class KUrl; class DvbTab; class MediaWidget; class PlayerTab; class PlaylistTab; class TabBase; class MainWindow : public KMainWindow { Q_OBJECT public: MainWindow(); ~MainWindow(); static KCmdLineOptions cmdLineOptions(); void parseArgs(); signals: void mayCloseApplication(bool *ok, QWidget *parent); private slots: void displayModeChanged(); void open(); void openUrl(); void openUrl(const KUrl &url); void openAudioCd(const QString &device = QString()); void openVideoCd(const QString &device = QString()); void openDvd(const QString &device = QString()); void playDvdFolder(); void playDvb(); void resizeToVideo(int factor); void configureKeys(); void configureKaffeine(); void navigationBarOrientationChanged(Qt::Orientation orientation); void activateTab(int tabIndex); void hideCursor(); private: enum TabIndex { StartTabId = 0, PlayerTabId = 1, PlaylistTabId = 2, DvbTabId = 3 }; void closeEvent(QCloseEvent *event); bool event(QEvent *event); void keyPressEvent(QKeyEvent *event); void leaveEvent(QEvent *event); KActionCollection *collection; KRecentFilesAction *actionOpenRecent; KToolBar *navigationBar; KTabBar *tabBar; KToolBar *controlBar; bool autoHideControlBar; QTimer *cursorHideTimer; QList temporaryUrls; MediaWidget *mediaWidget; QStackedLayout *stackedLayout; QList tabs; int currentTabIndex; PlayerTab *playerTab; PlaylistTab *playlistTab; DvbTab *dvbTab; }; #endif /* MAINWINDOW_H */ kaffeine-1.2.2/src/sqlhelper.cpp0000644000175000017500000000560711552636277016232 0ustar lxuserlxuser/* * sqlhelper.cpp * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "sqlhelper.h" #include #include #include #include #include #include "sqlinterface.h" SqlHelper::SqlHelper() { database = QSqlDatabase::addDatabase("QSQLITE", "kaffeine"); database.setDatabaseName(KStandardDirs::locateLocal("appdata", "sqlite.db")); timer.setInterval(5000); connect(&timer, SIGNAL(timeout()), this, SLOT(collectSubmissions())); } SqlHelper::~SqlHelper() { } bool SqlHelper::createInstance() { Q_ASSERT(instance == NULL); if (!QSqlDatabase::isDriverAvailable("QSQLITE")) { KMessageBox::queuedMessageBox(NULL, KMessageBox::Error, i18nc("message box", "Please install the Qt SQLite plugin.")); return false; } instance = new SqlHelper(); if (!instance->database.open()) { QString details = instance->database.lastError().databaseText(); if (!details.isEmpty() && !details.endsWith('\n')) { details.append('\n'); } details.append(instance->database.lastError().driverText()); KMessageBox::queuedDetailedError(NULL, i18nc("message box", "Cannot open the SQLite database."), details); delete instance; instance = NULL; return false; } return true; } SqlHelper *SqlHelper::getInstance() { return instance; } QSqlQuery SqlHelper::prepare(const QString &statement) { QSqlQuery query(database); query.setForwardOnly(true); if (!query.prepare(statement)) { kError() << query.lastError().text(); } return query; } QSqlQuery SqlHelper::exec(const QString &statement) { QSqlQuery query(database); query.setForwardOnly(true); if (!query.exec(statement)) { kError() << query.lastError().text(); } return query; } void SqlHelper::exec(QSqlQuery &query) { if (!query.exec()) { kError() << query.lastError().text(); } } void SqlHelper::requestSubmission(SqlInterface *object) { if (!timer.isActive()) { timer.start(); } objects.append(object); } void SqlHelper::collectSubmissions() { exec("BEGIN"); for (int i = 0; i < objects.size(); ++i) { objects.at(i)->sqlSubmit(); } exec("COMMIT"); timer.stop(); objects.clear(); } SqlHelper *SqlHelper::instance = NULL; kaffeine-1.2.2/src/mediawidget.h0000644000175000017500000001531511552636277016160 0ustar lxuserlxuser/* * mediawidget.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef MEDIAWIDGET_H #define MEDIAWIDGET_H #include #include #include class QActionGroup; class QPushButton; class QSlider; class KAction; class KActionCollection; class KComboBox; class KMenu; class KToolBar; class DvbFeed; class OsdWidget; class SeekSlider; class XineMediaWidget; class MediaWidget : public QWidget { Q_OBJECT public: MediaWidget(KMenu *menu_, KToolBar *toolBar, KActionCollection *collection, QWidget *parent); ~MediaWidget(); static QString extensionFilter(); // usable for KFileDialog::setFilter() enum AspectRatio { AspectRatioAuto, AspectRatio4_3, AspectRatio16_9, AspectRatioWidget }; enum DisplayMode { NormalMode, FullScreenMode, MinimalMode }; enum MetadataType { Title, Artist, Album, TrackNumber }; DisplayMode getDisplayMode() const; void setDisplayMode(DisplayMode displayMode_); /* * loads the media and starts playback */ void play(const KUrl &url, const KUrl &subtitleUrl = KUrl()); void playAudioCd(const QString &device); void playVideoCd(const QString &device); void playDvd(const QString &device); void updateExternalSubtitles(const QList &subtitles, int currentSubtitle); OsdWidget *getOsdWidget(); void playDvb(const QString &channelName); // starts dvb mode void writeDvbData(const QByteArray &data); // empty list = use audio channels / subtitles provided by phonon void updateDvbAudioChannels(const QStringList &audioChannels, int currentAudioChannel); void updateDvbSubtitles(const QStringList &subtitles, int currentSubtitle); int getShortSkipDuration() const; int getLongSkipDuration() const; void setShortSkipDuration(int duration); void setLongSkipDuration(int duration); bool isPlaying() const; bool isPaused() const; int getPosition() const; // milliseconds int getVolume() const; // 0 - 100 void play(); // (re-)starts the current media void togglePause(); void setPosition(int position); // milliseconds void setVolume(int volume); // 0 - 100 void toggleMuted(); public slots: void previous(); void next(); void stop(); void increaseVolume(); void decreaseVolume(); void toggleFullScreen(); void toggleMinimalMode(); void shortSkipBackward(); void shortSkipForward(); void longSkipBackward(); void longSkipForward(); signals: void displayModeChanged(); void changeCaption(const QString &caption); void resizeToVideo(int factor); void playlistPrevious(); void playlistPlay(); void playlistNext(); void playlistUrlsDropped(const QList &urls); void playlistTrackLengthChanged(int length); void playlistTrackMetadataChanged( const QMap &metadata); void previousDvbChannel(); void nextDvbChannel(); void prepareDvbTimeShift(); void startDvbTimeShift(); void changeDvbAudioChannel(int index); void changeDvbSubtitle(int index); void dvbStopped(); void osdKeyPressed(int key); private slots: void sourceChanged(); void playbackFinished(); void playbackStopped(); void playbackChanged(bool playing); void totalTimeChanged(int totalTime); void currentTimeChanged(int currentTime); void setMetadata(const QMap &metadata); void seekableChanged(bool seekable); void audioChannelsChanged(const QStringList &audioChannels, int currentAudioChannel); void setCurrentAudioChannel(int currentAudioChannel); void subtitlesChanged(const QStringList &subtitles, int currentSubtitle); void setCurrentSubtitle(int currentSubtitle); void dvdPlaybackChanged(bool playingDvd); void titlesChanged(int titleCount, int currentTitle); void setCurrentTitle(int currentTitle); void chaptersChanged(int chapterCount, int currentChapter); void setCurrentChapter(int currentChapter); void anglesChanged(int angleCount, int currentAngle); void setCurrentAngle(int currentAngle); void videoSizeChanged(); void checkScreenSaver(); void mutedChanged(); void volumeChanged(int volume); void deinterlacingChanged(bool deinterlacing); void aspectRatioChanged(QAction *action); void autoResizeTriggered(QAction *action); void pausedChanged(bool paused); void timeButtonClicked(); void jumpToPosition(); void currentAudioChannelChanged(int currentAudioChannel); void currentSubtitleChanged(int currentSubtitle); void toggleMenu(); void currentTitleChanged(QAction *action); void currentChapterChanged(QAction *action); void currentAngleChanged(QAction *action); private: void updateTimeButton(); void stopDvbPlayback(); void contextMenuEvent(QContextMenuEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); void keyPressEvent(QKeyEvent *event); void resizeEvent(QResizeEvent *event); void wheelEvent(QWheelEvent *event); KMenu *menu; XineMediaWidget *backend; OsdWidget *osdWidget; DvbFeed *dvbFeed; QString currentSourceName; KAction *actionPrevious; KAction *actionPlayPause; QString textPlay; QString textPause; KIcon iconPlay; KIcon iconPause; KAction *actionStop; KAction *actionNext; DisplayMode displayMode; KAction *fullScreenAction; KAction *minimalModeAction; KComboBox *audioChannelBox; KComboBox *subtitleBox; QString textSubtitlesOff; QList externalSubtitles; KUrl currentExternalSubtitle; bool audioChannelsReady; bool subtitlesReady; int autoResizeFactor; KAction *muteAction; KIcon mutedIcon; KIcon unmutedIcon; bool isMuted; QSlider *volumeSlider; SeekSlider *seekSlider; KAction *longSkipBackwardAction; KAction *shortSkipBackwardAction; KAction *shortSkipForwardAction; KAction *longSkipForwardAction; KAction *deinterlaceAction; KAction *menuAction; KMenu *titleMenu; KMenu *chapterMenu; KMenu *angleMenu; QActionGroup *titleGroup; QActionGroup *chapterGroup; QActionGroup *angleGroup; KMenu *navigationMenu; int shortSkipDuration; int longSkipDuration; KAction *jumpToPositionAction; QPushButton *timeButton; bool showElapsedTime; bool screenSaverSuspended; }; #endif /* MEDIAWIDGET_H */ kaffeine-1.2.2/src/backend-xine/0000755000175000017500000000000011552636277016047 5ustar lxuserlxuserkaffeine-1.2.2/src/backend-xine/xinecommands.cpp0000644000175000017500000001443211552636277021244 0ustar lxuserlxuser/* * xinecommands.cpp * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "xinecommands.h" #include #include #include XinePipeReader::XinePipeReader(int fd_, QObject *parent) : fd(fd_), notifier(fd, QSocketNotifier::Read) { QObject::connect(¬ifier, SIGNAL(activated(int)), parent, SLOT(readyRead())); buffer.resize(4080); bufferPosition = 0; bufferSize = 0; currentData = NULL; currentSize = -1; } XinePipeReader::~XinePipeReader() { } void XinePipeReader::readyRead() { while (true) { int bytesRead = read(fd, buffer.data() + bufferSize, buffer.size() - bufferSize); if ((bytesRead < 0) && (errno == EINTR)) { continue; } if (bytesRead > 0) { bufferSize += bytesRead; if (bufferSize == buffer.size()) { buffer.resize(buffer.size() + 4096); continue; } } break; } currentSize = -1; } int XinePipeReader::nextCommand() { qint32 size = 5; if ((bufferSize - bufferPosition) >= 4) { memcpy(&size, buffer.constData() + bufferPosition, 4); if (size < 5) { kWarning() << "size too small"; size = 5; } } if ((bufferSize - bufferPosition) < size) { if (bufferPosition == bufferSize) { if (buffer.size() != 4080) { buffer.clear(); buffer.resize(4080); } bufferPosition = 0; bufferSize = 0; } else if (bufferPosition > 0) { memmove(buffer.data(), buffer.constData() + bufferPosition, bufferSize - bufferPosition); bufferSize -= bufferPosition; bufferPosition = 0; if (buffer.size() < size) { buffer.resize(4080 + ((size - 4080 + 4095) & (~4095))); } else if ((buffer.size() > 4080) && (size <= 4080)) { buffer.resize(4080); } } currentSize = -1; return -1; } currentData = buffer.constData() + bufferPosition + 5; currentSize = size - 5; bufferPosition += size; return *(currentData - 1); } bool XinePipeReader::isValid() const { return (currentSize == 0); } bool XinePipeReader::readBool() { bool value = false; if (currentSize >= 1) { value = (*currentData != 0); ++currentData; --currentSize; } else { currentSize = -1; } return value; } qint8 XinePipeReader::readChar() { qint8 value = 0; if (currentSize >= static_cast(sizeof(value))) { memcpy(&value, currentData, sizeof(value)); currentData += sizeof(value); currentSize -= sizeof(value); } else { currentSize = -1; } return value; } qint16 XinePipeReader::readShort() { qint16 value = 0; if (currentSize >= static_cast(sizeof(value))) { memcpy(&value, currentData, sizeof(value)); currentData += sizeof(value); currentSize -= sizeof(value); } else { currentSize = -1; } return value; } qint32 XinePipeReader::readInt() { qint32 value = 0; if (currentSize >= static_cast(sizeof(value))) { memcpy(&value, currentData, sizeof(value)); currentData += sizeof(value); currentSize -= sizeof(value); } else { currentSize = -1; } return value; } qint64 XinePipeReader::readLongLong() { qint64 value = 0; if (currentSize >= static_cast(sizeof(value))) { memcpy(&value, currentData, sizeof(value)); currentData += sizeof(value); currentSize -= sizeof(value); } else { currentSize = -1; } return value; } QByteArray XinePipeReader::readByteArray() { QByteArray byteArray; if (currentSize >= 0) { byteArray.resize(currentSize); memcpy(byteArray.data(), currentData, currentSize); currentSize = 0; } return byteArray; } QString XinePipeReader::readString() { QString string; if ((currentSize >= 0) && ((currentSize & 0x01) == 0)) { string.resize(currentSize / 2); memcpy(reinterpret_cast(string.data()), currentData, currentSize); currentSize = 0; } else { currentSize = -1; } return string; } void XinePipeWriterBase::write(qint8 command, const char *firstArg, unsigned int firstArgSize, const char *secondArg, unsigned int secondArgSize) { Q_UNUSED(command) Q_UNUSED(firstArg) Q_UNUSED(firstArgSize) Q_UNUSED(secondArg) Q_UNUSED(secondArgSize) } XinePipeWriter::XinePipeWriter(int fd_, QObject *parent) : QObject(parent), fd(fd_), notifier(fd, QSocketNotifier::Write) { notifier.setEnabled(false); connect(¬ifier, SIGNAL(activated(int)), this, SLOT(readyWrite())); buffer.resize(4080); bufferPosition = 0; } XinePipeWriter::~XinePipeWriter() { } void XinePipeWriter::readyWrite() { if (flush()) { notifier.setEnabled(false); } } void XinePipeWriter::write(qint8 command, const char *firstArg, unsigned int firstArgSize, const char *secondArg, unsigned int secondArgSize) { if ((firstArgSize >= 0x100000) || (secondArgSize >= 0x100000)) { kError() << "monstrous big write" << command; firstArgSize = 0; secondArgSize = 0; } qint32 size = 5 + firstArgSize + secondArgSize; if (size > (buffer.size() - bufferPosition)) { buffer.resize(4080 + ((bufferPosition + size - 4080 + 4095) & (~4095))); } char *data = buffer.data() + bufferPosition; memcpy(data, &size, 4); data[4] = command; memcpy(data + 5, firstArg, firstArgSize); memcpy(data + 5 + firstArgSize, secondArg, secondArgSize); bufferPosition += size; if (!flush()) { notifier.setEnabled(true); } } bool XinePipeWriter::flush() { int bytesWritten; do { bytesWritten = ::write(fd, buffer.constData(), bufferPosition); } while ((bytesWritten < 0) && (errno == EINTR)); if (bytesWritten > 0) { if (bytesWritten == bufferPosition) { if (buffer.size() != 4080) { buffer.clear(); buffer.resize(4080); } bufferPosition = 0; return true; } memmove(buffer.data(), buffer.constData() + bytesWritten, bufferPosition - bytesWritten); bufferPosition -= bytesWritten; } return false; } kaffeine-1.2.2/src/backend-xine/xinemediawidget.h0000644000175000017500000001376711552636277021405 0ustar lxuserlxuser/* * xinemediawidget.h * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef XINEMEDIAWIDGET_H #define XINEMEDIAWIDGET_H #include "../mediawidget.h" class XineChildMarshaller; class XineProcess; class XineMediaWidget : public QWidget { friend class XineProcess; Q_OBJECT public: explicit XineMediaWidget(QWidget *parent); ~XineMediaWidget(); void setMuted(bool muted); void setVolume(int volume); // [0 - 100] void setAspectRatio(MediaWidget::AspectRatio aspectRatio); void setDeinterlacing(bool deinterlacing); void playUrl(const KUrl &url, const KUrl &subtitleUrl); void playAudioCd(const QString &device); void playVideoCd(const QString &device); void playDvd(const QString &device); void setExternalSubtitle(const KUrl &subtitleUrl); void stop(); bool isPlaying() const; bool isSeekable() const; int getCurrentTime() const; // milliseconds int getTotalTime() const; // milliseconds QStringList getAudioChannels() const; QStringList getSubtitles() const; int getCurrentAudioChannel() const; // first audio channel = 0 int getCurrentSubtitle() const; // first subtitle = 0 void setPaused(bool paused); void setCurrentAudioChannel(int currentAudioChannel_); void setCurrentSubtitle(int currentSubtitle_); void toggleMenu(); void setCurrentTitle(int currentTitle_); // first title = 1 void setCurrentChapter(int currentChapter_); // first chapter = 1 void setCurrentAngle(int currentAngle_); // first angle = 1 bool playPreviousTitle(); bool playNextTitle(); public slots: void seek(int time); signals: void sourceChanged(); void playbackFinished(); void playbackStopped(); void playbackChanged(bool playing); void totalTimeChanged(int totalTime); void currentTimeChanged(int currentTime); void metadataChanged(const QMap &metadata); void seekableChanged(bool seekable); void audioChannelsChanged(const QStringList &audioChannels, int currentAudioChannel); void currentAudioChannelChanged(int currentAudioChannel); void subtitlesChanged(const QStringList &subtitles, int currentSubtitle); void currentSubtitleChanged(int currentSubtitle); void dvdPlaybackChanged(bool playingDvd); void titlesChanged(int titleCount, int currentTitle); void currentTitleChanged(int currentTitle); void chaptersChanged(int chapterCount, int currentChapter); void currentChapterChanged(int currentChapter); void anglesChanged(int angleCount, int currentAngle); void currentAngleChanged(int currentAngle); void videoSizeChanged(); public: enum StateFlag { NotReady = (1 << 0), Playing = (1 << 1), PlayingDvd = (1 << 2), EmitPlaybackFinished = (1 << 3), Synchronized = (1 << 4) }; Q_DECLARE_FLAGS(StateFlags, StateFlag) enum DirtyFlag { ResetState = (1 << 0), SourceChanged = (1 << 1), PlaybackFinished = (1 << 2), PlaybackStopped = (1 << 3), PlaybackChanged = (1 << 4), TotalTimeChanged = (1 << 5), CurrentTimeChanged = (1 << 6), MetadataChanged = (1 << 7), SeekableChanged = (1 << 8), AudioChannelsChanged = (1 << 9), CurrentAudioChannelChanged = (1 << 10), SubtitlesChanged = (1 << 11), CurrentSubtitleChanged = (1 << 12), PlayingDvdChanged = (1 << 13), TitleCountChanged = (1 << 14), CurrentTitleChanged = (1 << 15), ChapterCountChanged = (1 << 16), CurrentChapterChanged = (1 << 17), AngleCountChanged = (1 << 18), CurrentAngleChanged = (1 << 19), VideoSizeChanged = (1 << 20) }; Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag) private: void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); QSize sizeHint() const; void initFailed(const QString &errorMessage); void sync(unsigned int sequenceNumber_); void playbackFailed(const QString &errorMessage); void playbackFinishedInternal(); void updateCurrentTotalTime(int currentTime_, int totalTime_); void updateMetadata(const QString &metadata_); void updateSeekable(bool seekable_); void updateAudioChannels(const QByteArray &audioChannels_, int currentAudioChannel_); void updateSubtitles(const QByteArray &subtitles_, int currentSubtitle_); void updateTitles(int titleCount_, int currentTitle_); void updateChapters(int chapterCount_, int currentChapter_); void updateAngles(int angleCount_, int currentAngle_); void updateMouseTracking(bool mouseTrackingEnabled); void updateMouseCursor(bool pointingMouseCursor); void updateVideoSize(unsigned int videoSize_); void playEncodedUrl(const QByteArray &encodedUrl, StateFlags stateFlags = 0); void stateChanged(); XineProcess *process; XineChildMarshaller *childProcess; StateFlags currentState; DirtyFlags dirtyFlags; QByteArray currentUrl; unsigned int sequenceNumber; int currentTime; int totalTime; QString rawMetadata; QMap metadata; bool seekable; QByteArray rawAudioChannels; QStringList audioChannels; int currentAudioChannel; QByteArray rawSubtitles; QStringList subtitles; int currentSubtitle; QByteArray encodedDvdUrl; int titleCount; int currentTitle; int chapterCount; int currentChapter; int angleCount; int currentAngle; unsigned int videoSize; }; Q_DECLARE_OPERATORS_FOR_FLAGS(XineMediaWidget::StateFlags) Q_DECLARE_OPERATORS_FOR_FLAGS(XineMediaWidget::DirtyFlags) #endif /* XINEMEDIAWIDGET_H */ kaffeine-1.2.2/src/backend-xine/xinemediawidget.cpp0000644000175000017500000005551111552636277021731 0ustar lxuserlxuser/* * xinemediawidget.cpp * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "xinemediawidget.h" #include "xinemediawidget_p.h" #include #include #include #include #include #include static QString binInstallPath() { return QString::fromUtf8(KAFFEINE_BIN_INSTALL_DIR "/"); } XineProcess::XineProcess(XineMediaWidget *parent_) : QProcess(parent_), parent(parent_) { memset(pipeToChild, 0, sizeof(pipeToChild)); memset(pipeFromChild, 0, sizeof(pipeFromChild)); if ((pipe(pipeToChild) != 0) || (pipe(pipeFromChild) != 0)) { kError() << "pipe failed"; reader = NULL; writer = new XinePipeWriterBase(); childProcess.writer = writer; return; } reader = new XinePipeReader(pipeFromChild[0], this); writer = new XinePipeWriter(pipeToChild[1], this); childProcess.writer = writer; setProcessChannelMode(ForwardedChannels); start(binInstallPath() + "kaffeine-xbu", QStringList() << "fU4eT3iN"); } XineProcess::~XineProcess() { if (state() != QProcess::NotRunning) { childProcess.quit(); if (!waitForFinished(3000)) { kill(); } } delete reader; delete writer; } void XineProcess::readyRead() { reader->readyRead(); while (true) { int command = reader->nextCommand(); switch (command) { case -1: return; case XineCommands::InitFailed: { QString errorMessage = reader->readString(); if (reader->isValid()) { parent->initFailed(errorMessage); } break; } case XineCommands::Sync: { quint32 sequenceNumber = reader->readInt(); if (reader->isValid()) { parent->sync(sequenceNumber); } break; } case XineCommands::PlaybackFailed: { QString errorMessage = reader->readString(); if (reader->isValid()) { parent->playbackFailed(errorMessage); } break; } case XineCommands::PlaybackFinished: parent->playbackFinishedInternal(); break; case XineCommands::UpdateCurrentTotalTime: { qint32 currentTime = reader->readInt(); qint32 totalTime = reader->readInt(); if (reader->isValid()) { parent->updateCurrentTotalTime(currentTime, totalTime); } break; } case XineCommands::UpdateMetadata: { QString metadata = reader->readString(); if (reader->isValid()) { parent->updateMetadata(metadata); } break; } case XineCommands::UpdateSeekable: { bool seekable = reader->readBool(); if (reader->isValid()) { parent->updateSeekable(seekable); } break; } case XineCommands::UpdateAudioChannels: { qint8 currentAudioChannel = reader->readChar(); QByteArray audioChannels = reader->readByteArray(); if (reader->isValid()) { parent->updateAudioChannels(audioChannels, currentAudioChannel); } break; } case XineCommands::UpdateSubtitles: { qint8 currentSubtitle = reader->readChar(); QByteArray subtitles = reader->readByteArray(); if (reader->isValid()) { parent->updateSubtitles(subtitles, currentSubtitle); } break; } case XineCommands::UpdateTitles: { qint8 titleCount = reader->readChar(); qint8 currentTitle = reader->readChar(); if (reader->isValid()) { parent->updateTitles(titleCount, currentTitle); } break; } case XineCommands::UpdateChapters: { qint8 chapterCount = reader->readChar(); qint8 currentChapter = reader->readChar(); if (reader->isValid()) { parent->updateChapters(chapterCount, currentChapter); } break; } case XineCommands::UpdateAngles: { qint8 angleCount = reader->readChar(); qint8 currentAngle = reader->readChar(); if (reader->isValid()) { parent->updateAngles(angleCount, currentAngle); } break; } case XineCommands::UpdateMouseTracking: { bool mouseTrackingEnabled = reader->readBool(); if (reader->isValid()) { parent->updateMouseTracking(mouseTrackingEnabled); } break; } case XineCommands::UpdateMouseCursor: { bool pointingMouseCursor = reader->readBool(); if (reader->isValid()) { parent->updateMouseCursor(pointingMouseCursor); } break; } case XineCommands::UpdateVideoSize: { quint32 videoSize = reader->readInt(); if (reader->isValid()) { parent->updateVideoSize(videoSize); } break; } default: kError() << "unknown command" << command; continue; } if (!reader->isValid()) { kError() << "wrong argument size for command" << command; } } } void XineProcess::setupChildProcess() { while (true) { if (dup2(pipeToChild[0], 3) < 0) { if (errno == EINTR) { continue; } kError() << "dup2 failed"; } break; } while (true) { if (dup2(pipeFromChild[1], 4) < 0) { if (errno == EINTR) { continue; } kError() << "dup2 failed"; } break; } } XineMediaWidget::XineMediaWidget(QWidget *parent) : QWidget(parent), sequenceNumber(0x71821680), currentTime(0), totalTime(0), seekable(false), currentAudioChannel(-1), currentSubtitle(-1), titleCount(0), currentTitle(0), chapterCount(0), currentChapter(0), angleCount(0), currentAngle(0), videoSize(0) { setAttribute(Qt::WA_NativeWindow); setAttribute(Qt::WA_PaintOnScreen); QPalette palette = QWidget::palette(); palette.setColor(backgroundRole(), Qt::black); setPalette(palette); setAutoFillBackground(true); process = new XineProcess(this); childProcess = process->getChildProcess(); childProcess->init(winId()); hide(); } XineMediaWidget::~XineMediaWidget() { } void XineMediaWidget::setMuted(bool muted) { childProcess->setMuted(muted); } void XineMediaWidget::setVolume(int volume) { childProcess->setVolume(volume); } void XineMediaWidget::setAspectRatio(MediaWidget::AspectRatio aspectRatio) { XineAspectRatio xineAspectRatio; switch (aspectRatio) { case MediaWidget::AspectRatioAuto: xineAspectRatio = XineAspectRatioAuto; break; case MediaWidget::AspectRatio4_3: xineAspectRatio = XineAspectRatio4_3; break; case MediaWidget::AspectRatio16_9: xineAspectRatio = XineAspectRatio16_9; break; case MediaWidget::AspectRatioWidget: xineAspectRatio = XineAspectRatioWidget; break; default: kError() << "unknown aspect ratio" << aspectRatio; return; } childProcess->setAspectRatio(xineAspectRatio); } void XineMediaWidget::setDeinterlacing(bool deinterlacing) { childProcess->setDeinterlacing(deinterlacing); } void XineMediaWidget::playUrl(const KUrl &url, const KUrl &subtitleUrl) { if (url.toLocalFile().endsWith(QLatin1String(".iso"), Qt::CaseInsensitive)) { currentUrl = QByteArray("dvd://").append(url.encodedPath()); playEncodedUrl(currentUrl, PlayingDvd); } else { currentUrl = url.toEncoded(); QByteArray encodedUrl = currentUrl; if (subtitleUrl.isValid()) { encodedUrl.append("#subtitle:"); encodedUrl.append(subtitleUrl.encodedPath()); } playEncodedUrl(encodedUrl, EmitPlaybackFinished); } } void XineMediaWidget::playAudioCd(const QString &device) { currentUrl = QByteArray("cdda://").append(device.toUtf8().toPercentEncoding("/")); playEncodedUrl(currentUrl); } void XineMediaWidget::playVideoCd(const QString &device) { currentUrl = QByteArray("vcd://").append(device.toUtf8().toPercentEncoding("/")); playEncodedUrl(currentUrl); } void XineMediaWidget::playDvd(const QString &device) { currentUrl = QByteArray("dvd://").append(device.toUtf8().toPercentEncoding("/")); playEncodedUrl(currentUrl, PlayingDvd); } void XineMediaWidget::setExternalSubtitle(const KUrl &subtitleUrl) { QByteArray encodedUrl = currentUrl; int position = currentTime; int audioChannel = currentAudioChannel; if (subtitleUrl.isValid()) { encodedUrl.append("#subtitle:"); encodedUrl.append(subtitleUrl.encodedPath()); } playEncodedUrl(encodedUrl, EmitPlaybackFinished); seek(position); setCurrentAudioChannel(audioChannel); } void XineMediaWidget::stop() { currentUrl.clear(); playEncodedUrl(QByteArray()); } bool XineMediaWidget::isPlaying() const { return ((currentState & Playing) != 0); } bool XineMediaWidget::isSeekable() const { return seekable; } int XineMediaWidget::getCurrentTime() const { return currentTime; } int XineMediaWidget::getTotalTime() const { return totalTime; } QStringList XineMediaWidget::getAudioChannels() const { return audioChannels; } QStringList XineMediaWidget::getSubtitles() const { return subtitles; } int XineMediaWidget::getCurrentAudioChannel() const { return currentAudioChannel; } int XineMediaWidget::getCurrentSubtitle() const { return currentSubtitle; } void XineMediaWidget::setPaused(bool paused) { childProcess->setPaused(paused); } void XineMediaWidget::setCurrentAudioChannel(int currentAudioChannel_) { childProcess->setCurrentAudioChannel(currentAudioChannel_); } void XineMediaWidget::setCurrentSubtitle(int currentSubtitle_) { childProcess->setCurrentSubtitle(currentSubtitle_); } void XineMediaWidget::toggleMenu() { childProcess->toggleMenu(); } void XineMediaWidget::setCurrentTitle(int currentTitle_) { if (currentUrl.startsWith("cdda:") || currentUrl.startsWith("dvd:")) { QByteArray encodedUrl = currentUrl; if (!encodedUrl.endsWith('/')) { encodedUrl.append('/'); } encodedUrl.append(QByteArray::number(currentTitle_)); if (currentUrl.startsWith("dvd:")) { playEncodedUrl(encodedUrl, PlayingDvd); } else { playEncodedUrl(encodedUrl); } } else if (currentUrl.startsWith("vcd:")) { playEncodedUrl(currentUrl + '@' + QByteArray::number(currentTitle_)); } } void XineMediaWidget::setCurrentChapter(int currentChapter_) { if ((currentState & PlayingDvd) != 0) { if (!encodedDvdUrl.endsWith('/')) { encodedDvdUrl.append('/'); } QByteArray encodedUrl = encodedDvdUrl; encodedUrl.append(QByteArray::number(currentTitle)); encodedUrl.append('.'); encodedUrl.append(QByteArray::number(currentChapter_)); playEncodedUrl(encodedUrl, PlayingDvd); } } void XineMediaWidget::setCurrentAngle(int currentAngle_) { Q_UNUSED(currentAngle_) // not possible :-( } bool XineMediaWidget::playPreviousTitle() { if (currentTitle > 1) { setCurrentTitle(currentTitle - 1); return true; } return false; } bool XineMediaWidget::playNextTitle() { if (currentTitle < titleCount) { setCurrentTitle(currentTitle + 1); return true; } return false; } void XineMediaWidget::seek(int time) { if (isPlaying() && (time != currentTime)) { childProcess->seek(time); } } void XineMediaWidget::mouseMoveEvent(QMouseEvent *event) { QWidget::mouseMoveEvent(event); childProcess->mouseMoved(event->x(), event->y()); } void XineMediaWidget::mousePressEvent(QMouseEvent *event) { QWidget::mousePressEvent(event); if (event->button() == Qt::LeftButton) { childProcess->mousePressed(event->x(), event->y()); } } void XineMediaWidget::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); childProcess->repaint(); } void XineMediaWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); childProcess->resize(event->size().width(), event->size().height()); } QSize XineMediaWidget::sizeHint() const { return QSize(videoSize >> 16, videoSize & 0xffff); } void XineMediaWidget::initFailed(const QString &errorMessage) { if ((currentState & NotReady) == 0) { currentUrl.clear(); playEncodedUrl(QByteArray(), NotReady); KMessageBox::queuedMessageBox(this, KMessageBox::Sorry, errorMessage); // FIXME } } void XineMediaWidget::sync(unsigned int sequenceNumber_) { if ((sequenceNumber == sequenceNumber_) && isPlaying()) { currentState |= Synchronized; } } void XineMediaWidget::playbackFailed(const QString &errorMessage) { if ((currentState & Synchronized) != 0) { if ((currentState & PlayingDvd) != 0) { dirtyFlags |= PlayingDvdChanged; } currentState = 0; dirtyFlags |= (ResetState | PlaybackStopped | PlaybackChanged); stateChanged(); KMessageBox::queuedMessageBox(this, KMessageBox::Sorry, errorMessage); // FIXME } } void XineMediaWidget::playbackFinishedInternal() { if ((currentState & Synchronized) != 0) { if (currentUrl.startsWith("cdda") && (currentTitle < titleCount)) { playNextTitle(); return; } if ((currentState & PlayingDvd) != 0) { dirtyFlags |= PlayingDvdChanged; } if ((currentState & EmitPlaybackFinished) != 0) { dirtyFlags |= PlaybackFinished; } else { dirtyFlags |= PlaybackStopped; } currentState = 0; dirtyFlags |= (ResetState | PlaybackChanged); stateChanged(); } } void XineMediaWidget::updateCurrentTotalTime(int currentTime_, int totalTime_) { if ((currentState & Synchronized) != 0) { if (currentTime_ < 0) { currentTime_ = 0; } if (currentTime != currentTime_) { currentTime = currentTime_; dirtyFlags |= CurrentTimeChanged; } if (totalTime_ < currentTime) { totalTime_ = currentTime; } if (totalTime != totalTime_) { totalTime = totalTime_; dirtyFlags |= TotalTimeChanged; } stateChanged(); } } void XineMediaWidget::updateMetadata(const QString &metadata_) { if (((currentState & Synchronized) != 0) && (rawMetadata != metadata_)) { rawMetadata = metadata_; metadata.clear(); for (int i = 0; i < rawMetadata.size(); ++i) { int type = rawMetadata.at(i).unicode(); ++i; int end = i; while ((end < rawMetadata.size()) && (rawMetadata.at(end) != '\0')) { ++end; } if (i == end) { continue; } QString content = rawMetadata.mid(i, end - i); i = end; switch (type) { case XineMetadataTitle: metadata.insert(MediaWidget::Title, content); break; case XineMetadataArtist: metadata.insert(MediaWidget::Artist, content); break; case XineMetadataAlbum: metadata.insert(MediaWidget::Album, content); break; case XineMetadataTrackNumber: metadata.insert(MediaWidget::TrackNumber, content); break; default: kError() << "unknown metadata type" << type; break; } } dirtyFlags |= MetadataChanged; stateChanged(); } } void XineMediaWidget::updateSeekable(bool seekable_) { if (((currentState & Synchronized) != 0) && (seekable != seekable_)) { seekable = seekable_; dirtyFlags |= SeekableChanged; stateChanged(); } } void XineMediaWidget::updateAudioChannels(const QByteArray &audioChannels_, int currentAudioChannel_) { if ((currentState & Synchronized) != 0) { if (rawAudioChannels != audioChannels_) { rawAudioChannels = audioChannels_; audioChannels.clear(); const char *rawData = rawAudioChannels.constData(); for (int i = 0; i < rawAudioChannels.size(); ++i) { QString audioChannel = QString::fromLatin1(rawData + i); i += audioChannel.size(); if (audioChannel.isEmpty()) { audioChannel = QString::number(i + 1); } audioChannels.append(audioChannel); } dirtyFlags |= AudioChannelsChanged; } if ((currentAudioChannel_ < 0) || (currentAudioChannel_ >= audioChannels.size())) { currentAudioChannel_ = -1; } if (currentAudioChannel != currentAudioChannel_) { currentAudioChannel = currentAudioChannel_; dirtyFlags |= CurrentAudioChannelChanged; } stateChanged(); } } void XineMediaWidget::updateSubtitles(const QByteArray &subtitles_, int currentSubtitle_) { if ((currentState & Synchronized) != 0) { if (rawSubtitles != subtitles_) { rawSubtitles = subtitles_; subtitles.clear(); const char *rawData = rawSubtitles.constData(); for (int i = 0; i < rawSubtitles.size(); ++i) { QString subtitle = QString::fromLatin1(rawData + i); i += subtitle.size(); if (subtitle.isEmpty()) { subtitle = QString::number(i + 1); } subtitles.append(subtitle); } dirtyFlags |= SubtitlesChanged; } if ((currentSubtitle_ < 0) || (currentSubtitle_ >= subtitles.size())) { currentSubtitle_ = -1; } if (currentSubtitle != currentSubtitle_) { currentSubtitle = currentSubtitle_; dirtyFlags |= CurrentSubtitleChanged; } stateChanged(); } } void XineMediaWidget::updateTitles(int titleCount_, int currentTitle_) { if ((currentState & Synchronized) != 0) { if (titleCount_ < 0) { titleCount_ = 0; } if (titleCount != titleCount_) { titleCount = titleCount_; dirtyFlags |= TitleCountChanged; } if ((currentTitle_ < 0) || (currentTitle_ > titleCount)) { currentTitle_ = 0; } if (currentTitle != currentTitle_) { currentTitle = currentTitle_; dirtyFlags |= CurrentTitleChanged; } stateChanged(); } } void XineMediaWidget::updateChapters(int chapterCount_, int currentChapter_) { if ((currentState & Synchronized) != 0) { if (chapterCount_ < 0) { chapterCount_ = 0; } if (chapterCount != chapterCount_) { chapterCount = chapterCount_; dirtyFlags |= ChapterCountChanged; } if ((currentChapter_ < 0) || (currentChapter_ > chapterCount)) { currentChapter_ = 0; } if (currentChapter != currentChapter_) { currentChapter = currentChapter_; dirtyFlags |= CurrentChapterChanged; } stateChanged(); } } void XineMediaWidget::updateAngles(int angleCount_, int currentAngle_) { if ((currentState & Synchronized) != 0) { if (angleCount_ < 0) { angleCount_ = 0; } if (angleCount != angleCount_) { angleCount = angleCount_; dirtyFlags |= AngleCountChanged; } if ((currentAngle_ < 0) || (currentAngle_ > angleCount)) { currentAngle_ = 0; } if (currentAngle != currentAngle_) { currentAngle = currentAngle_; dirtyFlags |= CurrentAngleChanged; } stateChanged(); } } void XineMediaWidget::updateMouseTracking(bool mouseTrackingEnabled) { if ((currentState & Synchronized) != 0) { if (mouseTrackingEnabled) { setMouseTracking(true); } else { unsetCursor(); setMouseTracking(false); } } } void XineMediaWidget::updateMouseCursor(bool pointingMouseCursor) { if ((currentState & Synchronized) != 0) { if (pointingMouseCursor && hasMouseTracking()) { setCursor(Qt::PointingHandCursor); } else { unsetCursor(); } } } void XineMediaWidget::updateVideoSize(unsigned int videoSize_) { if (((currentState & Synchronized) != 0) && (videoSize != videoSize_)) { videoSize = videoSize_; dirtyFlags |= VideoSizeChanged; stateChanged(); } } void XineMediaWidget::playEncodedUrl(const QByteArray &encodedUrl, StateFlags stateFlags) { ++sequenceNumber; childProcess->playUrl(sequenceNumber, encodedUrl); if (!encodedUrl.isEmpty() && ((currentState & NotReady) == 0)) { stateFlags |= Playing; dirtyFlags |= (SourceChanged | ResetState); } else { stateFlags = ((currentState | stateFlags) & NotReady); dirtyFlags |= (PlaybackStopped | ResetState); } StateFlags difference = currentState ^ stateFlags; currentState = stateFlags; if ((difference & Playing) != 0) { dirtyFlags |= PlaybackChanged; } if ((difference & PlayingDvd) != 0) { dirtyFlags |= PlayingDvdChanged; } stateChanged(); } void XineMediaWidget::stateChanged() { while (dirtyFlags != 0) { int lowestDirtyFlag = dirtyFlags & (~(dirtyFlags - 1)); dirtyFlags &= ~lowestDirtyFlag; switch (lowestDirtyFlag) { case ResetState: if (currentTime != 0) { currentTime = 0; dirtyFlags |= CurrentTimeChanged; } if (totalTime != 0) { totalTime = 0; dirtyFlags |= TotalTimeChanged; } if (!metadata.isEmpty()) { rawMetadata.clear(); metadata.clear(); dirtyFlags |= MetadataChanged; } if (seekable != isPlaying()) { seekable = isPlaying(); dirtyFlags |= SeekableChanged; } if (!audioChannels.isEmpty()) { rawAudioChannels.clear(); audioChannels.clear(); dirtyFlags |= AudioChannelsChanged; } if (currentAudioChannel != -1) { currentAudioChannel = -1; dirtyFlags |= CurrentAudioChannelChanged; } if (!subtitles.isEmpty()) { rawSubtitles.clear(); subtitles.clear(); dirtyFlags |= SubtitlesChanged; } if (currentSubtitle != -1) { currentSubtitle = -1; dirtyFlags |= CurrentSubtitleChanged; } if ((currentState & PlayingDvd) == 0) { encodedDvdUrl.clear(); } if (titleCount != 0) { titleCount = 0; dirtyFlags |= TitleCountChanged; } if (currentTitle != 0) { currentTitle = 0; dirtyFlags |= CurrentTitleChanged; } if (chapterCount != 0) { chapterCount = 0; dirtyFlags |= ChapterCountChanged; } if (currentChapter != 0) { currentChapter = 0; dirtyFlags |= CurrentChapterChanged; } if (angleCount != 0) { angleCount = 0; dirtyFlags |= AngleCountChanged; } if (currentAngle != 0) { currentAngle = 0; dirtyFlags |= CurrentAngleChanged; } unsetCursor(); setMouseTracking(false); break; case SourceChanged: emit sourceChanged(); break; case PlaybackFinished: emit playbackFinished(); break; case PlaybackStopped: emit playbackStopped(); break; case PlaybackChanged: if (isPlaying()) { show(); emit playbackChanged(true); } else { hide(); parentWidget()->update(); emit playbackChanged(false); } break; case TotalTimeChanged: emit totalTimeChanged(totalTime); break; case CurrentTimeChanged: emit currentTimeChanged(currentTime); break; case MetadataChanged: emit metadataChanged(metadata); break; case SeekableChanged: emit seekableChanged(seekable); break; case AudioChannelsChanged: emit audioChannelsChanged(audioChannels, currentAudioChannel); dirtyFlags &= ~CurrentAudioChannelChanged; break; case CurrentAudioChannelChanged: emit currentAudioChannelChanged(currentAudioChannel); break; case SubtitlesChanged: emit subtitlesChanged(subtitles, currentSubtitle); dirtyFlags &= ~CurrentSubtitleChanged; break; case CurrentSubtitleChanged: emit currentSubtitleChanged(currentSubtitle); break; case PlayingDvdChanged: emit dvdPlaybackChanged((currentState & PlayingDvd) != 0); break; case TitleCountChanged: emit titlesChanged(titleCount, currentTitle); dirtyFlags &= ~CurrentTitleChanged; break; case CurrentTitleChanged: emit currentTitleChanged(currentTitle); break; case ChapterCountChanged: emit chaptersChanged(chapterCount, currentChapter); dirtyFlags &= ~CurrentChapterChanged; break; case CurrentChapterChanged: emit currentChapterChanged(currentChapter); break; case AngleCountChanged: emit anglesChanged(angleCount, currentAngle); dirtyFlags &= ~CurrentAngleChanged; break; case CurrentAngleChanged: emit currentAngleChanged(currentAngle); break; case VideoSizeChanged: updateGeometry(); emit videoSizeChanged(); break; default: kWarning() << "unknown flag" << lowestDirtyFlag; break; } } } kaffeine-1.2.2/src/backend-xine/xineapplication.cpp0000644000175000017500000006442411552636277021754 0ustar lxuserlxuser/* * xineapplication.cpp * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "xineapplication.h" #include #include #include #include #include #include #include #include "xinecommands.h" class XineParent : public XineParentMarshaller { public: XineParent(int fd, QObject *parent) : writer(fd, parent) { XineParentMarshaller::writer = &writer; } ~XineParent() { } private: XinePipeWriter writer; }; XineObject::XineObject() : engine(NULL), audioOutput(NULL), videoOutput(NULL), stream(NULL), eventQueue(NULL), widgetSize(0), overrideTitleCount(0), overrideCurrentTitle(0), dirtyFlags(NotReady), aspectRatio(XineAspectRatioAuto), videoSize(0) { reader = new XinePipeReader(3, this); parentProcess = new XineParent(4, this); positionTimer.setInterval(500); connect(&positionTimer, SIGNAL(timeout()), this, SLOT(updatePosition())); } XineObject::~XineObject() { if (eventQueue != NULL) { xine_event_dispose_queue(eventQueue); } if (stream != NULL) { xine_dispose(stream); } if (deinterlacer != NULL) { xine_post_dispose(engine, deinterlacer); } if (visualization != NULL) { xine_post_dispose(engine, visualization); } if (videoOutput != NULL) { xine_close_video_driver(engine, videoOutput); } if (audioOutput != NULL) { xine_close_audio_driver(engine, audioOutput); } if (engine != NULL) { xine_config_save(engine, QFile::encodeName( KStandardDirs::locateLocal("data", "kaffeine/xine-config"))); xine_exit(engine); } delete reader; delete parentProcess; } const char *XineObject::version() { return xine_get_version_string(); } void XineObject::readyRead() { reader->readyRead(); while (true) { int command = reader->nextCommand(); switch (command) { case -1: return; case XineCommands::Quit: kapp->quit(); dirtyFlags |= Quit; return; case XineCommands::Init: { quint64 windowId = reader->readLongLong(); if (reader->isValid()) { init(windowId); } break; } case XineCommands::Resize: { quint16 width = reader->readShort(); quint16 height = reader->readShort(); if (reader->isValid()) { widgetSize = ((width << 16) | height); } break; } case XineCommands::SetMuted: { bool muted_ = reader->readBool(); if (reader->isValid()) { muted = muted_; dirtyFlags |= SetMuted; } break; } case XineCommands::SetVolume: { quint8 volume_ = reader->readChar(); if (reader->isValid()) { volume = volume_; dirtyFlags |= SetVolume; } break; } case XineCommands::SetAspectRatio: { qint8 aspectRatio_ = reader->readChar(); if (reader->isValid()) { aspectRatio = aspectRatio_; dirtyFlags |= SetAspectRatio; } break; } case XineCommands::SetDeinterlacing: { bool deinterlacing_ = reader->readBool(); if (reader->isValid()) { deinterlacing = deinterlacing_; dirtyFlags |= SetDeinterlacing; } break; } case XineCommands::PlayUrl: { quint32 sequenceNumber_ = reader->readInt(); QByteArray encodedUrl_ = reader->readByteArray(); if (reader->isValid()) { sequenceNumber = sequenceNumber_; encodedUrl = encodedUrl_; dirtyFlags &= ~(PlayStream | SetPaused | Seek | Repaint | MouseMoved | MousePressed | SetCurrentAudioChannel | SetCurrentSubtitle | ToggleMenu); dirtyFlags |= OpenStream; } break; } case XineCommands::SetPaused: { bool paused_ = reader->readBool(); if (reader->isValid()) { paused = paused_; dirtyFlags |= SetPaused; } break; } case XineCommands::Seek: { qint32 seekTime_ = reader->readInt(); if (reader->isValid()) { seekTime = seekTime_; dirtyFlags |= Seek; } break; } case XineCommands::Repaint: dirtyFlags |= Repaint; break; case XineCommands::MouseMoved: { quint16 x = reader->readShort(); quint16 y = reader->readShort(); if (reader->isValid()) { mouseMovePosition = ((x << 16) | y); dirtyFlags |= MouseMoved; } break; } case XineCommands::MousePressed: { quint16 x = reader->readShort(); quint16 y = reader->readShort(); if (reader->isValid()) { mousePressPosition = ((x << 16) | y); dirtyFlags |= MousePressed; } break; } case XineCommands::SetCurrentAudioChannel: { qint8 currentAudioChannel_ = reader->readChar(); if (reader->isValid()) { currentAudioChannel = currentAudioChannel_; dirtyFlags |= SetCurrentAudioChannel; } break; } case XineCommands::SetCurrentSubtitle: { qint8 currentSubtitle_ = reader->readChar(); if (reader->isValid()) { currentSubtitle = currentSubtitle_; dirtyFlags |= SetCurrentSubtitle; } break; } case XineCommands::ToggleMenu: dirtyFlags |= ToggleMenu; break; default: kError() << "unknown command" << command; continue; } if (!reader->isValid()) { kError() << "wrong argument size for command" << command; } if (((dirtyFlags & (Quit | NotReady | ProcessEvent)) == 0) && (dirtyFlags != 0)) { QCoreApplication::postEvent(this, new QEvent(ReaderEvent)); dirtyFlags |= ProcessEvent; } } } void XineObject::updatePosition() { int relativePosition; int currentTime; int totalTime; if (xine_get_pos_length(stream, &relativePosition, ¤tTime, &totalTime) == 1) { parentProcess->updateCurrentTotalTime(currentTime, totalTime); } } void XineObject::init(quint64 windowId) { if (engine != NULL) { kError() << "xine engine is already initialised"; return; } engine = xine_new(); if (engine == NULL) { parentProcess->initFailed("Cannot create engine."); return; } xine_config_load(engine, QFile::encodeName(KStandardDirs::locateLocal("data", "kaffeine/xine-config"))); xine_init(engine); QVector audioDrivers; audioDrivers.append("auto"); for (const char *const *it = xine_list_audio_output_plugins(engine); *it != NULL; ++it) { audioDrivers.append(*it); } audioDrivers.append(NULL); const char *audioDriver = audioDrivers.at( xine_config_register_enum(engine, "audio.driver", 0, const_cast(audioDrivers.constData()), "audio driver", NULL, 10, &audio_driver_cb, this)); audioDrivers.clear(); QVector videoDrivers; videoDrivers.append("auto"); for (const char *const *it = xine_list_video_output_plugins(engine); *it != NULL; ++it) { videoDrivers.append(*it); } videoDrivers.append(NULL); const char *videoDriver = videoDrivers.at( xine_config_register_enum(engine, "video.driver", 0, const_cast(videoDrivers.constData()), "video driver", NULL, 10, &video_driver_cb, this)); videoDrivers.clear(); QLatin1String pixelAspectRatioString(xine_config_register_string(engine, "video.pixel_aspect_ratio", "", "override pixel aspect ratio", NULL, 10, &pixel_aspect_ratio_cb, this)); bool ok; pixelAspectRatio = QString(pixelAspectRatioString).toDouble(&ok); if (!ok || (pixelAspectRatio < 0.1) || (pixelAspectRatio > 10)) { if (qstrlen(pixelAspectRatioString.latin1()) != 0) { kWarning() << "invalid pixel aspect ratio" << pixelAspectRatioString; } pixelAspectRatio = static_cast(QX11Info::appDpiY()) / QX11Info::appDpiX(); if ((pixelAspectRatio >= 0.96) || (pixelAspectRatio <= 1.04)) { pixelAspectRatio = 1; } } audioOutput = xine_open_audio_driver(engine, audioDriver, NULL); if (audioOutput == NULL) { kWarning() << "cannot create audio output" << QLatin1String(audioDriver); audioOutput = xine_open_audio_driver(engine, NULL, NULL); if (audioOutput == NULL) { parentProcess->initFailed("Cannot create audio output."); return; } } x11_visual_t videoOutputData; memset(&videoOutputData, 0, sizeof(videoOutputData)); videoOutputData.display = QX11Info::display(); videoOutputData.screen = QX11Info::appScreen(); videoOutputData.d = windowId; videoOutputData.user_data = this; videoOutputData.dest_size_cb = &dest_size_cb; videoOutputData.frame_output_cb = &frame_output_cb; videoOutput = xine_open_video_driver(engine, videoDriver, XINE_VISUAL_TYPE_X11, &videoOutputData); if (videoOutput == NULL) { kWarning() << "cannot create video output" << QLatin1String(videoDriver); videoOutput = xine_open_video_driver(engine, NULL, XINE_VISUAL_TYPE_X11, &videoOutputData); if (videoOutput == NULL) { parentProcess->initFailed("Cannot create video output."); return; } } stream = xine_stream_new(engine, audioOutput, videoOutput); if (stream == NULL) { parentProcess->initFailed("Cannot create stream."); return; } eventQueue = xine_event_new_queue(stream); if (eventQueue == NULL) { parentProcess->initFailed("Cannot create event queue."); return; } xine_event_create_listener_thread(eventQueue, &event_listener_cb, this); dirtyFlags &= ~NotReady; visualization = NULL; // xine_post_init(engine, "goom", 0, &audioOutput, &videoOutput); if (visualization == NULL) { // kWarning() << "cannot create audio visualization plugin"; } else { xine_post_in_t *input = xine_post_input(visualization, "audio in"); if (input == NULL) { kWarning() << "cannot connect audio visualization plugin"; } else { xine_post_wire(xine_get_audio_source(stream), input); } } deinterlacer = xine_post_init(engine, "tvtime", 1, 0, &videoOutput); if (deinterlacer == NULL) { kWarning() << "cannot create deinterlace plugin"; return; } xine_post_in_t *input = xine_post_input(deinterlacer, "parameters"); if (input == NULL) { kWarning() << "cannot configure deinterlace plugin"; return; } xine_post_api_t *deinterlacerApi = static_cast(input->data); if (deinterlacerApi == NULL) { kWarning() << "cannot configure deinterlace plugin"; return; } xine_post_api_descr_t *deinterlacerParameters = deinterlacerApi->get_param_descr(); if (deinterlacerParameters == NULL) { kWarning() << "cannot configure deinterlace plugin"; return; } for (int i = 0; deinterlacerParameters->parameter[i].type != POST_PARAM_TYPE_LAST; ++i) { xine_post_api_parameter_t ¶meter = deinterlacerParameters->parameter[i]; if ((parameter.type == POST_PARAM_TYPE_INT) && (strcmp(parameter.name, "method") == 0)) { QByteArray parameterData; parameterData.resize(deinterlacerParameters->struct_size); char *data = parameterData.data(); deinterlacerApi->get_parameters(deinterlacer, data); int *method = reinterpret_cast(data + parameter.offset); for (char **value = parameter.enum_values; *value != NULL; ++value) { if (strcmp(*value, "Greedy2Frame") == 0) { *method = value - parameter.enum_values; break; } } deinterlacerApi->set_parameters(deinterlacer, data); break; } } // FIXME gapless playback? } void XineObject::customEvent(QEvent *event) { if (event->type() == XineEvent) { QMutexLocker locker(&mutex); if ((dirtyFlags & (Quit | OpenStream)) != 0) { errorMessage.clear(); xineDirtyFlags = 0; } while (xineDirtyFlags != 0) { int lowestDirtyFlag = xineDirtyFlags & (~(xineDirtyFlags - 1)); xineDirtyFlags &= ~lowestDirtyFlag; switch (lowestDirtyFlag) { case PlaybackFailed: parentProcess->playbackFailed(errorMessage); errorMessage.clear(); xineDirtyFlags = CloseStream; break; case PlaybackFinished: parentProcess->playbackFinished(); xineDirtyFlags = CloseStream; break; case CloseStream: positionTimer.stop(); xine_close(stream); break; case UpdateStreamInfo: { QString metadata; metadata.append(QChar(XineMetadataTitle)); metadata.append(QString::fromUtf8(xine_get_meta_info(stream, XINE_META_INFO_TITLE))); metadata.append(QChar('\0')); metadata.append(QChar(XineMetadataArtist)); metadata.append(QString::fromUtf8(xine_get_meta_info(stream, XINE_META_INFO_ARTIST))); metadata.append(QChar('\0')); metadata.append(QChar(XineMetadataAlbum)); metadata.append(QString::fromUtf8(xine_get_meta_info(stream, XINE_META_INFO_ALBUM))); metadata.append(QChar('\0')); metadata.append(QChar(XineMetadataTrackNumber)); metadata.append(QString::fromUtf8(xine_get_meta_info(stream, XINE_META_INFO_TRACK_NUMBER))); metadata.append(QChar('\0')); parentProcess->updateMetadata(metadata); bool seekable = (xine_get_stream_info(stream, XINE_STREAM_INFO_SEEKABLE) != 0); parentProcess->updateSeekable(seekable); QByteArray audioChannels; int audioChannelCount = xine_get_stream_info(stream, XINE_STREAM_INFO_MAX_AUDIO_CHANNEL); int currentAudioChannel = xine_get_param(stream, XINE_PARAM_AUDIO_CHANNEL_LOGICAL); for (int i = 0; i < audioChannelCount; ++i) { char langBuffer[XINE_LANG_MAX]; if (xine_get_audio_lang(stream, i, langBuffer) == 1) { audioChannels.append(langBuffer); } audioChannels.append('\0'); } parentProcess->updateAudioChannels(audioChannels, currentAudioChannel); QByteArray subtitles; int subtitleCount = xine_get_stream_info(stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL); int currentSubtitle = xine_get_param(stream, XINE_PARAM_SPU_CHANNEL); for (int i = 0; i < subtitleCount; ++i) { char langBuffer[XINE_LANG_MAX]; if (xine_get_spu_lang(stream, i, langBuffer) == 1) { subtitles.append(langBuffer); } subtitles.append('\0'); } parentProcess->updateSubtitles(subtitles, currentSubtitle); int titleCount = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_TITLE_COUNT); int currentTitle = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_TITLE_NUMBER); if ((titleCount <= 0) && (overrideTitleCount > 0)) { titleCount = overrideTitleCount; } if ((currentTitle <= 0) && (overrideCurrentTitle > 0)) { currentTitle = overrideCurrentTitle; } parentProcess->updateTitles(titleCount, currentTitle); int chapterCount = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_CHAPTER_COUNT); int currentChapter = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_CHAPTER_NUMBER); parentProcess->updateChapters(chapterCount, currentChapter); int angleCount = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_ANGLE_COUNT); int currentAngle = xine_get_stream_info(stream, XINE_STREAM_INFO_DVD_ANGLE_NUMBER); parentProcess->updateAngles(angleCount, currentAngle); break; } case UpdateMouseTracking: parentProcess->updateMouseTracking(mouseTrackingEnabled); break; case UpdateMouseCursor: parentProcess->updateMouseCursor(pointingMouseCursor); break; case UpdateVideoSize: parentProcess->updateVideoSize(videoSize); break; case ProcessXineEvent: break; default: kWarning() << "unknown flag" << lowestDirtyFlag; break; } } return; } while (dirtyFlags != 0) { QCoreApplication::processEvents(); int lowestDirtyFlag = dirtyFlags & (~(dirtyFlags - 1)); dirtyFlags &= ~lowestDirtyFlag; switch (lowestDirtyFlag) { case Quit: return; case SetMuted: xine_set_param(stream, XINE_PARAM_AUDIO_AMP_MUTE, muted); break; case SetVolume: xine_set_param(stream, XINE_PARAM_AUDIO_AMP_LEVEL, volume); break; case SetAspectRatio: { int xineAspectRatio; switch (aspectRatio) { case XineAspectRatioAuto: xineAspectRatio = XINE_VO_ASPECT_AUTO; break; case XineAspectRatio4_3: xineAspectRatio = XINE_VO_ASPECT_4_3; break; case XineAspectRatio16_9: xineAspectRatio = XINE_VO_ASPECT_ANAMORPHIC; break; case XineAspectRatioWidget: // this is solved via xine frame callbacks xineAspectRatio = XINE_VO_ASPECT_SQUARE; break; default: kError() << "unknown aspect ratio" << aspectRatio; xineAspectRatio = XINE_VO_ASPECT_AUTO; break; } xine_set_param(stream, XINE_PARAM_VO_ASPECT_RATIO, xineAspectRatio); break; } case SetDeinterlacing: if (deinterlacing && (deinterlacer != NULL)) { xine_post_in_t *input = xine_post_input(deinterlacer, "video"); if (input != NULL) { xine_post_wire(xine_get_video_source(stream), input); } } else { xine_post_wire_video_port(xine_get_video_source(stream), videoOutput); } break; case OpenStream: parentProcess->sync(sequenceNumber); overrideTitleCount = 0; overrideCurrentTitle = 0; if (encodedUrl.startsWith("cdda:")) { xine_get_autoplay_input_plugin_ids(engine); xine_get_autoplay_mrls(engine, "CD", &overrideTitleCount); overrideCurrentTitle = encodedUrl.mid(encodedUrl.lastIndexOf('/') + 1).toInt(); if (overrideCurrentTitle < 1) { overrideCurrentTitle = 1; } } if (!encodedUrl.isEmpty()) { if (xine_open(stream, encodedUrl.constData()) == 1) { mutex.lock(); errorMessage.clear(); xineDirtyFlags &= ~(PlaybackFailed | PlaybackFinished); mutex.unlock(); dirtyFlags |= PlayStream; } else { int errorCode = xine_get_error(stream); // xine_close is called when dealing with PlaybackFailed mutex.lock(); if (errorMessage.isEmpty()) { errorMessage = xineErrorString(errorCode); } xineDirtyFlags |= PlaybackFailed; postXineEvent(); mutex.unlock(); } encodedUrl.clear(); } else { // xine_close is called when dealing with PlaybackFinished mutex.lock(); xineDirtyFlags |= PlaybackFinished; postXineEvent(); mutex.unlock(); } break; case PlayStream: if (xine_play(stream, 0, 0) == 1) { mutex.lock(); xineDirtyFlags |= UpdateStreamInfo; postXineEvent(); mutex.unlock(); positionTimer.start(); updatePosition(); } else { int errorCode = xine_get_error(stream); // xine_close is called when dealing with PlaybackFailed mutex.lock(); if (errorMessage.isEmpty()) { errorMessage = xineErrorString(errorCode); } xineDirtyFlags |= PlaybackFailed; postXineEvent(); mutex.unlock(); } break; case SetPaused: if (paused) { xine_set_param(stream, XINE_PARAM_SPEED, XINE_SPEED_PAUSE); } else { xine_set_param(stream, XINE_PARAM_SPEED, XINE_SPEED_NORMAL); } break; case Seek: xine_play(stream, 0, seekTime); break; case Repaint: { XEvent event; memset(&event, 0, sizeof(event)); event.xexpose.type = Expose; event.xexpose.width = (widgetSize >> 16); event.xexpose.height = (widgetSize & 0xffff); xine_port_send_gui_data(videoOutput, XINE_GUI_SEND_EXPOSE_EVENT, &event); break; } case MouseMoved: { x11_rectangle_t rectangle; memset(&rectangle, 0, sizeof(rectangle)); rectangle.x = (mouseMovePosition >> 16); rectangle.y = (mouseMovePosition & 0xffff); xine_port_send_gui_data(videoOutput, XINE_GUI_SEND_TRANSLATE_GUI_TO_VIDEO, &rectangle); xine_input_data_t input; memset(&input, 0, sizeof(input)); input.event.type = XINE_EVENT_INPUT_MOUSE_MOVE; input.event.data = &input; input.event.data_length = sizeof(input); input.x = rectangle.x; input.y = rectangle.y; xine_event_send(stream, &input.event); break; } case MousePressed: { x11_rectangle_t rectangle; memset(&rectangle, 0, sizeof(rectangle)); rectangle.x = (mousePressPosition >> 16); rectangle.y = (mousePressPosition & 0xffff); xine_port_send_gui_data(videoOutput, XINE_GUI_SEND_TRANSLATE_GUI_TO_VIDEO, &rectangle); xine_input_data_t input; memset(&input, 0, sizeof(input)); input.event.type = XINE_EVENT_INPUT_MOUSE_BUTTON; input.event.data = &input; input.event.data_length = sizeof(input); input.button = 1; input.x = rectangle.x; input.y = rectangle.y; xine_event_send(stream, &input.event); break; } case SetCurrentAudioChannel: xine_set_param(stream, XINE_PARAM_AUDIO_CHANNEL_LOGICAL, currentAudioChannel); break; case SetCurrentSubtitle: xine_set_param(stream, XINE_PARAM_SPU_CHANNEL, currentSubtitle); break; case ToggleMenu: { xine_event_t event; memset(&event, 0, sizeof(event)); event.type = XINE_EVENT_INPUT_MENU1; xine_event_send(stream, &event); break; } case ProcessEvent: break; default: kWarning() << "unknown flag" << lowestDirtyFlag; break; } } } QString XineObject::xineErrorString(int errorCode) const { switch (errorCode) { case XINE_ERROR_NO_INPUT_PLUGIN: return QString("Cannot find input plugin for MRL \"") + encodedUrl + "\"."; case XINE_ERROR_INPUT_FAILED: return QString("Cannot open input plugin for MRL \"") + encodedUrl + "\"."; case XINE_ERROR_NO_DEMUX_PLUGIN: return QString("Cannot find demux plugin for MRL \"") + encodedUrl + "\"."; case XINE_ERROR_DEMUX_FAILED: return QString("Cannot open demux plugin for MRL \"") + encodedUrl + "\"."; case XINE_ERROR_MALFORMED_MRL: return QString("Cannot parse MRL \"") + encodedUrl + "\"."; case XINE_ERROR_NONE: default: return QString("Cannot open MRL \"") + encodedUrl + "\"."; } } void XineObject::postXineEvent() { if ((xineDirtyFlags & ProcessXineEvent) == 0) { QCoreApplication::postEvent(this, new QEvent(XineEvent)); xineDirtyFlags |= ProcessXineEvent; } } void XineObject::audio_driver_cb(void *user_data, xine_cfg_entry_t *entry) { Q_UNUSED(user_data) Q_UNUSED(entry) } void XineObject::video_driver_cb(void *user_data, xine_cfg_entry_t *entry) { Q_UNUSED(user_data) Q_UNUSED(entry) } void XineObject::pixel_aspect_ratio_cb(void *user_data, xine_cfg_entry_t *entry) { Q_UNUSED(user_data) Q_UNUSED(entry) } void XineObject::dest_size_cb(void *user_data, int video_width, int video_height, double video_pixel_aspect, int *dest_width, int *dest_height, double *dest_pixel_aspect) { XineObject *instance = static_cast(user_data); int widgetSize = instance->widgetSize; *dest_width = (widgetSize >> 16); *dest_height = (widgetSize & 0xffff); if (instance->aspectRatio != XineAspectRatioWidget) { *dest_pixel_aspect = instance->pixelAspectRatio; } else { *dest_pixel_aspect = video_pixel_aspect * video_width * (widgetSize & 0xffff) / (video_height * (widgetSize >> 16)); } unsigned int videoSize = ((video_width << 16) | video_height); if (instance->videoSize != videoSize) { QMutexLocker locker(&instance->mutex); instance->videoSize = videoSize; instance->xineDirtyFlags |= UpdateVideoSize; instance->postXineEvent(); } } void XineObject::frame_output_cb(void *user_data, int video_width, int video_height, double video_pixel_aspect, int *dest_x, int *dest_y, int *dest_width, int *dest_height, double *dest_pixel_aspect, int *win_x, int *win_y) { XineObject *instance = static_cast(user_data); *dest_x = 0; *dest_y = 0; int widgetSize = instance->widgetSize; *dest_width = (widgetSize >> 16); *dest_height = (widgetSize & 0xffff); *win_x = 0; *win_y = 0; if (instance->aspectRatio != XineAspectRatioWidget) { *dest_pixel_aspect = instance->pixelAspectRatio; } else { *dest_pixel_aspect = video_pixel_aspect * video_width * (widgetSize & 0xffff) / (video_height * (widgetSize >> 16)); } unsigned int videoSize = ((video_width << 16) | video_height); if (instance->videoSize != videoSize) { QMutexLocker locker(&instance->mutex); instance->videoSize = videoSize; instance->xineDirtyFlags |= UpdateVideoSize; instance->postXineEvent(); } } void XineObject::event_listener_cb(void *user_data, const xine_event_t *event) { XineObject *instance = static_cast(user_data); switch (event->type) { case XINE_EVENT_UI_PLAYBACK_FINISHED: { QMutexLocker locker(&instance->mutex); instance->xineDirtyFlags |= PlaybackFinished; instance->postXineEvent(); break; } case XINE_EVENT_UI_CHANNELS_CHANGED: { QMutexLocker locker(&instance->mutex); instance->xineDirtyFlags |= UpdateStreamInfo; instance->postXineEvent(); break; } case XINE_EVENT_UI_MESSAGE: { QMutexLocker locker(&instance->mutex); const xine_ui_message_data_t *messageData = static_cast(event->data); if (messageData != NULL) { const char *data = messageData->messages; int size = 0; while (data[size + 1] != '\0') { ++size; size += qstrlen(data + size); } instance->errorMessage = QString::fromLocal8Bit(data, size); instance->errorMessage.replace('\0', '\n'); } else { instance->errorMessage.clear(); } instance->xineDirtyFlags |= PlaybackFailed; instance->postXineEvent(); break; } case XINE_EVENT_UI_NUM_BUTTONS: { QMutexLocker locker(&instance->mutex); const xine_ui_data_t *uiData = static_cast(event->data); if (uiData != NULL) { instance->mouseTrackingEnabled = (uiData->num_buttons != 0); } else { instance->mouseTrackingEnabled = false; } instance->xineDirtyFlags |= UpdateMouseTracking; instance->postXineEvent(); break; } case XINE_EVENT_SPU_BUTTON: { QMutexLocker locker(&instance->mutex); const xine_spu_button_t *spu_event = static_cast(event->data); if (spu_event != NULL) { instance->pointingMouseCursor = (spu_event->direction == 1); } else { instance->pointingMouseCursor = false; } instance->xineDirtyFlags |= UpdateMouseCursor; instance->postXineEvent(); break; } } } int main(int argc, char *argv[]) { XInitThreads(); bool ok = false; if ((argc == 2) && (strcmp(argv[1], "fU4eT3iN") == 0)) { ok = true; argc = 1; } KAboutData aboutData("kaffeine-xbu", "kaffeine", ki18n("Kaffeine"), QByteArray("1.2.2 ").append(XineObject::version()), ki18nc("program description", "Internal utility for Kaffeine."), KAboutData::License_GPL_V2, ki18n("(C) 2007-2010 The Kaffeine Authors"), KLocalizedString(), "http://kaffeine.kde.org"); aboutData.addAuthor(ki18n("Christoph Pfister"), ki18n("Maintainer"), "christophpfister@gmail.com"); KCmdLineArgs::init(argc, argv, &aboutData); KApplication application; if (!ok) { return 0; } XineObject xineObject; return application.exec(); } kaffeine-1.2.2/src/backend-xine/xinecommands.h0000644000175000017500000002154411552636277020713 0ustar lxuserlxuser/* * xinecommands.h * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef XINECOMMANDS_H #define XINECOMMANDS_H #include namespace XineCommands { enum CommandToChild { Quit = 0, Init = 1, Resize = 2, SetMuted = 3, SetVolume = 4, SetAspectRatio = 5, SetDeinterlacing = 6, PlayUrl = 7, SetPaused = 8, Seek = 9, Repaint = 10, MouseMoved = 11, MousePressed = 12, SetCurrentAudioChannel = 13, SetCurrentSubtitle = 14, ToggleMenu = 15 }; enum CommandFromChild { InitFailed = 0, Sync = 1, PlaybackFailed = 2, PlaybackFinished = 3, UpdateCurrentTotalTime = 4, UpdateMetadata = 5, UpdateSeekable = 6, UpdateAudioChannels = 7, UpdateSubtitles = 8, UpdateTitles = 9, UpdateChapters = 10, UpdateAngles = 11, UpdateMouseTracking = 12, UpdateMouseCursor = 13, UpdateVideoSize = 14 }; } enum XineAspectRatio { XineAspectRatioAuto = 0, XineAspectRatio4_3 = 1, XineAspectRatio16_9 = 2, XineAspectRatioWidget = 3 }; enum XineMetadataType { XineMetadataTitle = 0, XineMetadataArtist = 1, XineMetadataAlbum = 2, XineMetadataTrackNumber = 3 }; class XinePipeReader { public: XinePipeReader(int fd_, QObject *parent); ~XinePipeReader(); void readyRead(); int nextCommand(); bool isValid() const; bool readBool(); qint8 readChar(); qint16 readShort(); qint32 readInt(); qint64 readLongLong(); QByteArray readByteArray(); QString readString(); private: int fd; QSocketNotifier notifier; QByteArray buffer; int bufferPosition; int bufferSize; const char *currentData; int currentSize; }; class XinePipeWriterBase { friend class XineChildMarshaller; friend class XineParentMarshaller; public: XinePipeWriterBase() { } virtual ~XinePipeWriterBase() { } private: virtual void write(qint8 command, const char *firstArg = NULL, unsigned int firstArgSize = 0, const char *secondArg = NULL, unsigned int secondArgSize = 0); }; class XinePipeWriter : public QObject, public XinePipeWriterBase { Q_OBJECT public: XinePipeWriter(int fd_, QObject *parent); ~XinePipeWriter(); private slots: void readyWrite(); private: void write(qint8 command, const char *firstArg, unsigned int firstArgSize, const char *secondArg, unsigned int secondArgSize); bool flush(); int fd; QSocketNotifier notifier; QByteArray buffer; int bufferPosition; }; class XineChildMarshaller { public: XineChildMarshaller() : writer(NULL) { } ~XineChildMarshaller() { } void quit() { writer->write(XineCommands::Quit); } void init(quint64 windowId) { writer->write(XineCommands::Init, reinterpret_cast(&windowId), sizeof(windowId)); } void resize(quint16 width, quint16 height) { writer->write(XineCommands::Resize, reinterpret_cast(&width), sizeof(width), reinterpret_cast(&height), sizeof(height)); } void setMuted(bool muted) { writer->write(XineCommands::SetMuted, reinterpret_cast(&muted), sizeof(muted)); } void setVolume(quint8 volume) { writer->write(XineCommands::SetVolume, reinterpret_cast(&volume), sizeof(volume)); } void setAspectRatio(qint8 aspectRatio) { writer->write(XineCommands::SetAspectRatio, reinterpret_cast(&aspectRatio), sizeof(aspectRatio)); } void setDeinterlacing(bool deinterlacing) { writer->write(XineCommands::SetDeinterlacing, reinterpret_cast(&deinterlacing), sizeof(deinterlacing)); } void playUrl(quint32 sequenceNumber, const QByteArray &encodedUrl) { writer->write(XineCommands::PlayUrl, reinterpret_cast(&sequenceNumber), sizeof(sequenceNumber), encodedUrl.constData(), encodedUrl.size()); } void setPaused(bool paused) { writer->write(XineCommands::SetPaused, reinterpret_cast(&paused), sizeof(paused)); } void seek(qint32 time) { writer->write(XineCommands::Seek, reinterpret_cast(&time), sizeof(time)); } void repaint() { writer->write(XineCommands::Repaint); } void mouseMoved(quint16 x, quint16 y) { writer->write(XineCommands::MouseMoved, reinterpret_cast(&x), sizeof(x), reinterpret_cast(&y), sizeof(y)); } void mousePressed(quint16 x, quint16 y) { writer->write(XineCommands::MousePressed, reinterpret_cast(&x), sizeof(x), reinterpret_cast(&y), sizeof(y)); } void setCurrentAudioChannel(qint8 currentAudioChannel) { writer->write(XineCommands::SetCurrentAudioChannel, reinterpret_cast(¤tAudioChannel), sizeof(currentAudioChannel)); } void setCurrentSubtitle(qint8 currentSubtitle) { writer->write(XineCommands::SetCurrentSubtitle, reinterpret_cast(¤tSubtitle), sizeof(currentSubtitle)); } void toggleMenu() { writer->write(XineCommands::ToggleMenu); } XinePipeWriterBase *writer; }; class XineParentMarshaller { public: XineParentMarshaller() : writer(NULL) { } ~XineParentMarshaller() { } void initFailed(const QString &errorMessage) { writer->write(XineCommands::InitFailed, reinterpret_cast(errorMessage.constData()), static_cast(errorMessage.size()) * sizeof(QChar)); } void sync(quint32 sequenceNumber) { writer->write(XineCommands::Sync, reinterpret_cast(&sequenceNumber), sizeof(sequenceNumber)); } void playbackFailed(const QString &errorMessage) { writer->write(XineCommands::PlaybackFailed, reinterpret_cast(errorMessage.constData()), static_cast(errorMessage.size()) * sizeof(QChar)); } void playbackFinished() { writer->write(XineCommands::PlaybackFinished); } void updateCurrentTotalTime(qint32 currentTime, qint32 totalTime) { writer->write(XineCommands::UpdateCurrentTotalTime, reinterpret_cast(¤tTime), sizeof(currentTime), reinterpret_cast(&totalTime), sizeof(totalTime)); } void updateMetadata(const QString &metadata) { writer->write(XineCommands::UpdateMetadata, reinterpret_cast(metadata.constData()), static_cast(metadata.size()) * sizeof(QChar)); } void updateSeekable(bool seekable) { writer->write(XineCommands::UpdateSeekable, reinterpret_cast(&seekable), sizeof(seekable)); } void updateAudioChannels(const QByteArray &audioChannels, qint8 currentAudioChannel) { writer->write(XineCommands::UpdateAudioChannels, reinterpret_cast(¤tAudioChannel), sizeof(currentAudioChannel), audioChannels.constData(), audioChannels.size()); } void updateSubtitles(const QByteArray &subtitles, qint8 currentSubtitle) { writer->write(XineCommands::UpdateSubtitles, reinterpret_cast(¤tSubtitle), sizeof(currentSubtitle), subtitles.constData(), subtitles.size()); } void updateTitles(qint8 titleCount, qint8 currentTitle) { writer->write(XineCommands::UpdateTitles, reinterpret_cast(&titleCount), sizeof(titleCount), reinterpret_cast(¤tTitle), sizeof(currentTitle)); } void updateChapters(qint8 chapterCount, qint8 currentChapter) { writer->write(XineCommands::UpdateChapters, reinterpret_cast(&chapterCount), sizeof(chapterCount), reinterpret_cast(¤tChapter), sizeof(currentChapter)); } void updateAngles(qint8 angleCount, qint8 currentAngle) { writer->write(XineCommands::UpdateAngles, reinterpret_cast(&angleCount), sizeof(angleCount), reinterpret_cast(¤tAngle), sizeof(currentAngle)); } void updateMouseTracking(bool mouseTrackingEnabled) { writer->write(XineCommands::UpdateMouseTracking, reinterpret_cast(&mouseTrackingEnabled), sizeof(mouseTrackingEnabled)); } void updateMouseCursor(bool pointingMouseCursor) { writer->write(XineCommands::UpdateMouseCursor, reinterpret_cast(&pointingMouseCursor), sizeof(pointingMouseCursor)); } void updateVideoSize(quint32 videoSize) { writer->write(XineCommands::UpdateVideoSize, reinterpret_cast(&videoSize), sizeof(videoSize)); } XinePipeWriterBase *writer; }; #endif /* XINECOMMANDS_H */ kaffeine-1.2.2/src/backend-xine/xinemediawidget_p.h0000644000175000017500000000260511552636277021711 0ustar lxuserlxuser/* * xinemediawidget_p.h * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef XINEMEDIAWIDGET_P_H #define XINEMEDIAWIDGET_P_H #include #include "xinecommands.h" class XineMediaWidget; class XineProcess : public QProcess { Q_OBJECT public: explicit XineProcess(XineMediaWidget *parent_); ~XineProcess(); XineChildMarshaller *getChildProcess() { return &childProcess; } private slots: void readyRead(); private: void setupChildProcess(); XineMediaWidget *parent; int pipeToChild[2]; int pipeFromChild[2]; XinePipeReader *reader; XinePipeWriterBase *writer; XineChildMarshaller childProcess; }; #endif /* XINEMEDIAWIDGET_P_H */ kaffeine-1.2.2/src/backend-xine/xineapplication.h0000644000175000017500000000746511552636277021423 0ustar lxuserlxuser/* * xineapplication.h * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef XINEAPPLICATION_H #define XINEAPPLICATION_H #include #include #include #include class XineParent; class XinePipeReader; class XineObject : public QObject { Q_OBJECT public: XineObject(); ~XineObject(); static const char *version(); private slots: void readyRead(); void updatePosition(); private: enum DirtyFlag { Quit = (1 << 0), NotReady = (1 << 1), SetMuted = (1 << 2), SetVolume = (1 << 3), SetAspectRatio = (1 << 4), SetDeinterlacing = (1 << 5), OpenStream = (1 << 6), PlayStream = (1 << 7), SetPaused = (1 << 8), Seek = (1 << 9), Repaint = (1 << 10), MouseMoved = (1 << 11), MousePressed = (1 << 12), SetCurrentAudioChannel = (1 << 13), SetCurrentSubtitle = (1 << 14), ToggleMenu = (1 << 15), ProcessEvent = (1 << 30) }; Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag) enum XineDirtyFlag { PlaybackFailed = (1 << 0), PlaybackFinished = (1 << 1), CloseStream = (1 << 2), UpdateStreamInfo = (1 << 3), UpdateMouseTracking = (1 << 4), UpdateMouseCursor = (1 << 5), UpdateVideoSize = (1 << 6), ProcessXineEvent = (1 << 30) }; Q_DECLARE_FLAGS(XineDirtyFlags, XineDirtyFlag) static const QEvent::Type ReaderEvent = static_cast(QEvent::User + 1); static const QEvent::Type XineEvent = static_cast(QEvent::User + 2); void init(quint64 windowId); void customEvent(QEvent *event); QString xineErrorString(int errorCode) const; void postXineEvent(); static void audio_driver_cb(void *user_data, xine_cfg_entry_t *entry); static void video_driver_cb(void *user_data, xine_cfg_entry_t *entry); static void pixel_aspect_ratio_cb(void *user_data, xine_cfg_entry_t *entry); static void dest_size_cb(void *user_data, int video_width, int video_height, double video_pixel_aspect, int *dest_width, int *dest_height, double *dest_pixel_aspect); static void frame_output_cb(void *user_data, int video_width, int video_height, double video_pixel_aspect, int *dest_x, int *dest_y, int *dest_width, int *dest_height, double *dest_pixel_aspect, int *win_x, int *win_y); static void event_listener_cb(void *user_data, const xine_event_t *event); XinePipeReader *reader; XineParent *parentProcess; xine_t *engine; xine_audio_port_t *audioOutput; xine_video_port_t *videoOutput; xine_stream_t *stream; xine_event_queue_t *eventQueue; xine_post_t *visualization; xine_post_t *deinterlacer; double pixelAspectRatio; unsigned int widgetSize; QTimer positionTimer; int overrideTitleCount; int overrideCurrentTitle; DirtyFlags dirtyFlags; bool muted; bool deinterlacing; bool paused; int aspectRatio; int currentAudioChannel; int currentSubtitle; int seekTime; int volume; unsigned int mouseMovePosition; unsigned int mousePressPosition; unsigned int sequenceNumber; QByteArray encodedUrl; QMutex mutex; XineDirtyFlags xineDirtyFlags; bool mouseTrackingEnabled; bool pointingMouseCursor; unsigned int videoSize; QString errorMessage; }; #endif /* XINEAPPLICATION_H */ kaffeine-1.2.2/src/dbusobjects.h0000644000175000017500000001066511552636277016207 0ustar lxuserlxuser/* * dbusobjects.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DBUSOBJECTS_H #define DBUSOBJECTS_H #include #include class DvbTab; class MainWindow; class MediaWidget; class PlaylistTab; struct MprisStatusStruct; struct MprisVersionStruct; struct TelevisionScheduleEntryStruct; class MprisRootObject : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.MediaPlayer") public: explicit MprisRootObject(QObject *parent); ~MprisRootObject(); public slots: QString Identity(); void Quit(); MprisVersionStruct MprisVersion(); }; class MprisPlayerObject : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.MediaPlayer") public: MprisPlayerObject(MainWindow *mainWindow_, MediaWidget *mediaWidget_, PlaylistTab *playlistTab_, QObject *parent); ~MprisPlayerObject(); public slots: void Next(); void Prev(); void Pause(); void Stop(); void Play(); void Repeat(bool repeat); MprisStatusStruct GetStatus(); QVariantMap GetMetadata(); int GetCaps(); void VolumeSet(int volume); int VolumeGet(); void PositionSet(int position); int PositionGet(); // this functions are not part of the MPRIS specs void IncreaseVolume(); void DecreaseVolume(); void ToggleMuted(); void ToggleFullScreen(); void ShortSkipBackward(); void ShortSkipForward(); void LongSkipBackward(); void LongSkipForward(); /* // FIXME candidates void PlayAudioCd(); void PlayVideoCd(); void PlayDvd(); void ChangeAudioChannel(int index); void ChangeSubtitle(int index); void TimeButtonClicked(); void AspectRatioAuto(); void AspectRatio4_3(); void AspectRatio16_9(); void AspectRatioWidget(); */ signals: void TrackChange(const QVariantMap &metadata); // FIXME not emitted yet void StatusChange(const MprisStatusStruct &status); // FIXME not emitted yet void CapsChange(int capabilities); // FIXME not emitted yet private: MainWindow *mainWindow; MediaWidget *mediaWidget; PlaylistTab *playlistTab; }; class MprisTrackListObject : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.MediaPlayer") public: MprisTrackListObject(PlaylistTab *playlistTab_, QObject *parent); ~MprisTrackListObject(); public slots: QVariantMap GetMetadata(int index); int GetCurrentTrack(); int GetLength(); int AddTrack(const QString &url, bool playImmediately); void DelTrack(int index); void SetLoop(bool loop); void SetRandom(bool random); signals: void TrackListChange(int size); // FIXME not emitted yet private: PlaylistTab *playlistTab; }; #if HAVE_DVB == 1 class DBusTelevisionObject : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.MediaPlayer") public: DBusTelevisionObject(DvbTab *dvbTab_, QObject *parent); ~DBusTelevisionObject(); public slots: void DigitPressed(int digit); void PlayChannel(const QString &nameOrNumber); void PlayLastChannel(); void ToggleInstantRecord(); void ToggleOsd(); QList ListProgramSchedule(); quint32 ScheduleProgram(const QString &name, const QString &channel, const QString &begin, const QString &duration, int repeat); void RemoveProgram(quint32 key); private: DvbTab *dvbTab; }; #endif /* HAVE_DVB == 1 */ struct MprisStatusStruct { int state; int random; int repeatTrack; int repeatPlaylist; }; Q_DECLARE_METATYPE(MprisStatusStruct) struct MprisVersionStruct { quint16 major; quint16 minor; }; Q_DECLARE_METATYPE(MprisVersionStruct) struct TelevisionScheduleEntryStruct { quint32 key; QString name; QString channel; QString begin; QString duration; int repeat; bool isRunning; }; Q_DECLARE_METATYPE(TelevisionScheduleEntryStruct) Q_DECLARE_METATYPE(QList) #endif /* DBUSOBJECTS_H */ kaffeine-1.2.2/src/sqlinterface.cpp0000644000175000017500000001350511552636277016707 0ustar lxuserlxuser/* * sqlinterface.cpp * * Copyright (C) 2009-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "sqlinterface.h" #include #include #include #include "sqlhelper.h" SqlInterface::SqlInterface() : createTable(false), hasPendingStatements(false), sqlColumnCount(0) { sqlHelper = SqlHelper::getInstance(); } SqlInterface::~SqlInterface() { if (hasPendingStatements) { kError() << "pending statements at destruction"; /* data isn't valid anymore */ pendingStatements.clear(); createTable = false; /* make sure we don't get called after destruction */ sqlHelper->collectSubmissions(); } } void SqlInterface::sqlFlush() { if (hasPendingStatements) { sqlHelper->collectSubmissions(); } } void SqlInterface::sqlInit(const QString &tableName, const QStringList &columnNames) { QString existsStatement = "SELECT name FROM sqlite_master WHERE name='" + tableName + "' AND type = 'table'"; createStatement = "CREATE TABLE " + tableName + " (Id INTEGER PRIMARY KEY, "; QString selectStatement = "SELECT Id, "; insertStatement = "INSERT INTO " + tableName + " (Id, "; updateStatement = "UPDATE " + tableName + " SET "; deleteStatement = "DELETE FROM " + tableName + " WHERE Id = ?"; sqlColumnCount = columnNames.size(); for (int i = 0; i < sqlColumnCount; ++i) { if (i > 0) { createStatement.append(", "); selectStatement.append(", "); insertStatement.append(", "); updateStatement.append(" = ?, "); } const QString &columnName = columnNames.at(i); createStatement.append(columnName); selectStatement.append(columnName); insertStatement.append(columnName); updateStatement.append(columnName); } createStatement.append(')'); selectStatement.append(" FROM "); selectStatement.append(tableName); insertStatement.append(") VALUES (?"); updateStatement.append(" = ? WHERE Id = ?"); for (int i = 0; i < sqlColumnCount; ++i) { insertStatement.append(", ?"); } insertStatement.append(')'); if (!sqlHelper->exec(existsStatement).next()) { createTable = true; requestSubmission(); } else { // queries can only be prepared if the table exists insertQuery = sqlHelper->prepare(insertStatement); updateQuery = sqlHelper->prepare(updateStatement); deleteQuery = sqlHelper->prepare(deleteStatement); for (QSqlQuery query = sqlHelper->exec(selectStatement); query.next();) { qint64 fullKey = query.value(0).toLongLong(); SqlKey sqlKey(fullKey); if (!sqlKey.isSqlKeyValid() || (sqlKey.sqlKey != fullKey)) { kWarning() << "invalid key" << fullKey; continue; } if (!insertFromSqlQuery(sqlKey, query, 1)) { pendingStatements.insert(sqlKey, Remove); requestSubmission(); } } } } void SqlInterface::sqlInsert(SqlKey key) { switch (pendingStatements.value(key, Nothing)) { case Nothing: pendingStatements.insert(key, Insert); requestSubmission(); break; case Remove: pendingStatements.insert(key, RemoveAndInsert); requestSubmission(); break; case RemoveAndInsert: case Insert: case Update: kError() << "invalid pending statement" << pendingStatements.value(key, Nothing); break; } } void SqlInterface::sqlUpdate(SqlKey key) { switch (pendingStatements.value(key, Nothing)) { case Nothing: pendingStatements.insert(key, Update); requestSubmission(); break; case RemoveAndInsert: case Insert: case Update: break; case Remove: kError() << "invalid pending statement" << pendingStatements.value(key, Nothing); break; } } void SqlInterface::sqlRemove(SqlKey key) { switch (pendingStatements.value(key, Nothing)) { case Nothing: case RemoveAndInsert: case Update: pendingStatements.insert(key, Remove); requestSubmission(); break; case Insert: pendingStatements.remove(key); break; case Remove: kError() << "invalid pending statement" << pendingStatements.value(key, Nothing); break; } } void SqlInterface::requestSubmission() { if (!hasPendingStatements) { hasPendingStatements = true; sqlHelper->requestSubmission(this); } } void SqlInterface::sqlSubmit() { if (createTable) { createTable = false; sqlHelper->exec(createStatement); // queries can only be prepared if the table exists insertQuery = sqlHelper->prepare(insertStatement); updateQuery = sqlHelper->prepare(updateStatement); deleteQuery = sqlHelper->prepare(deleteStatement); } for (QMap::ConstIterator it = pendingStatements.constBegin(); it != pendingStatements.constEnd(); ++it) { switch (it.value()) { case Nothing: kError() << "invalid pending statement" << it.value(); break; case RemoveAndInsert: deleteQuery.bindValue(0, it.key().sqlKey); sqlHelper->exec(deleteQuery); // fall through case Insert: bindToSqlQuery(it.key(), insertQuery, 1); insertQuery.bindValue(0, it.key().sqlKey); sqlHelper->exec(insertQuery); break; case Update: bindToSqlQuery(it.key(), updateQuery, 0); updateQuery.bindValue(sqlColumnCount, it.key().sqlKey); sqlHelper->exec(updateQuery); break; case Remove: deleteQuery.bindValue(0, it.key().sqlKey); sqlHelper->exec(deleteQuery); break; } } pendingStatements.clear(); hasPendingStatements = false; } kaffeine-1.2.2/src/datetimeedit.h0000644000175000017500000000217111552636277016333 0ustar lxuserlxuser/* * datetimeedit.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DATETIMEEDIT_H #define DATETIMEEDIT_H #include class DateTimeEdit : public QDateTimeEdit { public: explicit DateTimeEdit(QWidget *parent); ~DateTimeEdit(); }; class DurationEdit : public QTimeEdit { public: explicit DurationEdit(QWidget *parent); ~DurationEdit(); }; #endif /* DATETIMEEDIT_H */ kaffeine-1.2.2/src/tablemodel.h0000644000175000017500000001340411552636277016002 0ustar lxuserlxuser/* * tablemodel.h * * Copyright (C) 2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef TABLEMODEL_H #define TABLEMODEL_H #include template class TableModel : public QAbstractTableModel { typedef typename T::ItemType ItemType; typedef typename T::LessThanType LessThanType; typedef typename LessThanType::SortOrder SortOrder; public: explicit TableModel(QObject *parent) : QAbstractTableModel(parent), updatingRow(-1) { } ~TableModel() { } QModelIndex find(const ItemType &item) const { if (item.isValid()) { int row = binaryFind(item); if (row < items.size()) { return index(row, 0); } } return QModelIndex(); } const ItemType &value(int row) const { if ((row >= 0) && (row < items.size())) { return items.at(row); } return sharedNull; } const ItemType &value(const QModelIndex &index) const { if ((index.row() >= 0) && (index.row() < items.size())) { return items.at(index.row()); } return sharedNull; } int columnCount(const QModelIndex &parent) const { if (!parent.isValid()) { return helper.columnCount(); } return 0; } int rowCount(const QModelIndex &parent) const { if (!parent.isValid()) { return items.size(); } return 0; } protected: template void reset(const U &container) { beginLayoutChange(); items.clear(); for (typename U::ConstIterator it = container.constBegin(); it != container.constEnd(); ++it) { const ItemType &item = *it; if (helper.filterAcceptsItem(item)) { items.append(item); } } qSort(items.begin(), items.end(), lessThan); endLayoutChange(); } template void resetFromKeys(const U &container) { beginLayoutChange(); items.clear(); for (typename U::ConstIterator it = container.constBegin(); it != container.constEnd(); ++it) { const ItemType &item = it.key(); if (helper.filterAcceptsItem(item)) { items.append(item); } } qSort(items.begin(), items.end(), lessThan); endLayoutChange(); } void insert(const ItemType &item) { if (item.isValid() && helper.filterAcceptsItem(item)) { int row = upperBound(item); beginInsertRows(QModelIndex(), row, row); items.insert(row, item); endInsertRows(); } } void aboutToUpdate(const ItemType &item) { updatingRow = -1; if (item.isValid()) { updatingRow = binaryFind(item); } } void update(const ItemType &item) { int row = updatingRow; updatingRow = -1; if ((row >= 0) && (row < items.size())) { if (item.isValid() && helper.filterAcceptsItem(item)) { items.replace(row, item); int targetRow = row; while (((targetRow - 1) >= 0) && lessThan(item, items.at(targetRow - 1))) { --targetRow; } while (((targetRow + 1) < items.size()) && lessThan(items.at(targetRow + 1), item)) { ++targetRow; } if (row == targetRow) { emit dataChanged(index(row, 0), index(row, helper.columnCount() - 1)); } else { beginLayoutChange(); items.move(row, targetRow); endLayoutChange(); } } else { beginRemoveRows(QModelIndex(), row, row); items.removeAt(row); endRemoveRows(); } } else { insert(item); } } void remove(const ItemType &item) { if (item.isValid()) { int row = binaryFind(item); beginRemoveRows(QModelIndex(), row, row); items.removeAt(row); endRemoveRows(); } } void internalSort(SortOrder sortOrder) { if (lessThan.getSortOrder() != sortOrder) { beginLayoutChange(); lessThan.setSortOrder(sortOrder); qSort(items.begin(), items.end(), lessThan); endLayoutChange(); } } private: int binaryFind(const ItemType &item) const { return (qBinaryFind(items.constBegin(), items.constEnd(), item, lessThan) - items.constBegin()); } int upperBound(const ItemType &item) const { return (qUpperBound(items.constBegin(), items.constEnd(), item, lessThan) - items.constBegin()); } void beginLayoutChange() { emit layoutAboutToBeChanged(); oldPersistentIndexes = persistentIndexList(); persistentItems.clear(); foreach (const QModelIndex &index, oldPersistentIndexes) { if ((index.row() >= 0) && (index.row() < items.size())) { persistentItems.append(items.at(index.row())); } else { persistentItems.append(ItemType()); } } } void endLayoutChange() { QModelIndexList newPersistentIndexes; for (int i = 0; i < oldPersistentIndexes.size(); ++i) { const QModelIndex &oldIndex = oldPersistentIndexes.at(i); const ItemType &item = persistentItems.at(i); if (item.isValid()) { int row = binaryFind(item); newPersistentIndexes.append(index(row, oldIndex.column())); } else { newPersistentIndexes.append(QModelIndex()); } } changePersistentIndexList(oldPersistentIndexes, newPersistentIndexes); oldPersistentIndexes.clear(); persistentItems.clear(); emit layoutChanged(); } private: QList items; LessThanType lessThan; ItemType sharedNull; QModelIndexList oldPersistentIndexes; QList persistentItems; int updatingRow; protected: T helper; }; #endif /* TABLEMODEL_H */ kaffeine-1.2.2/src/scanfile.dvb0000644000175000017500000100000111552636277015770 0ustar lxuserlxuser# this file is automatically generated from http://linuxtv.org/hg/dvb-apps [date] 2011-04-04 [dvb-c/at-Innsbruck] C 442000000 6875000 NONE QAM64 C 450000000 6875000 NONE QAM64 C 490000000 6875000 NONE QAM64 C 546000000 6875000 NONE QAM64 C 554000000 6875000 NONE QAM64 C 562000000 6875000 NONE QAM64 [dvb-c/at-Kabel-Braunau] C 386000000 6900000 NONE QAM64 C 394000000 6875000 NONE QAM64 C 402000000 6875000 NONE QAM64 C 410000000 6875000 NONE QAM64 C 418000000 6875000 NONE QAM64 C 426000000 6875000 NONE QAM64 C 434000000 6875000 NONE QAM64 C 458000000 6875000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 474000000 6900000 NONE QAM64 C 482000000 6111000 NONE QAM64 C 490000000 6111000 NONE QAM64 C 498000000 6875000 NONE QAM64 C 506000000 6111000 NONE QAM64 C 514000000 6111000 NONE QAM64 C 522000000 6428000 NONE QAM128 C 530000000 6428000 NONE QAM128 C 546000000 6875000 NONE QAM64 C 554000000 6875000 NONE QAM64 C 562000000 6875000 NONE QAM64 C 570000000 6111000 NONE QAM64 C 578000000 6900000 NONE QAM256 C 586000000 6900000 NONE QAM256 C 594000000 6875000 NONE QAM64 [dvb-c/at-Kabelsignal] C 314000000 6900000 NONE QAM256 C 322000000 6900000 NONE QAM256 C 330000000 6900000 NONE QAM256 C 338000000 6900000 NONE QAM256 C 346000000 6900000 NONE QAM256 C 354000000 6900000 NONE QAM256 C 362000000 6900000 NONE QAM256 C 370000000 6900000 NONE QAM256 C 378000000 6900000 NONE QAM256 C 386000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 402000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 418000000 6900000 NONE QAM256 C 426000000 6900000 NONE QAM256 C 434000000 6900000 NONE QAM256 C 442000000 6900000 NONE QAM256 C 450000000 6900000 NONE QAM256 C 666000000 6900000 NONE QAM256 C 674000000 6900000 NONE QAM256 C 682000000 6900000 NONE QAM256 C 690000000 6900000 NONE QAM256 C 698000000 6900000 NONE QAM256 C 706000000 6900000 NONE QAM256 C 714000000 6900000 NONE QAM256 C 722000000 6900000 NONE QAM256 C 730000000 6900000 NONE QAM256 C 738000000 6900000 NONE QAM256 C 746000000 6900000 NONE QAM256 C 762000000 6900000 NONE QAM256 C 770000000 6900000 NONE QAM256 C 778000000 6900000 NONE QAM256 C 786000000 6900000 NONE QAM256 C 794000000 6900000 NONE QAM256 C 802000000 6900000 NONE QAM256 C 810000000 6900000 NONE QAM256 [dvb-c/at-KarrerNet] C 386000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 434000000 6900000 NONE QAM256 C 442000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 474000000 6900000 NONE QAM64 C 482000000 6900000 NONE QAM64 C 490000000 6900000 NONE QAM64 C 498000000 6900000 NONE QAM64 C 506000000 6900000 NONE QAM64 C 514000000 6900000 NONE QAM64 C 522000000 6900000 NONE QAM64 C 530000000 6900000 NONE QAM64 C 538000000 6900000 NONE QAM64 C 546000000 6900000 NONE QAM64 C 554000000 6900000 NONE QAM64 C 562000000 6900000 NONE QAM64 C 570000000 6900000 NONE QAM64 C 578000000 6900000 NONE QAM64 C 586000000 6900000 NONE QAM64 C 610000000 6900000 NONE QAM64 [dvb-c/at-Liwest] C 394000000 6900000 NONE QAM64 C 402000000 6900000 NONE QAM64 C 410000000 6875000 NONE QAM64 C 418000000 6900000 NONE QAM64 C 426000000 6900000 NONE QAM64 C 434000000 6900000 NONE QAM64 C 442000000 6900000 NONE QAM64 C 506000000 6900000 NONE QAM64 C 514000000 6900000 NONE QAM64 C 522000000 6900000 NONE QAM64 C 530000000 6900000 NONE QAM64 C 538000000 6900000 NONE QAM64 C 546000000 6900000 NONE QAM64 C 554000000 6900000 NONE QAM64 C 562000000 6900000 NONE QAM64 C 570000000 6900000 NONE QAM64 C 578000000 6900000 NONE QAM64 C 586000000 6900000 NONE QAM64 C 586000000 6900000 NONE QAM256 C 594000000 6900000 NONE QAM64 C 634000000 6900000 NONE QAM256 C 642000000 6900000 NONE QAM256 C 650000000 6900000 NONE QAM256 C 658000000 6900000 NONE QAM256 C 666000000 6900000 NONE QAM64 C 674000000 6900000 NONE QAM64 C 682000000 6900000 NONE QAM64 C 690000000 6900000 NONE QAM256 [dvb-c/at-SalzburgAG] C 306000000 6900000 NONE QAM64 C 370000000 6900000 NONE QAM64 C 410000000 6900000 NONE QAM64 C 418000000 6900000 NONE QAM64 C 426000000 6900000 NONE QAM64 C 442000000 6900000 NONE QAM64 [dvb-c/at-Vienna] C 377750000 6900000 NONE QAM256 [dvb-c/be-IN.DI-Integan] C 330000000 6875000 NONE QAM256 C 338000000 6875000 NONE QAM256 C 346000000 6875000 NONE QAM256 C 354000000 6875000 NONE QAM256 C 362000000 6875000 NONE QAM64 C 370000000 6875000 NONE QAM256 C 378000000 6875000 NONE QAM256 C 386000000 6875000 NONE QAM256 C 394000000 6875000 NONE QAM256 C 458000000 6875000 NONE QAM256 C 466000000 6875000 NONE QAM256 C 474000000 6875000 NONE QAM256 C 482000000 6875000 NONE QAM256 C 586000000 6875000 NONE QAM256 [dvb-c/br-Net-Digital] C 573000000 5217000 NONE QAM256 [dvb-c/ch-Rega-Sense] C 125000000 6900000 NONE QAM64 C 434000000 6900000 NONE QAM64 C 450000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 474000000 6900000 NONE QAM64 C 482000000 6900000 NONE QAM64 C 514000000 6900000 NONE QAM64 C 522000000 6900000 NONE QAM64 C 578000000 6900000 NONE QAM64 C 586000000 6900000 NONE QAM64 C 618000000 6900000 NONE QAM256 C 634000000 6900000 NONE QAM64 C 642000000 6900000 NONE QAM64 C 642000000 6900000 NONE QAM256 C 650000000 6900000 NONE QAM64 C 658000000 6900000 NONE QAM64 C 666000000 6900000 NONE QAM64 C 674000000 6900000 NONE QAM256 C 682000000 6900000 NONE QAM64 C 690000000 6900000 NONE QAM256 C 698000000 6900000 NONE QAM64 C 714000000 6900000 NONE QAM64 C 722000000 6900000 NONE QAM64 C 730000000 6900000 NONE QAM64 [dvb-c/ch-Video2000] C 306000000 6900000 NONE QAM64 [dvb-c/ch-Zuerich-cablecom] C 410000000 6900000 NONE QAM64 [dvb-c/ch-unknown] C 530000000 6900000 NONE QAM64 [dvb-c/cz-Moravianet] C 218000000 6900000 NONE QAM64 C 226000000 6900000 NONE QAM64 C 234000000 6900000 NONE QAM64 C 242000000 6900000 NONE QAM64 C 250000000 6900000 NONE QAM64 C 258000000 6900000 NONE QAM64 C 266000000 6900000 NONE QAM64 C 274000000 6900000 NONE QAM64 C 282000000 6900000 NONE QAM64 C 290000000 6900000 NONE QAM64 C 298000000 6900000 NONE QAM64 C 306000000 6900000 NONE QAM64 [dvb-c/de-Berlin] C 113000000 6900000 NONE QAM64 C 394000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 [dvb-c/de-Kabel_BW] C 113000000 6900000 NONE QAM64 [dvb-c/de-Muenchen] C 113000000 6900000 NONE QAM64 C 121000000 6900000 NONE QAM64 C 322000000 6900000 NONE QAM256 C 346000000 6900000 NONE QAM64 C 354000000 6900000 NONE QAM64 C 362000000 6900000 NONE QAM64 C 370000000 6900000 NONE QAM64 C 378000000 6900000 NONE QAM64 C 386000000 6900000 NONE QAM64 C 394000000 6900000 NONE QAM64 C 402000000 6900000 NONE QAM64 C 410000000 6900000 NONE QAM64 C 418000000 6900000 NONE QAM64 C 426000000 6900000 NONE QAM64 C 434000000 6900000 NONE QAM64 C 442000000 6900000 NONE QAM64 C 450000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM256 C 466000000 6900000 NONE QAM64 C 482000000 6900000 NONE QAM64 C 490000000 6900000 NONE QAM256 [dvb-c/de-Primacom] C 121000000 6900000 NONE QAM64 C 129000000 6900000 NONE QAM256 C 137000000 6900000 NONE QAM256 C 145000000 6900000 NONE QAM256 C 306000000 6900000 NONE QAM64 C 314000000 6900000 NONE QAM64 C 322000000 6900000 NONE QAM64 C 330000000 6900000 NONE QAM64 C 338000000 6900000 NONE QAM256 C 346000000 6900000 NONE QAM256 C 354000000 6900000 NONE QAM256 C 362000000 6900000 NONE QAM256 C 370000000 6900000 NONE QAM256 C 378000000 6900000 NONE QAM256 C 386000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 402000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 418000000 6900000 NONE QAM256 C 434000000 6900000 NONE QAM64 C 442000000 6900000 NONE QAM64 C 450000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 610000000 6900000 NONE QAM64 C 746000000 6900000 NONE QAM64 [dvb-c/de-Unitymedia] C 113000000 6900000 NONE QAM256 C 121000000 6900000 NONE QAM256 C 346000000 6900000 NONE QAM256 C 354000000 6900000 NONE QAM64 C 362000000 6900000 NONE QAM64 C 370000000 6900000 NONE QAM64 C 378000000 6900000 NONE QAM64 C 386000000 6900000 NONE QAM64 C 394000000 6900000 NONE QAM64 C 402000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 418000000 6900000 NONE QAM256 C 426000000 6900000 NONE QAM256 C 434000000 6900000 NONE QAM256 C 442000000 6900000 NONE QAM256 C 450000000 6900000 NONE QAM256 C 458000000 6900000 NONE QAM256 C 466000000 6900000 NONE QAM256 C 522000000 6900000 NONE QAM256 C 530000000 6900000 NONE QAM256 C 538000000 6900000 NONE QAM256 C 546000000 6900000 NONE QAM256 C 554000000 6900000 NONE QAM256 C 562000000 6900000 NONE QAM256 C 570000000 6900000 NONE QAM256 C 650000000 6900000 NONE QAM256 C 658000000 6900000 NONE QAM256 C 666000000 6900000 NONE QAM256 C 674000000 6900000 NONE QAM256 C 682000000 6900000 NONE QAM256 C 690000000 6900000 NONE QAM256 C 698000000 6900000 NONE QAM256 [dvb-c/de-iesy] C 113000000 6900000 NONE QAM64 C 121000000 6900000 NONE QAM64 C 346000000 6900000 NONE QAM256 C 354000000 6900000 NONE QAM64 C 362000000 6900000 NONE QAM64 C 370000000 6900000 NONE QAM64 C 378000000 6900000 NONE QAM64 C 386000000 6900000 NONE QAM64 C 394000000 6900000 NONE QAM64 C 402000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM64 C 426000000 6900000 NONE QAM64 C 434000000 6900000 NONE QAM256 C 442000000 6900000 NONE QAM256 C 450000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 538000000 6900000 NONE QAM256 [dvb-c/de-komro-Rosenheim] C 113000000 6900000 NONE QAM64 C 121000000 6900000 NONE QAM64 C 338000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 450000000 6900000 NONE QAM64 C 458000000 6900000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 522000000 6900000 NONE QAM256 C 530000000 6900000 NONE QAM256 C 602000000 6900000 NONE QAM256 C 610000000 6900000 NONE QAM256 C 626000000 6900000 NONE QAM256 C 642000000 6900000 NONE QAM256 C 650000000 6900000 NONE QAM256 C 658000000 6900000 NONE QAM64 C 666000000 6900000 NONE QAM64 C 682000000 6900000 NONE QAM64 C 690000000 6900000 NONE QAM256 C 698000000 6900000 NONE QAM256 C 706000000 6900000 NONE QAM256 C 714000000 6900000 NONE QAM256 C 722000000 6900000 NONE QAM256 C 730000000 6900000 NONE QAM64 C 738000000 6900000 NONE QAM64 C 746000000 6900000 NONE QAM64 C 754000000 6900000 NONE QAM64 C 762000000 6900000 NONE QAM256 C 778000000 6900000 NONE QAM64 [dvb-c/de-neftv] C 113000000 6900000 NONE QAM64 C 346000000 6875000 NONE QAM64 C 354000000 6875000 NONE QAM64 C 362000000 6875000 NONE QAM64 C 370000000 6875000 NONE QAM64 C 378000000 6875000 NONE QAM64 C 386000000 6875000 NONE QAM64 C 394000000 6875000 NONE QAM64 C 402000000 6875000 NONE QAM64 C 410000000 6900000 NONE QAM64 C 418000000 6875000 NONE QAM64 C 426000000 6900000 NONE QAM64 C 434000000 6900000 NONE QAM64 C 442000000 6900000 NONE QAM256 C 450000000 6900000 NONE QAM256 C 458000000 6875000 NONE QAM64 C 466000000 6900000 NONE QAM64 C 474000000 6875000 NONE QAM64 C 490000000 6875000 NONE QAM64 C 498000000 6875000 NONE QAM64 C 514000000 6875000 NONE QAM64 C 522000000 6900000 NONE QAM64 C 546000000 6875000 NONE QAM64 C 618000000 6900000 NONE QAM64 C 634000000 6900000 NONE QAM64 C 786000000 6900000 NONE QAM256 C 794000000 6900000 NONE QAM64 C 802000000 6900000 NONE QAM64 C 810000000 6900000 NONE QAM64 [dvb-c/dk-Copenhagen-AFDK] C 386000000 6875000 NONE QAM64 C 394000000 6875000 NONE QAM64 C 402000000 6875000 NONE QAM64 C 490000000 6875000 NONE QAM64 C 602000000 6875000 NONE QAM64 C 610000000 6875000 NONE QAM64 C 618000000 6875000 NONE QAM64 C 794000000 6875000 NONE QAM64 [dvb-c/dk-Odense] C 255000000 5000000 NONE QAM256 C 434000000 6875000 NONE QAM256 C 442000000 6900000 NONE QAM64 C 506000000 6875000 NONE QAM256 C 562000000 6875000 NONE QAM256 C 610000000 6875000 NONE QAM256 C 754000000 6875000 NONE QAM256 C 770000000 6875000 NONE QAM256 [dvb-c/es-Euskaltel] C 714000000 6875000 NONE QAM64 C 722000000 6875000 NONE QAM64 C 730000000 6875000 NONE QAM64 C 738000000 6875000 NONE QAM64 C 746000000 6875000 NONE QAM64 C 754000000 6875000 NONE QAM64 C 762000000 6875000 NONE QAM64 C 770000000 6875000 NONE QAM64 C 778000000 6875000 NONE QAM64 C 786000000 6875000 NONE QAM64 C 794000000 6875000 NONE QAM64 C 802000000 6875000 NONE QAM64 C 810000000 6875000 NONE QAM64 C 818000000 6875000 NONE QAM64 [dvb-c/fi-HTV] C 154000000 6900000 NONE QAM128 C 283000000 5900000 NONE QAM128 [dvb-c/fi-Joensuu-Tikka] C 154000000 6900000 NONE QAM128 C 162000000 6900000 NONE QAM128 C 170000000 6900000 NONE QAM128 C 402000000 6900000 NONE QAM128 C 410000000 6900000 NONE QAM128 C 418000000 6900000 NONE QAM128 C 426000000 6900000 NONE QAM128 C 434000000 6900000 NONE QAM128 C 458000000 6900000 NONE QAM128 C 466000000 6900000 NONE QAM128 C 474000000 6900000 NONE QAM128 [dvb-c/fi-TTV] C 346000000 6900000 NONE QAM128 C 418000000 6900000 NONE QAM128 [dvb-c/fi-Turku] C 146000000 6900000 NONE QAM128 C 154000000 6900000 NONE QAM128 C 162000000 6900000 NONE QAM128 C 234000000 6900000 NONE QAM256 C 242000000 6900000 NONE QAM256 C 250000000 6900000 NONE QAM256 C 258000000 6900000 NONE QAM256 C 266000000 6900000 NONE QAM256 C 290000000 6900000 NONE QAM128 C 298000000 6900000 NONE QAM128 C 322000000 6900000 NONE QAM128 C 330000000 6900000 NONE QAM128 C 338000000 6900000 NONE QAM128 C 362000000 6900000 NONE QAM128 C 378000000 6900000 NONE QAM128 C 386000000 6900000 NONE QAM128 C 402000000 6900000 NONE QAM128 C 410000000 6900000 NONE QAM128 C 418000000 6900000 NONE QAM128 C 426000000 6900000 NONE QAM128 C 442000000 6900000 NONE QAM128 [dvb-c/fi-dna] C 154000000 6875000 NONE QAM128 C 162000000 6875000 NONE QAM128 C 170000000 6875000 NONE QAM128 C 232000000 6875000 NONE QAM128 C 250000000 6875000 NONE QAM128 C 258000000 6875000 NONE QAM128 C 266000000 6875000 NONE QAM128 C 274000000 6875000 NONE QAM128 C 290000000 6875000 NONE QAM128 C 298000000 6875000 NONE QAM128 C 306000000 6875000 NONE QAM128 C 314000000 6875000 NONE QAM128 C 322000000 6875000 NONE QAM128 C 330000000 6875000 NONE QAM128 C 338000000 6875000 NONE QAM128 C 346000000 6875000 NONE QAM128 C 354000000 6875000 NONE QAM128 C 362000000 6875000 NONE QAM128 C 370000000 6875000 NONE QAM128 C 378000000 6875000 NONE QAM128 C 394000000 6875000 NONE QAM128 C 402000000 6875000 NONE QAM128 C 450000000 6875000 NONE QAM128 [dvb-c/fi-jkl] C 162000000 6900000 NONE QAM128 C 402000000 6900000 NONE QAM128 C 410000000 6900000 NONE QAM128 C 418000000 6900000 NONE QAM128 C 426000000 6900000 NONE QAM128 C 490000000 6900000 NONE QAM128 C 498000000 6900000 NONE QAM128 C 514000000 6900000 NONE QAM128 [dvb-c/fi-sonera] C 154000000 6900000 NONE QAM128 C 162000000 6900000 NONE QAM128 C 170000000 6900000 NONE QAM128 C 314000000 6900000 NONE QAM128 C 322000000 6900000 NONE QAM128 C 338000000 6900000 NONE QAM128 C 346000000 6900000 NONE QAM128 C 354000000 6900000 NONE QAM128 [dvb-c/fi-vaasa-oncable] C 143000000 6875000 NONE QAM64 C 306000000 6875000 NONE QAM64 C 314000000 6875000 NONE QAM64 C 362000000 6875000 NONE QAM64 C 386000000 6875000 NONE QAM64 C 394000000 6875000 NONE QAM64 C 410000000 6875000 NONE QAM64 C 418000000 6875000 NONE QAM64 C 426000000 6875000 NONE QAM64 C 434000000 6875000 NONE QAM64 C 442000000 6875000 NONE QAM64 [dvb-c/fr-noos-numericable] C 123000000 6875000 NONE QAM64 C 131000000 6875000 NONE QAM64 C 139000000 6875000 NONE QAM64 C 147000000 6875000 NONE QAM64 C 155000000 6875000 NONE QAM64 C 163000000 6875000 NONE QAM64 C 171000000 6875000 NONE QAM64 C 179000000 6875000 NONE QAM64 C 187000000 6875000 NONE QAM64 C 195000000 6875000 NONE QAM64 C 203000000 6875000 NONE QAM64 C 211000000 6875000 NONE QAM64 C 219000000 6875000 NONE QAM64 C 227000000 6875000 NONE QAM64 C 235000000 6875000 NONE QAM64 C 243000000 6875000 NONE QAM64 C 251000000 6875000 NONE QAM64 C 259000000 6875000 NONE QAM64 C 267000000 6875000 NONE QAM64 C 275000000 6875000 NONE QAM64 C 283000000 6875000 NONE QAM64 C 291000000 6875000 NONE QAM64 C 299000000 6875000 NONE QAM64 C 315000000 6875000 NONE QAM64 C 323000000 6875000 NONE QAM64 C 339000000 6875000 NONE QAM64 C 347000000 6875000 NONE QAM64 C 706000000 6875000 NONE QAM64 C 714000000 6875000 NONE QAM64 C 722000000 6875000 NONE QAM64 C 730000000 6875000 NONE QAM64 C 738000000 6875000 NONE QAM64 C 746000000 6875000 NONE QAM64 C 748000000 6875000 NONE QAM64 C 754000000 6875000 NONE QAM64 C 762000000 6875000 NONE QAM64 C 834000000 6875000 NONE QAM64 C 842000000 6875000 NONE QAM64 C 850000000 6875000 NONE QAM64 [dvb-c/hu-Digikabel] C 354000000 6900000 NONE QAM256 C 362000000 6900000 NONE QAM256 C 370000000 6900000 NONE QAM256 C 378000000 6900000 NONE QAM256 C 386000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 402000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 762000000 6900000 NONE QAM256 C 770000000 6900000 NONE QAM256 C 778000000 6900000 NONE QAM256 C 786000000 6900000 NONE QAM256 C 794000000 6900000 NONE QAM256 [dvb-c/lu-Ettelbruck-ACE] C 634000000 6900000 NONE QAM64 C 642000000 6900000 NONE QAM64 C 650000000 6900000 NONE QAM64 C 656000000 3450000 NONE QAM64 C 660000000 3450000 NONE QAM64 C 666000000 6900000 NONE QAM64 C 674000000 6900000 NONE QAM64 C 682000000 6900000 NONE QAM64 C 690000000 6900000 NONE QAM64 C 698000000 6900000 NONE QAM64 C 706000000 6900000 NONE QAM64 C 714000000 6900000 NONE QAM64 C 720000000 3450000 NONE QAM64 C 724000000 3450000 NONE QAM64 C 728000000 3450000 NONE QAM64 C 732000000 3450000 NONE QAM64 [dvb-c/nl-REKAM-CAIW_Gouda] C 163000000 6875000 NONE QAM64 C 770000000 6900000 NONE QAM64 [dvb-c/nl-Ziggo] C 356000000 6875000 NONE QAM64 C 369000000 6875000 NONE QAM64 C 372000000 6875000 NONE QAM64 C 514000000 6875000 NONE QAM64 [dvb-c/nl-Ziggo-Zwolle] C 297000000 6875000 NONE QAM64 C 305000000 6875000 NONE QAM64 C 313000000 6875000 NONE QAM64 C 321000000 6875000 NONE QAM64 C 329000000 6875000 NONE QAM64 C 337000000 6875000 NONE QAM64 C 345000000 6875000 NONE QAM64 C 353000000 6875000 NONE QAM64 C 361000000 6875000 NONE QAM64 C 369000000 6875000 NONE QAM64 C 377000000 6875000 NONE QAM64 C 385000000 6875000 NONE QAM64 C 393000000 6875000 NONE QAM64 C 401000000 6875000 NONE QAM64 C 409000000 6875000 NONE QAM64 C 417000000 6875000 NONE QAM64 C 425000000 6875000 NONE QAM64 C 610000000 6875000 NONE QAM64 C 618000000 6875000 NONE QAM64 C 642000000 6875000 NONE QAM64 C 650000000 6875000 NONE QAM64 C 754000000 6875000 NONE QAM64 C 762000000 6875000 NONE QAM64 C 794000000 6875000 NONE QAM64 C 810000000 6875000 NONE QAM64 C 818000000 6875000 NONE QAM64 [dvb-c/no-Oslo-CanalDigital] C 354000000 6950000 NONE QAM64 C 362000000 6950000 NONE QAM64 C 370000000 6950000 NONE QAM64 C 378000000 6950000 NONE QAM64 C 386000000 6950000 NONE QAM64 C 394000000 6950000 NONE QAM64 C 402000000 6950000 NONE QAM64 C 410000000 6950000 NONE QAM64 C 418000000 6950000 NONE QAM64 C 426000000 6950000 NONE QAM64 C 450000000 6950000 NONE QAM64 C 474000000 6950000 NONE QAM64 [dvb-c/no-Oslo-Get] C 241000000 6900000 NONE QAM256 C 272000000 6900000 NONE QAM256 C 280000000 6900000 NONE QAM256 C 290000000 6900000 NONE QAM256 C 298000000 6900000 NONE QAM256 C 306000000 6900000 NONE QAM256 C 314000000 6900000 NONE QAM256 C 322000000 6900000 NONE QAM256 C 330000000 6900000 NONE QAM256 C 338000000 6900000 NONE QAM256 C 346000000 6900000 NONE QAM256 C 354000000 6900000 NONE QAM256 C 362000000 6900000 NONE QAM256 C 370000000 6900000 NONE QAM256 C 378000000 6900000 NONE QAM256 C 386000000 6900000 NONE QAM256 C 394000000 6900000 NONE QAM256 C 410000000 6900000 NONE QAM256 C 442000000 6952000 NONE QAM256 C 482000000 6900000 NONE QAM256 C 498000000 6900000 NONE QAM256 [dvb-c/se-Gothnet] C 314000000 7000000 NONE QAM64 C 322000000 7000000 NONE QAM64 C 346000000 7000000 NONE QAM64 C 354000000 7000000 NONE QAM64 C 362000000 7000000 NONE QAM64 C 370000000 7000000 NONE QAM64 C 490000000 6875000 NONE QAM64 C 498000000 6875000 NONE QAM64 C 506000000 6875000 NONE QAM64 C 514000000 6875000 NONE QAM64 C 682000000 6900000 NONE QAM64 C 690000000 6900000 NONE QAM64 C 698000000 6900000 NONE QAM64 C 706000000 6900000 NONE QAM64 [dvb-c/se-comhem] C 289500000 6875000 NONE QAM64 C 298000000 6875000 NONE QAM64 C 306000000 6875000 NONE QAM64 C 314000000 6875000 NONE QAM64 C 322000000 6875000 NONE QAM64 C 338000000 6875000 NONE QAM64 C 346000000 6875000 NONE QAM64 C 354000000 6875000 NONE QAM64 C 362000000 6875000 NONE QAM64 C 370000000 6875000 NONE QAM64 C 378000000 6875000 NONE QAM64 C 386000000 6875000 NONE QAM64 C 394000000 6875000 NONE QAM64 C 402000000 6875000 NONE QAM64 C 418000000 6875000 NONE QAM64 C 434000000 6875000 NONE QAM64 C 442000000 6875000 NONE QAM64 C 450000000 6875000 NONE QAM64 C 458000000 6875000 NONE QAM64 C 714000000 6875000 NONE QAM64 C 722000000 6875000 NONE QAM64 C 738000000 6875000 NONE QAM64 C 786000000 6875000 NONE QAM64 [dvb-s/ABS1-75.0E] S 12518000 V 22000000 AUTO S 12548000 V 22000000 AUTO S 12579000 V 22000000 AUTO S 12640000 V 22000000 AUTO S 12670000 V 22000000 AUTO S 12693000 V 10000000 AUTO S 12704000 V 3900000 AUTO S 12740000 V 7408000 AUTO [dvb-s/AMC1-103W] S 11942000 V 20000000 AUTO S 12100000 V 20000000 AUTO [dvb-s/AMC2-85W] S 11731000 H 13021000 AUTO S 11744000 H 13021000 AUTO S 11771000 H 13021000 AUTO [dvb-s/AMC3-87W] S 11716000 H 4859000 AUTO S 12142000 V 30000000 AUTO S 12147000 H 4340000 AUTO S 12159000 H 4444000 AUTO S 12165000 H 4444000 AUTO S 12172000 H 4444000 AUTO S 12182000 V 30000000 AUTO [dvb-s/AMC4-101W] S 11573000 V 7234000 AUTO S 11655000 V 30000000 AUTO S 11708000 V 2170000 AUTO S 11822000 H 5700000 AUTO S 11860000 H 28138000 AUTO S 12120000 V 30000000 AUTO S 12169000 H 3003000 AUTO [dvb-s/AMC5-79W] S 11742000 V 11110000 AUTO S 12182000 H 23000000 AUTO [dvb-s/AMC6-72W] S 11482000 V 2656000 AUTO S 11494000 V 6560000 AUTO S 11499000 V 2964000 AUTO S 11505000 V 2963000 AUTO S 11546000 V 12000000 AUTO S 11548000 H 3002000 AUTO S 11552000 H 3002000 AUTO S 11557000 H 4392000 AUTO S 11563000 H 4392000 AUTO S 11570000 H 4392000 AUTO S 11576000 H 4392000 AUTO S 11586000 H 2652000 AUTO S 11603000 V 8500000 AUTO S 11605000 V 3600000 AUTO S 11611000 V 3400000 AUTO S 11628000 V 6560000 AUTO S 11637000 V 2800000 AUTO S 11641000 V 3702000 AUTO S 11648000 V 7500000 AUTO S 11667000 V 7400000 AUTO S 11674000 V 4000000 AUTO S 11680000 V 3255000 AUTO S 11703000 V 3979000 AUTO S 11709000 V 3979000 AUTO S 11715000 V 3979000 AUTO S 11746000 V 3979000 AUTO S 11748000 H 14015000 AUTO S 11752000 V 3979000 AUTO S 11763000 V 3979000 AUTO S 11817000 H 5000000 AUTO S 11874000 V 4000000 AUTO S 11986000 V 3979000 AUTO S 11995000 V 3979000 AUTO S 12004000 V 3979000 AUTO S 12013000 V 3979000 AUTO S 12025000 V 3979000 AUTO S 12031000 V 3979000 AUTO S 12046000 H 6111000 AUTO S 12055000 V 6890000 AUTO S 12144000 V 2573000 AUTO S 12188000 H 6511000 AUTO [dvb-s/AMC9-83W] S 11745000 H 4232000 AUTO S 11751000 H 4232000 AUTO S 11757000 H 4232000 AUTO S 11763000 H 4232000 AUTO S 11769000 H 4232000 AUTO S 11775000 H 4232000 AUTO S 11826000 H 5632000 AUTO S 11864000 H 3979000 AUTO S 11871000 H 13000000 AUTO S 11889000 H 13025000 AUTO S 11926000 V 6511000 AUTO S 11953000 V 3979000 AUTO S 11960000 H 5000000 AUTO S 12002000 H 3979000 AUTO S 12011000 H 3979000 AUTO [dvb-s/Agila2_C-146.0E] S 3725000 H 2345000 3/4 S 3774000 V 3300000 3/4 S 3791000 H 3100000 3/4 S 3791000 V 10091000 5/6 S 3796000 H 3360000 3/4 S 3846000 H 6110000 3/4 S 3854000 H 2603000 5/6 S 3873000 V 2532000 3/4 S 3875000 H 3000000 3/4 S 3880000 H 2000000 3/4 S 3887000 H 6716000 3/4 S 3896000 H 3000000 3/4 S 3979000 V 9628000 3/4 S 3990000 V 13330000 3/4 S 4164000 V 3735000 7/8 S 4171000 V 3213000 3/4 S 4183000 V 2170000 3/4 S 4188000 V 2170000 3/4 [dvb-s/Amazonas-61.0W] S 3631000 H 2785000 AUTO S 3677000 H 4400000 AUTO S 3941000 V 3480000 AUTO S 3948000 H 13300000 AUTO S 3957000 H 6666000 AUTO S 3966000 H 6666000 AUTO S 3975000 H 6666000 AUTO S 3985000 H 4444000 AUTO S 3993000 H 6666000 AUTO S 4137000 H 3409000 AUTO S 4144000 V 4540000 AUTO S 4149000 V 4540000 AUTO S 4154000 H 9615000 AUTO S 4156000 V 4540000 AUTO S 4168000 H 7307000 AUTO S 4174000 H 3330000 AUTO S 4178000 H 3333000 AUTO S 10975000 H 26666000 AUTO S 10975000 V 27000000 AUTO S 11015000 H 26666000 AUTO S 11049000 V 2000000 AUTO S 11055000 H 27500000 AUTO S 11078000 V 1862000 AUTO S 11095000 H 30000000 AUTO S 11099000 V 7576000 AUTO S 11108000 V 2170000 AUTO S 11128000 V 6666000 AUTO S 11133000 V 3111000 AUTO S 11135000 H 26667000 AUTO S 11175000 H 28880000 AUTO S 11185000 V 11800000 AUTO S 11790000 H 3600000 AUTO S 11808000 H 11111000 AUTO S 11810000 V 6666000 AUTO S 11844000 V 16600000 AUTO S 11882000 V 11343000 AUTO S 11885000 H 4890000 AUTO S 11906000 H 2220000 AUTO S 11912000 H 2222000 AUTO S 11921000 V 21740000 AUTO S 11943000 V 4750000 AUTO S 11972000 H 26667000 AUTO S 12012000 H 27500000 AUTO S 12052000 H 26667000 AUTO S 12052000 V 27000000 AUTO S 12092000 H 27500000 AUTO S 12092000 V 30000000 AUTO S 12132000 H 27500000 AUTO S 12132000 V 30000000 AUTO S 12172000 H 27500000 AUTO S 12172000 V 30000000 AUTO [dvb-s/Amos-4W] S 10722000 H 27500000 3/4 S 10722000 V 27500000 3/4 S 10722000 V 30000000 2/3 S 10758000 V 27500000 3/4 S 10758000 V 30000000 2/3 S 10759000 H 30000000 3/4 S 10806000 H 27500000 5/6 S 10806000 V 27500000 3/4 S 10842000 H 27500000 7/8 S 10842000 V 27500000 3/4 S 10842000 V 30000000 2/3 S 10890000 H 27500000 7/8 S 10890000 V 27500000 3/4 S 10925000 H 27500000 7/8 S 10925000 V 27500000 3/4 S 10972000 V 27500000 3/4 S 11008000 V 27500000 3/4 S 11015000 H 2295000 3/4 S 11123000 H 1850000 7/8 S 11167000 H 12500000 5/6 S 11179000 H 6666000 3/4 S 11260000 H 27500000 3/4 S 11304000 H 19540000 3/4 S 11319000 H 2750000 3/4 S 11329000 H 3333000 3/4 S 11333000 H 3500000 3/4 S 11347000 H 3350000 3/4 S 11384000 H 19000000 5/6 S 11411000 H 7925000 5/6 S 11429000 H 5925000 3/4 S 11435000 H 2089000 3/4 S 11474000 V 27500000 3/4 S 11510000 V 30000000 2/3 S 11558000 V 27500000 3/4 S 11559000 H 13400000 7/8 S 11572000 H 8888000 3/4 S 11592000 H 21350000 3/4 S 11593000 V 27500000 3/4 S 11625000 V 3000000 3/4 S 11630000 H 2963000 3/4 S 11630000 V 3000000 3/4 S 11637000 V 1480000 3/4 S 11647000 H 9167000 3/4 S 11647000 V 8518000 3/4 S 11654000 H 2000000 5/6 S 11658000 V 8520000 5/6 [dvb-s/Anik-F1-107.3W] S 12002000 H 19980000 AUTO S 12063000 H 19980000 AUTO S 12155000 H 22500000 AUTO S 12185000 H 19980000 AUTO [dvb-s/Apstar6_C-134.0E] S 3766000 H 4285000 3/4 S 3840000 H 27500000 3/4 S 3905000 H 3250000 3/4 [dvb-s/AsiaSat2_C-100.5E] S 3660000 V 27500000 3/4 S 3706000 H 4167000 5/6 S 3732000 H 8889000 2/3 S 3767000 V 6527000 1/2 S 3778000 V 3333000 3/4 S 3786000 H 6000000 7/8 S 3790000 V 2444000 3/4 S 3794000 H 4640000 3/4 S 3820000 V 27500000 3/4 S 3840000 H 30000000 3/4 S 3880000 H 27500000 3/4 S 3960000 H 27500000 3/4 S 3980000 V 28100000 3/4 S 4000000 H 28125000 3/4 S 4148000 V 11852000 3/4 [dvb-s/AsiaSat3S_C-105.5E] S 3680000 H 26670000 3/4 S 3706000 H 6000000 3/4 S 3725000 V 4450000 3/4 S 3729000 H 13650000 3/4 S 3733000 V 6500000 3/4 S 3739000 V 2815000 3/4 S 3746000 V 2625000 3/4 S 3750000 V 2821000 3/4 S 3755000 V 4418000 7/8 S 3760000 H 26000000 7/8 S 3780000 V 28100000 3/4 S 3786000 H 5700000 3/4 S 3820000 V 27500000 3/4 S 3840000 H 26850000 7/8 S 3860000 V 27500000 3/4 S 3880000 H 27500000 3/4 S 3940000 V 28100000 3/4 S 3960000 H 28100000 3/4 S 3980000 V 28100000 3/4 S 4000000 H 26850000 7/8 S 4020000 V 27250000 3/4 S 4040000 H 20400000 1/2 S 4071000 H 14240000 3/4 S 4091000 V 13333000 3/4 S 4095000 H 5554000 3/4 S 4102000 V 2894000 3/4 S 4106000 V 2894000 3/4 S 4111000 H 13650000 3/4 S 4114000 V 7000000 3/4 S 4129000 H 13600000 3/4 S 4140000 V 27500000 3/4 S 4180000 V 26666000 3/4 [dvb-s/Asiasat4_C-122.2E] S 3760000 H 27500000 3/4 S 3820000 V 27500000 3/4 S 3856000 H 2170000 3/4 S 3880000 H 27500000 3/4 S 3920000 H 27500000 3/4 S 3960000 H 27500000 3/4 S 4180000 V 27500000 3/4 [dvb-s/Astra-19.2E] S 12551500 V 22000000 5/6 [dvb-s/Astra-23.5E] S 10758000 V 22000000 7/8 S 10788000 V 22000000 5/6 S 10802000 H 22000000 5/6 S 10842000 V 13333000 5/6 S 10862000 H 22000000 5/6 S 11475000 V 27500000 3/4 S 11515000 H 27500000 3/4 S 11675000 H 27500000 3/4 S 11739000 V 27500000 3/4 S 11798000 H 27500000 3/4 S 11836000 H 29900000 3/4 S 11875000 H 27500000 3/4 S 11914000 H 27500000 3/4 S 11992000 H 27500000 3/4 S 12012000 V 27500000 3/4 S 12070000 H 27500000 3/4 S 12168000 V 27500000 3/4 S 12525000 H 27500000 3/4 S 12525000 V 27500000 3/4 S 12565000 H 27500000 2/3 S 12565000 V 27500000 3/4 S 12630000 V 6000000 3/4 S 12631000 H 6666000 7/8 S 12636000 V 2277000 5/6 S 12641000 H 2220000 7/8 S 12644000 H 2170000 3/4 S 12649000 H 5600000 5/6 S 12661000 H 2170000 5/6 S 12685000 V 27500000 3/4 S 12696000 H 3255000 1/2 S 12711000 H 6111000 AUTO S 12725000 V 27500000 3/4 S2 11515000 V 28500000 9/10 AUTO QPSK S2 11555000 H 28500000 9/10 AUTO QPSK S2 11555000 V 28500000 9/10 AUTO QPSK S2 11592000 V 28500000 9/10 AUTO QPSK S2 11595000 H 28500000 9/10 AUTO QPSK S2 11635000 H 28500000 9/10 AUTO QPSK S2 11635000 V 28500000 9/10 AUTO QPSK S2 11675000 V 28500000 9/10 AUTO QPSK S2 11719000 H 27500000 9/10 AUTO QPSK S2 11778000 V 27500000 9/10 AUTO QPSK S2 11817000 V 27500000 9/10 AUTO QPSK S2 11856000 V 27500000 5/6 AUTO QPSK S2 12032000 H 27500000 9/10 AUTO QPSK S2 12109000 H 27500000 9/10 AUTO QPSK S2 12605000 H 28500000 9/10 AUTO QPSK S2 12605000 V 28500000 9/10 AUTO QPSK [dvb-s/Astra-28.2E] S 10714000 H 22000000 5/6 S 10729000 V 22000000 5/6 S 10744000 H 22000000 5/6 S 10758000 V 22000000 5/6 S 10773000 H 22000000 5/6 S 10788000 V 22000000 5/6 S 10803000 H 22000000 5/6 S 10818000 V 22000000 5/6 S 10832000 H 22000000 5/6 S 10847000 V 22000000 5/6 S 10862000 H 22000000 5/6 S 10876000 V 22000000 5/6 S 10891000 H 22000000 5/6 S 10906000 V 22000000 5/6 S 10921000 H 22000000 5/6 S 10936000 V 22000000 5/6 S 11222170 H 27500000 2/3 S 11223670 V 27500000 2/3 S 11259000 V 27500000 2/3 S 11261000 H 27500000 2/3 S 11307000 H 27500000 2/3 S 11307000 V 27500000 2/3 S 11343000 V 27500000 2/3 S 11344000 H 27500000 2/3 S 11390000 H 27500000 2/3 S 11390000 V 27500000 2/3 S 11426000 H 27500000 2/3 S 11426000 V 27500000 2/3 S 11469000 H 27500000 2/3 S 11488000 V 27500000 2/3 S 11508000 H 27500000 2/3 S 11527000 V 27500000 2/3 S 11546000 H 27500000 2/3 S 11565000 V 27500000 2/3 S 11585000 H 27500000 2/3 S 11603850 V 27500000 2/3 S 11623000 H 27500000 2/3 S 11642000 V 27500000 2/3 S 11661540 H 27500000 2/3 S 11680770 V 27500000 2/3 S 11720000 H 29500000 3/4 S 11740000 V 27500000 2/3 S 11758000 H 27500000 2/3 S 11778000 V 27500000 2/3 S 11798000 H 29500000 3/4 S 11817000 V 27500000 2/3 S 11836000 H 27500000 2/3 S 11856000 V 27500000 2/3 S 11876000 H 27500000 2/3 S 11895000 V 27500000 2/3 S 11914000 H 27500000 2/3 S 11934000 V 27500000 2/3 S 11954000 H 27500000 2/3 S 11973000 V 27500000 2/3 S 11992000 H 27500000 2/3 S 12012000 V 27500000 2/3 S 12032000 H 27500000 2/3 S 12051000 V 27500000 2/3 S 12070000 H 27500000 2/3 S 12090000 V 27500000 2/3 S 12110000 H 27500000 2/3 S 12129000 V 27500000 2/3 S 12148000 H 27500000 2/3 S 12168000 V 27500000 2/3 S 12188000 H 27500000 2/3 S 12207000 V 27500000 2/3 S 12226000 H 27500000 2/3 S 12246000 V 27500000 2/3 S 12266000 H 27500000 2/3 S 12285000 V 27500000 2/3 S 12304000 H 27500000 2/3 S 12324000 V 29500000 3/4 S 12344000 H 29500000 3/4 S 12363000 V 29500000 3/4 S 12382000 H 27500000 2/3 S 12402000 V 27500000 2/3 S 12422000 H 27500000 2/3 S 12441000 V 27500000 2/3 S 12460000 H 27500000 2/3 S 12480000 V 27500000 2/3 S 12524000 H 27500000 2/3 S 12524000 V 27500000 2/3 S 12560000 H 27500000 2/3 S 12560000 V 27500000 2/3 S 12596000 V 27500000 2/3 S 12607000 H 27500000 3/4 S 12629000 V 6111000 3/4 S 12692000 V 19532000 1/2 [dvb-s/Atlantic-Bird-1-12.5W] S 11099000 H 2000000 5/6 S 11132000 H 3255000 3/4 S 11136000 V 3700000 5/6 S 11174000 H 15190000 3/4 S 11179000 V 22400000 2/3 S 11188000 H 5722000 5/6 S 11332000 H 6428000 2/3 S 11337000 H 1923000 7/8 S 11340000 H 2279000 5/6 S 11355000 H 11781000 7/8 S 11408000 V 27500000 3/4 S 11428000 H 30000000 5/6 S 11595000 V 27500000 5/6 S 11622000 H 3255000 AUTO S 11643000 H 2398000 AUTO S 11645000 V 4790000 AUTO S 11651000 V 3688000 AUTO S 12515000 H 17455000 3/4 S 12535000 V 2000000 3/4 S 12545000 H 17455000 3/4 S 12594000 H 2170000 3/4 S 12597000 H 1730000 3/4 S 12604000 H 1481000 3/4 S 12655000 H 4285000 3/4 S 12659000 H 2141000 3/4 S 12662000 V 3928000 3/4 S 12720000 V 1808000 3/4 S 12743000 V 3214000 3/4 [dvb-s/Atlantic-Bird-3-5.0W] S 11096000 V 29950000 7/8 S 11591000 V 20000000 2/3 [dvb-s/BrasilSat-B1-75.0W] S 3629000 H 6620000 AUTO S 3638000 H 4440000 AUTO S 3644000 V 4440000 AUTO S 3648000 V 4285000 AUTO S 3653000 V 4710000 AUTO S 3655000 H 6620000 AUTO S 3657000 V 6620000 AUTO S 3711000 H 3200000 AUTO [dvb-s/BrasilSat-B2-65.0W] S 3650000 V 4440000 AUTO S 3667000 H 7236000 AUTO S 3684000 H 6666000 AUTO S 3706000 H 2462000 AUTO S 3721000 H 2963000 AUTO S 3734000 V 2852000 AUTO S 3736000 H 1808000 AUTO S 3745000 H 3540000 AUTO S 3762000 H 2222000 AUTO S 3766000 H 3336000 AUTO S 3771000 V 1480000 AUTO S 3787000 H 6666000 AUTO S 3792000 V 3393000 AUTO S 3793000 H 6666000 AUTO S 3810000 H 13333000 AUTO S 3815000 H 6666000 AUTO S 3834000 H 3572000 AUTO S 3847000 H 4444000 AUTO S 3850000 H 1570000 AUTO S 3876000 V 2740000 AUTO S 3890000 H 6666000 AUTO S 3905000 H 6666000 AUTO S 3915000 H 6666000 AUTO S 3925000 H 6666000 AUTO S 3935000 H 6666000 AUTO S 4008000 H 3333000 AUTO S 4011000 V 5000000 AUTO S 4097000 V 6667000 AUTO S 4104000 V 3214000 AUTO S 4112000 V 4285000 AUTO S 4117000 V 2963000 AUTO [dvb-s/BrasilSat-B3-84.0W] S 3629000 H 6666000 AUTO S 3644000 V 4687000 AUTO S 3653000 V 3807000 AUTO S 3657000 V 3600000 AUTO S 3665000 V 3177000 AUTO S 3675000 V 4285000 AUTO S 3684000 V 3200000 AUTO S 3688000 V 2308000 AUTO S 3690000 V 3200000 AUTO S 3692000 V 3330000 AUTO S 3696000 H 1808000 AUTO S 3698000 V 3333000 AUTO S 3705000 H 4280000 AUTO S 3710000 H 3261000 AUTO S 3710000 V 12960000 AUTO S 3716000 H 4800000 AUTO S 3724000 V 2075000 AUTO S 3728000 H 4340000 AUTO S 3732000 V 3214000 AUTO S 3736000 H 4285000 AUTO S 3738000 V 4708000 AUTO S 3745000 H 4300000 AUTO S 3751000 H 3565000 AUTO S 3754000 V 5000000 AUTO S 3757000 H 3565000 AUTO S 3764000 H 4285000 AUTO S 3768000 V 8000000 AUTO S 3770000 H 3333000 AUTO S 3774000 H 3330000 AUTO S 3778000 V 6850000 AUTO S 3786000 V 4286000 AUTO S 3790000 H 10444000 AUTO S 3791000 V 3330000 AUTO S 3800000 H 3255000 AUTO S 3805000 V 2662000 AUTO S 3824000 H 3002000 AUTO S 3829000 V 4340000 AUTO S 3845000 H 10127000 AUTO S 3852000 V 3806000 AUTO S 3855000 H 4000000 AUTO S 3858000 V 4288000 AUTO S 3866000 H 4425000 AUTO S 3871000 H 4435000 AUTO S 3877000 H 4450000 AUTO S 3883000 H 4278000 AUTO S 3889000 H 4440000 AUTO S 3895000 H 4430000 AUTO S 3906000 H 3928000 AUTO S 3910000 H 3616000 AUTO S 3911000 V 3255000 AUTO S 3916000 H 3255000 AUTO S 3923000 V 1808000 AUTO S 3926000 H 4000000 AUTO S 3927000 V 3255000 AUTO S 3931000 H 4000000 AUTO S 3932000 V 3255000 AUTO S 3936000 H 3255000 AUTO S 3936000 V 3255000 AUTO S 3940000 V 3255000 AUTO S 3943000 V 2460000 AUTO S 3949000 V 4340000 AUTO S 3955000 V 4340000 AUTO S 3970000 V 4445000 AUTO S 3985000 V 3300000 AUTO S 3989000 V 2666000 AUTO S 3996000 V 2300000 AUTO S 4054000 V 1287000 AUTO S 4064000 H 3300000 AUTO S 4068000 H 2600000 AUTO S 4070000 V 2964000 AUTO S 4075000 V 4444000 AUTO S 4087000 H 17200000 AUTO S 4121000 H 2500000 AUTO S 4126000 H 4000000 AUTO S 4132000 V 2532000 AUTO S 4136000 H 2142000 AUTO S 4144000 H 2734000 AUTO S 4155000 V 3255000 AUTO S 4167000 H 3255000 AUTO S 4169000 V 8140000 AUTO S 4171000 H 2170000 AUTO S 4176000 V 3515000 AUTO [dvb-s/BrasilSat-B4-70.0W] S 3628000 H 3000000 AUTO S 3631000 H 4687000 AUTO S 3637000 H 2228000 AUTO S 3640000 H 3263000 AUTO S 3644000 V 3214000 AUTO S 3645000 H 3520000 AUTO S 3650000 H 4285000 AUTO S 3650000 V 4400000 AUTO S 3662000 V 4606000 AUTO S 3665000 H 4700000 AUTO S 3672000 H 4713000 AUTO S 3672000 V 8454000 AUTO S 3680000 H 6000000 AUTO S 3685000 V 4500000 AUTO S 3688000 H 6000000 AUTO S 3695000 H 3598000 AUTO S 3700000 V 9123000 AUTO S 3708000 V 3928000 AUTO S 3714000 V 4400000 AUTO S 3752000 V 6220000 AUTO S 3820000 V 27500000 AUTO S 3874000 V 5926000 AUTO S 3900000 V 27500000 AUTO S 3940000 V 27500000 AUTO S 3945000 H 3214000 AUTO S 3951000 H 3214000 AUTO S 3955000 H 4400000 AUTO S 3964000 H 1875000 AUTO S 3965000 V 2930000 AUTO S 3973000 V 4338000 AUTO S 3979000 V 3617000 AUTO S 3983000 V 1630000 AUTO S 3985000 H 2170000 AUTO S 3997000 V 2300000 AUTO S 4010000 H 13021000 AUTO S 4047000 V 7143000 AUTO [dvb-s/Chinastar1_C-87.5E] S 3734000 H 5925000 3/4 S 4076000 H 2532000 3/4 S 4081000 H 4687000 3/4 [dvb-s/Estrela-do-Sul-63.0W] S 11543000 V 10410000 AUTO S 11577000 V 3124000 AUTO S 11582000 V 3124000 AUTO S 11598000 V 3124000 AUTO S 11603000 V 3124000 AUTO S 11610000 V 3124000 AUTO S 11640000 V 18100000 AUTO S 11795000 V 4444000 AUTO S 11803000 V 4444000 AUTO S 11817000 V 6666000 AUTO S 11830000 V 6000000 AUTO S 11845000 V 4444000 AUTO S 11861000 V 2964000 AUTO S 11871000 V 2000000 AUTO S 11875000 V 3333000 AUTO S 11879000 V 2964000 AUTO S 11888000 V 2392000 AUTO S 11892000 V 2964000 AUTO S 11898000 V 2480000 AUTO S 11903000 V 2362000 AUTO S 11958000 H 4444000 AUTO S 11982000 H 8888000 AUTO S 11987000 H 3330000 AUTO S 12054000 H 26660000 AUTO [dvb-s/Eurobird1-28.5E] S 11224000 V 27500000 2/3 S 11527000 V 27500000 2/3 S 11623000 H 27500000 2/3 [dvb-s/Eurobird9-9.0E] S 11727000 V 27500000 5/6 S 11747000 H 27500000 3/4 S 11766000 V 27500000 5/6 S 11785000 H 27500000 3/4 S 11804000 V 27500000 3/4 S 11823000 H 27500000 3/4 S 11843000 V 27500000 3/4 S 11881000 V 26700000 3/4 S 11919000 V 27500000 5/6 S 11938000 H 27500000 3/4 S 11977000 H 27500000 3/4 S 11996000 V 27500000 3/4 S 12054000 H 27500000 3/4 S 12092000 H 27500000 3/4 [dvb-s/EutelsatW2-16E] S 10957000 H 2821000 AUTO S 10968000 H 6400000 AUTO S 10972000 V 27500000 AUTO S 10976000 H 6400000 AUTO S 10989000 H 6400000 AUTO S 10997000 H 6400000 AUTO S 11005000 H 6400000 AUTO S 11011000 V 27500000 AUTO S 11015000 H 6400000 AUTO S 11025000 H 2894000 AUTO S 11046000 H 10555000 AUTO S 11057000 H 3327000 AUTO S 11061000 H 5722000 AUTO S 11078000 H 5208000 AUTO S 11092000 V 32000000 AUTO S 11094000 H 2734000 AUTO S 11132000 V 14185000 AUTO S 11178000 V 27500000 AUTO S 11192000 H 2667000 AUTO S 11267000 H 2170000 AUTO S 11276000 H 11100000 AUTO S 11294000 H 13333000 AUTO S 11304000 V 30000000 AUTO S 11324000 H 27500000 AUTO S 11428000 V 30000000 AUTO S 11449000 H 27500000 AUTO S 11471000 V 29950000 AUTO S 11492000 H 29950000 AUTO S 11513000 V 29950000 AUTO S 11534000 H 30000000 AUTO S 11554000 V 30000000 AUTO S 11575000 H 30000000 AUTO S 11594000 V 28800000 AUTO S 11617000 H 29950000 AUTO S 11634000 V 17578000 AUTO S 11658000 H 30000000 AUTO S 11659000 V 17578000 AUTO S 11682000 V 14468000 AUTO S 12538000 V 4340000 AUTO S 12549000 V 2894000 AUTO S 12555000 H 5632000 AUTO S 12557000 V 2156000 AUTO S 12562000 H 5632000 AUTO S 12563000 V 2222000 AUTO S 12568000 H 3703000 AUTO S 12625000 V 4444000 AUTO S 12633000 V 4883000 AUTO S 12642000 V 3418000 AUTO S 12650000 H 15000000 AUTO S 12656000 V 4883000 AUTO S 12677000 V 6111000 AUTO S 12683000 H 2894000 AUTO S 12703000 H 2748000 AUTO S 12716000 H 6000000 AUTO S 12723000 H 3000000 AUTO S 12733000 V 16277000 AUTO [dvb-s/Express-3A-11.0W] S 3675000 V 29623000 AUTO [dvb-s/ExpressAM1-40.0E] S 10967000 V 20000000 AUTO S 10995000 V 20000000 AUTO S 11097000 H 4000000 AUTO [dvb-s/ExpressAM2-80.0E] S 3525000 V 31106000 3/4 S 3558000 V 3215000 3/4 S 3562000 V 3225000 3/4 S 3625000 V 3000000 3/4 S 3675000 V 33483000 7/8 S 3929000 H 8705000 3/4 S 4147000 V 27500000 3/4 S 4175000 V 6510000 3/4 S 10973000 V 4444000 AUTO S 10991000 V 4444000 AUTO S 11044000 H 44948000 AUTO S 11081000 V 5064000 AUTO S 11088000 V 4548000 AUTO S 11191000 H 3255000 AUTO S 11462000 V 3200000 AUTO S 11478000 H 4400000 AUTO S 11544000 V 44950000 AUTO S 11606000 V 44948000 AUTO S 11650000 V 3500000 AUTO [dvb-s/ExpressAM22-53.0E] S 10974000 H 8150000 3/4 S 11031000 H 3750000 3/4 S 11044000 V 44950000 3/4 S 11096000 V 6400000 3/4 S 11124000 V 7593000 3/4 S 11161000 V 5785000 3/4 [dvb-s/Galaxy10R-123W] S 11720000 V 27692000 AUTO S 11732000 H 13240000 AUTO S 11800000 V 26657000 AUTO S 11805000 H 4580000 AUTO S 11966000 V 13021000 AUTO S 12104000 V 2222000 AUTO S 12114000 V 4444000 AUTO [dvb-s/Galaxy11-91W] S 10964000 V 19850000 AUTO S 10994000 V 20000000 AUTO S 11024000 V 20000000 AUTO S 11806000 V 3979000 AUTO S 11815000 V 3979000 AUTO S 11825000 V 6111000 AUTO S 11925000 V 3979000 AUTO S 11930000 V 3979000 AUTO S 11935000 V 3979000 AUTO S 11940000 V 3979000 AUTO S 11945000 V 3979000 AUTO S 11950000 H 3979000 AUTO S 11950000 V 3979000 AUTO S 11955000 H 3979000 AUTO S 11955000 V 3979000 AUTO S 11960000 H 3979000 AUTO S 11965000 H 3979000 AUTO S 11965000 V 3979000 AUTO S 11970000 H 3979000 AUTO S 11970000 V 3979000 AUTO S 11975000 H 3979000 AUTO S 11975000 V 3979000 AUTO S 11980000 V 3979000 AUTO S 11985000 H 3979000 AUTO S 11985000 V 3979000 AUTO S 11990000 H 3979000 AUTO S 11990000 V 3979000 AUTO S 11995000 H 3979000 AUTO S 11995000 V 3979000 AUTO S 12000000 H 3979000 AUTO S 12005000 V 3979000 AUTO S 12010000 H 3979000 AUTO S 12010000 V 3979000 AUTO S 12015000 H 3979000 AUTO S 12015000 V 3979000 AUTO S 12020000 V 3979000 AUTO S 12025000 V 3979000 AUTO S 12030000 V 3979000 AUTO S 12035000 V 3979000 AUTO S 12066000 H 5632000 AUTO S 12075000 H 3979000 AUTO S 12083000 H 5632000 AUTO S 12086000 V 6144000 AUTO S 12096000 V 6144000 AUTO S 12104000 V 6144000 AUTO S 12114000 V 6144000 AUTO [dvb-s/Galaxy25-97W] S 11789000 V 28125000 AUTO S 11836000 V 20770000 AUTO S 11867000 V 22000000 AUTO S 11874000 H 22000000 AUTO S 11898000 V 22000000 AUTO S 11936000 H 20000000 AUTO S 11966000 H 22000000 AUTO S 11991000 V 22000000 AUTO S 11999000 H 20000000 AUTO S 12053000 V 22000000 AUTO S 12084000 V 22000000 AUTO S 12090000 H 20000000 AUTO S 12115000 V 22425000 AUTO S 12146000 V 22000000 AUTO S 12152000 H 20000000 AUTO S 12177000 V 23000000 AUTO [dvb-s/Galaxy26-93W] S 11711000 V 14312000 AUTO S 11721000 V 3979000 AUTO S 11727000 V 3979000 AUTO S 11732000 V 3979000 AUTO S 11737000 H 3979000 AUTO S 11737000 V 3979000 AUTO S 11742000 V 3979000 AUTO S 11748000 V 3979000 AUTO S 11753000 V 3979000 AUTO S 11767000 V 3979000 AUTO S 11772000 H 3979000 AUTO S 11772000 V 3979000 AUTO S 11777000 V 3979000 AUTO S 11782000 V 3979000 AUTO S 11788000 V 3979000 AUTO S 11793000 V 3979000 AUTO S 11809000 V 3979000 AUTO S 11814000 V 3979000 AUTO S 11841000 H 4000000 AUTO S 11887000 V 3979000 AUTO S 11893000 V 3979000 AUTO S 11904000 H 3010000 AUTO S 11919000 V 3979000 AUTO S 11924000 V 3979000 AUTO S 11926000 H 8848000 AUTO S 11929000 V 3979000 AUTO S 11935000 V 3979000 AUTO S 11936000 H 8848000 AUTO S 11944000 H 8848000 AUTO S 11949000 V 3979000 AUTO S 11954000 V 3979000 AUTO S 11956000 H 3979000 AUTO S 11960000 V 3979000 AUTO S 11961000 H 3979000 AUTO S 11965000 V 3979000 AUTO S 11967000 H 3979000 AUTO S 11970000 V 3979000 AUTO S 11972000 H 3979000 AUTO S 11977000 H 3979000 AUTO S 12047000 V 3979000 AUTO S 12048000 H 3979000 AUTO S 12054000 H 3979000 AUTO S 12058000 V 3979000 AUTO S 12059000 H 3979000 AUTO S 12063000 V 3979000 AUTO S 12064000 H 3979000 AUTO S 12069000 H 3979000 AUTO S 12076000 V 8681000 AUTO S 12089000 V 6511000 AUTO S 12110000 H 4104000 AUTO S 12116000 H 3979000 AUTO S 12121000 H 3979000 AUTO S 12126000 H 3979000 AUTO S 12132000 H 3979000 AUTO S 12175000 V 5147000 AUTO [dvb-s/Galaxy27-129W] S 11964000 H 2920000 AUTO [dvb-s/Galaxy28-89W] S 11717000 H 4411000 AUTO S 11747000 H 6620000 AUTO S 11756000 H 6620000 AUTO S 11780000 H 29000000 AUTO S 11800000 H 27500000 AUTO S 11825000 H 4552000 AUTO S 11865000 H 3700000 AUTO S 11882000 H 4883000 AUTO S 11925000 H 3979000 AUTO S 11930000 H 3979000 AUTO S 11935000 H 3979000 AUTO S 11936000 H 6000000 AUTO S 11940000 H 3979000 AUTO S 11945000 H 3979000 AUTO S 11950000 H 3979000 AUTO S 11955000 V 19532000 AUTO S 11960000 H 28800000 AUTO S 11965000 H 3979000 AUTO S 11970000 H 3979000 AUTO S 11975000 V 3979000 AUTO S 11980000 H 3979000 AUTO S 11985000 H 3979000 AUTO S 11989000 V 6111000 AUTO S 11990000 H 3979000 AUTO S 11995000 H 3979000 AUTO S 12000000 H 28800000 AUTO S 12009000 V 6111000 AUTO S 12032000 H 6666000 AUTO S 12092000 H 2314000 AUTO S 12114000 H 14398000 AUTO S 12134000 H 4000000 AUTO S 12164000 H 3979000 AUTO S 12170000 H 3979000 AUTO S 12175000 H 3979000 AUTO S 12180000 H 3979000 AUTO S 12185000 H 3979000 AUTO S 12191000 H 3979000 AUTO S 12196000 H 3979000 AUTO [dvb-s/Galaxy3C-95W] S 11780000 H 20760000 AUTO [dvb-s/Hispasat-30.0W] S 11539000 V 24500000 5/6 S 11749000 V 3520000 AUTO S 11760000 V 3260000 AUTO S 11766000 V 4500000 AUTO S 11776000 V 2387000 AUTO S 11783000 V 1200000 AUTO S 11787000 V 2500000 AUTO S 11807000 V 6510000 AUTO S 11823000 V 2387000 AUTO S 11884000 V 27500000 AUTO S 11907000 V 2592000 AUTO S 11917000 V 5681000 AUTO S 11931000 H 27500000 3/4 S 11931000 V 2220000 AUTO S 11936000 V 5185000 AUTO S 11940000 V 1481000 AUTO S 11972000 H 27500000 AUTO S 11997000 H 4422000 AUTO S 12003000 H 5632000 AUTO S 12008000 H 6111000 AUTO S 12015000 H 3492000 AUTO S 12015000 V 27500000 3/4 S 12040000 H 5632000 AUTO S 12052000 V 27500000 AUTO S 12085000 H 5632000 AUTO S 12131000 H 27500000 AUTO S 12135000 V 4444000 AUTO S 12137000 V 3030000 AUTO S 12141000 V 3255000 AUTO S 12146000 V 4200000 AUTO S 12156000 V 2222000 AUTO S 12158000 V 2348000 AUTO S 12163000 V 3030000 AUTO S 12168000 V 5240000 AUTO S 12172000 H 27500000 AUTO S 12175000 V 4500000 AUTO S 12182000 V 3340000 AUTO S 12188000 V 2583000 AUTO S 12192000 V 2593000 AUTO S 12567000 H 19850000 3/4 [dvb-s/Hotbird-13.0E] S 10719000 V 27500000 3/4 S 10723000 H 29900000 3/4 S 10757000 V 27500000 3/4 S 10775000 H 28000000 3/4 S 10795000 V 27500000 3/4 S 10834000 V 27500000 3/4 S 10853000 H 27500000 3/4 S 10872000 V 27500000 3/4 S 10892000 H 27500000 3/4 S 10910000 V 27500000 3/4 S 10930000 H 27500000 3/4 S 10949000 V 27500000 3/4 S 10971000 H 27500000 3/4 S 10992000 V 27500000 2/3 S 11013000 H 27500000 3/4 S 11034000 V 27500000 3/4 S 11054000 H 27500000 5/6 S 11075000 V 27500000 3/4 S 11095000 H 28000000 3/4 S 11117000 V 27500000 3/4 S 11137000 H 27500000 3/4 S 11158000 V 27500000 3/4 S 11178000 H 27500000 3/4 S 11200000 V 27500000 5/6 S 11219000 H 27500000 3/4 S 11242000 V 27500000 3/4 S 11278000 V 27500000 3/4 S 11295000 H 27500000 3/4 S 11334000 H 27500000 2/3 S 11355000 V 27500000 3/4 S 11373000 H 27500000 2/3 S 11393000 V 27500000 3/4 S 11411000 H 27500000 5/6 S 11432000 V 27500000 2/3 S 11470000 V 27500000 5/6 S 11488000 H 27500000 3/4 S 11526000 H 27500000 3/4 S 11541000 V 22000000 5/6 S 11565000 H 27500000 3/4 S 11585000 V 27500000 3/4 S 11604000 H 27500000 5/6 S 11623000 V 27500000 3/4 S 11645000 H 27500000 3/4 S 11662000 V 27500000 3/4 S 11677000 H 27500000 3/4 S 11727000 V 27500000 3/4 S 11747000 H 27500000 3/4 S 11765000 V 27500000 2/3 S 11785000 H 27500000 3/4 S 11804000 V 27500000 2/3 S 11823000 H 27500000 3/4 S 11842000 V 27500000 3/4 S 11861000 H 27500000 3/4 S 11880000 V 27500000 3/4 S 11900000 H 27500000 3/4 S 11919000 V 27500000 2/3 S 11938000 H 27500000 3/4 S 11958000 V 27500000 3/4 S 11976000 H 27500000 3/4 S 12015000 H 27500000 3/4 S 12034000 V 27500000 3/4 S 12054000 H 27500000 3/4 S 12072000 V 27500000 3/4 S 12092000 H 27500000 3/4 S 12111000 V 27500000 3/4 S 12149000 V 27500000 3/4 S 12169000 H 27500000 3/4 S 12188000 V 27500000 3/4 S 12207000 H 27500000 3/4 S 12226000 V 27500000 3/4 S 12245000 H 27500000 3/4 S 12264000 V 27500000 3/4 S 12284000 H 27500000 3/4 S 12302000 V 27500000 3/4 S 12322000 H 27500000 3/4 S 12341000 V 27500000 3/4 S 12360000 H 27500000 3/4 S 12379000 V 27500000 3/4 S 12398000 H 27500000 3/4 S 12418000 V 27500000 3/4 S 12437000 H 27500000 3/4 S 12475000 H 27500000 3/4 S 12519000 V 27500000 3/4 S 12539000 H 27500000 3/4 S 12558000 V 27500000 3/4 S 12577000 H 27500000 3/4 S 12596000 V 27500000 3/4 S 12616000 H 27500000 3/4 S 12635000 V 27500000 3/4 S 12654000 H 27500000 3/4 S 12673000 V 27500000 3/4 S 12692000 H 27500000 3/4 S 12713000 V 27500000 3/4 S 12731000 H 27500000 3/4 [dvb-s/IA5-97W] S 11789000 V 25000000 AUTO S 11836000 V 20765000 AUTO S 11867000 V 22000000 AUTO S 11874000 H 22000000 AUTO S 11898000 V 22000000 AUTO S 11966000 H 22000000 AUTO S 11991000 V 22000000 AUTO S 12053000 V 22000000 AUTO S 12084000 V 22000000 AUTO S 12090000 H 20000000 AUTO S 12115000 V 22425000 AUTO S 12122000 H 22000000 AUTO S 12146000 V 22000000 AUTO S 12152000 H 20000000 AUTO S 12177000 V 23000000 AUTO [dvb-s/IA6-93W] S 11711000 V 14312000 AUTO S 11721000 V 3979000 AUTO S 11727000 V 3979000 AUTO S 11732000 V 3979000 AUTO S 11737000 H 3979000 AUTO S 11737000 V 3979000 AUTO S 11742000 V 3979000 AUTO S 11748000 V 3979000 AUTO S 11753000 V 3979000 AUTO S 11767000 V 3979000 AUTO S 11772000 H 3979000 AUTO S 11772000 V 3979000 AUTO S 11777000 V 3979000 AUTO S 11782000 V 3979000 AUTO S 11788000 V 3979000 AUTO S 11793000 V 3979000 AUTO S 11809000 V 3979000 AUTO S 11814000 V 3979000 AUTO S 11827000 V 8429000 AUTO S 11836000 H 7179000 AUTO S 11841000 H 4000000 AUTO S 11865000 V 3516000 AUTO S 11887000 V 3979000 AUTO S 11893000 V 3979000 AUTO S 11904000 V 5000000 AUTO S 11919000 V 3979000 AUTO S 11924000 V 3979000 AUTO S 11926000 H 8848000 AUTO S 11929000 V 3979000 AUTO S 11935000 V 3979000 AUTO S 11936000 H 8848000 AUTO S 11944000 H 8848000 AUTO S 11949000 V 3979000 AUTO S 11954000 V 3979000 AUTO S 11956000 H 3979000 AUTO S 11960000 V 3979000 AUTO S 11961000 H 3979000 AUTO S 11965000 V 3979000 AUTO S 11967000 H 3979000 AUTO S 11970000 V 3979000 AUTO S 11972000 H 3979000 AUTO S 11977000 H 3979000 AUTO S 12047000 V 3979000 AUTO S 12048000 H 3979000 AUTO S 12054000 H 3979000 AUTO S 12058000 V 3979000 AUTO S 12059000 H 3979000 AUTO S 12063000 V 3979000 AUTO S 12064000 H 3979000 AUTO S 12069000 H 3979000 AUTO S 12076000 V 8679000 AUTO S 12089000 V 6511000 AUTO S 12110000 H 4104000 AUTO S 12116000 H 3979000 AUTO S 12121000 H 3979000 AUTO S 12126000 H 3979000 AUTO S 12132000 H 3979000 AUTO S 12175000 V 5147000 AUTO [dvb-s/IA7-129W] S 11989000 H 2821000 AUTO [dvb-s/IA8-89W] S 11780000 H 29000000 AUTO S 11925000 H 3979000 AUTO S 11930000 H 3979000 AUTO S 11935000 H 3979000 AUTO S 11940000 H 3979000 AUTO S 11945000 H 3979000 AUTO S 11945000 V 3979000 AUTO S 11950000 H 3979000 AUTO S 11950000 V 3979000 AUTO S 11955000 H 3979000 AUTO S 11955000 V 3979000 AUTO S 11960000 V 3979000 AUTO S 11965000 H 3979000 AUTO S 11965000 V 3979000 AUTO S 11970000 H 3979000 AUTO S 11970000 V 3979000 AUTO S 11975000 H 3979000 AUTO S 11975000 V 3979000 AUTO S 11980000 H 3979000 AUTO S 11985000 H 3979000 AUTO S 11989000 V 6111000 AUTO S 11990000 H 3979000 AUTO S 11995000 H 3979000 AUTO S 12009000 V 6111000 AUTO S 12164000 H 3979000 AUTO S 12170000 H 3979000 AUTO S 12175000 H 3979000 AUTO S 12180000 H 3979000 AUTO S 12185000 H 3979000 AUTO S 12191000 H 3979000 AUTO S 12196000 H 3979000 AUTO [dvb-s/Insat2E_C-83.0E] S 3521000 V 8640000 3/4 S 3537000 V 10800000 3/4 S 3550000 V 3255000 3/4 S 3559000 V 3366000 3/4 S 3581000 V 3255000 3/4 S 3593000 V 8680000 3/4 S 3593000 V 9629000 3/4 S 3643000 V 19531000 3/4 S 3678000 V 5926000 3/4 S 3689000 V 2893000 3/4 S 3696000 V 6111000 3/4 S 3760000 V 6500000 3/4 S 3774000 V 13021000 3/4 S 3794000 V 3500000 3/5 S 3815000 V 6000000 3/4 S 3845000 V 26043000 3/4 S 3914000 V 3000000 3/4 S 3919000 V 3000000 3/4 S 3923000 V 3000000 3/4 S 3934000 V 13021000 3/4 S 3961000 V 6656000 3/4 S 3974000 V 13333000 3/4 S 4010000 V 19531000 3/4 S 4031000 V 7440000 7/8 S 4042000 V 7420000 7/8 S 4050000 V 5084000 7/8 S 4070000 V 5000000 3/4 S 4091000 V 9230000 7/8 S 4100000 V 4700000 3/4 [dvb-s/Insat3A_C-93.5E] S 3732000 V 6250000 3/4 S 3740000 V 6250000 3/4 S 3750000 V 6250000 3/4 S 3759000 V 6250000 3/4 S 3772000 V 6250000 3/4 S 3782000 V 6250000 3/4 S 3791000 V 8600000 3/4 S 3812000 V 6250000 3/4 S 3820000 V 6250000 3/4 S 3831000 V 8600000 3/4 S 3932000 V 6250000 3/4 S 3940000 V 6250000 3/4 S 3950000 V 6250000 3/4 S 3958000 V 6250000 3/4 S 4092000 V 6250000 3/4 S 4101000 V 6250000 3/4 S 4109000 V 4250000 3/4 S 4132000 V 4000000 3/4 S 4136000 V 2000000 3/4 S 4141000 V 5150000 3/4 [dvb-s/Insat4A_C-83.0E] S 3725000 H 26665000 3/4 S 3756000 H 13333000 3/4 S 3777000 H 10900000 3/4 S 3805000 H 28500000 7/8 S 3841000 H 6920000 3/4 S 3853000 H 3265000 3/4 S 3857000 H 3462000 3/4 S 3874000 H 3403000 3/4 S 3892000 H 3300000 3/4 S 3898000 H 6800000 3/4 S 3910000 H 3600000 7/8 S 3923000 H 13000000 3/4 S 3949000 H 3225000 3/4 S 3958000 H 9500000 7/8 S 3976000 H 3200000 3/4 S 4004000 H 22220000 5/6 S 4040000 H 7500000 7/8 S 4054000 H 13230000 3/4 S 4072000 H 6500000 3/4 S 4078000 H 3250000 3/4 S 4087000 H 3300000 3/4 S 4091000 H 3000000 3/4 S 4100000 H 4750000 3/4 S 4115000 H 5555000 3/4 S 4134000 H 10600000 3/4 S 4151000 H 6500000 3/4 S 4161000 H 6500000 3/4 S 4170000 H 6500000 3/4 S 4180000 H 3233000 3/4 [dvb-s/Insat4B_C-93.5E] S 3725000 H 27500000 3/4 S 3750000 H 4250000 3/4 S 3762000 H 4250000 3/4 S 3768000 H 4250000 3/4 S 3774000 H 4250000 3/4 S 3802000 H 4250000 3/4 S 3808000 H 4250000 3/4 S 3822000 H 4250000 3/4 S 3832000 H 6250000 3/4 S 3841000 H 6250000 3/4 S 3885000 H 28000000 3/4 S 3925000 H 27500000 3/4 S 3950000 H 4440000 3/4 S 4005000 H 25422000 7/8 S 4045000 H 28000000 3/4 [dvb-s/Intel4-72.0E] S 11533000 V 4220000 AUTO S 11638000 H 5632000 AUTO S 12518000 V 8232000 AUTO S 12526000 V 3266000 AUTO [dvb-s/Intel904-60.0E] S 11003000 H 2975000 AUTO S 11011000 H 2975000 AUTO S 11015000 H 2975000 AUTO S 11093000 V 3980000 AUTO S 11101000 V 4105000 AUTO S 11142000 H 2963000 AUTO S 11152000 H 2963000 AUTO S 11157000 H 2963000 AUTO S 11515000 V 7300000 AUTO S 11635000 V 29700000 AUTO S 11675000 V 29700000 AUTO [dvb-s/Intelsat-1002-1.0W] S 4175000 V 28000000 AUTO S 4180000 H 21050000 AUTO S 11093000 H 19191000 7/8 S 11166000 V 1450000 7/8 S 11182000 V 3100000 7/8 S 11606000 H 13356000 7/8 S 12527000 H 27500000 3/4 S 12563000 H 27500000 3/4 S 12563000 V 27500000 3/4 S 12607000 H 27500000 3/4 S 12607000 V 27500000 3/4 S 12643000 H 27500000 3/4 S 12643000 V 27500000 3/4 S 12687000 H 27500000 3/4 S 12687000 V 27500000 3/4 S 12718000 V 18400000 3/4 S 12723000 H 27500000 3/4 S 12735000 V 8800000 5/6 [dvb-s/Intelsat-11-43.0W] S 3944000 H 5945000 AUTO [dvb-s/Intelsat-1R-45.0W] S 3742000 V 4444000 AUTO S 3759000 V 2941000 AUTO S 3774000 V 8820000 AUTO S 3780000 V 2941000 AUTO S 3785000 V 4409000 AUTO S 3854000 H 2370000 AUTO S 3868000 V 10075000 AUTO S 3869000 H 3515000 AUTO S 3882000 V 4410000 AUTO S 3892000 V 6110000 AUTO S 3899000 V 6611000 AUTO S 3910000 V 4292000 AUTO S 3975000 V 3310000 AUTO S 3985000 V 3310000 AUTO S 3991000 V 4044000 AUTO S 4040000 V 4347000 AUTO S 4071000 V 2615000 AUTO S 4096000 H 8102000 AUTO S 4104000 V 14450000 AUTO S 4121000 H 3510000 AUTO S 4128000 V 3310000 AUTO S 4132000 H 5749000 AUTO S 4133000 V 3255000 AUTO S 4135000 H 26600000 AUTO S 4171000 V 4410000 AUTO S 4186000 V 2000000 AUTO S 4192000 H 2075000 AUTO S 11705000 V 4440000 AUTO S 11715000 V 5500000 AUTO S 11718000 H 24667000 AUTO S 11722000 V 3000000 AUTO S 11728000 V 5057000 AUTO S 11737000 V 5057000 AUTO S 11746000 V 6900000 AUTO S 11788000 V 10000000 AUTO S 11808000 H 4779000 AUTO S 11833000 H 17360000 AUTO S 11856000 V 3000000 AUTO S 11873000 H 6000000 AUTO S 11893000 H 6620000 AUTO S 11930000 V 11790000 AUTO [dvb-s/Intelsat-3R-43.0W] S 3736000 H 29270000 AUTO S 3746000 V 21261000 AUTO S 3785000 H 30800000 AUTO S 3828000 V 4350000 AUTO S 3845000 H 30800000 AUTO S 3850000 V 28800000 AUTO S 3865000 V 6900000 AUTO S 3867000 V 6429000 AUTO S 3872000 H 6620000 AUTO S 3888000 H 7813000 AUTO S 3891000 V 6111000 AUTO S 3901000 V 6620000 AUTO S 3910000 V 5632000 AUTO S 3919000 V 6620000 AUTO S 3930000 H 2812000 AUTO S 3935000 V 17360000 AUTO S 3936000 H 3310000 AUTO S 3942000 V 1200000 AUTO S 3946000 V 2592000 AUTO S 3958000 V 6500000 AUTO S 3980000 V 3500000 AUTO S 3988000 V 4070000 AUTO S 3994000 H 21090000 AUTO S 4040000 H 30800000 AUTO S 4083000 V 6599000 AUTO S 4106000 H 29270000 AUTO S 4106000 V 26470000 AUTO S 4150000 H 24570000 AUTO S 11705000 H 3700000 AUTO S 11711000 H 4687000 AUTO S 11745000 H 3111000 AUTO S 11754000 H 3109000 AUTO [dvb-s/Intelsat-6B-43.0W] S 10720000 H 30000000 AUTO S 10720000 V 30000000 AUTO S 10800000 H 30000000 AUTO S 10800000 V 30000000 AUTO S 10882000 H 30000000 AUTO S 10882000 V 30000000 AUTO S 10970000 H 30000000 AUTO S 10970000 V 30000000 AUTO S 11050000 H 30000000 AUTO S 11050000 V 30000000 AUTO S 11130000 H 30000000 AUTO S 11130000 V 30000000 AUTO S 11382000 H 30000000 AUTO S 11382000 V 30000000 AUTO [dvb-s/Intelsat-705-50.0W] S 3838000 H 7053000 AUTO S 3911000 V 3617000 AUTO S 3917000 V 4087000 AUTO S 4126000 H 6111000 AUTO [dvb-s/Intelsat-707-53.0W] S 3820000 V 3255000 AUTO S 11483000 V 5333000 AUTO [dvb-s/Intelsat-805-55.5W] S 3431000 H 3500000 AUTO S 3442000 H 3000000 AUTO S 3446000 H 3200000 AUTO S 3451000 H 4444000 AUTO S 3467000 V 4340000 AUTO S 3478000 V 5632000 AUTO S 3522000 H 30000000 AUTO S 3549000 V 6510000 AUTO S 3572000 V 11800000 AUTO S 3590000 V 10127000 AUTO S 3667000 H 3300000 AUTO S 3670000 H 1374000 AUTO S 3675000 V 2660000 AUTO S 3677000 H 4232000 AUTO S 3685000 V 5632000 AUTO S 3698000 V 3600000 AUTO S 3715000 H 8890000 AUTO S 3717000 V 11574000 AUTO S 3723000 H 3000000 AUTO S 3727000 H 3000000 AUTO S 3727000 V 3000000 AUTO S 3735000 V 8680000 AUTO S 3737000 H 1809000 AUTO S 3750000 V 5632000 AUTO S 3751000 H 5632000 AUTO S 3759000 V 4167000 AUTO S 3762000 H 3662000 AUTO S 3767000 H 4427000 AUTO S 3777000 H 7400000 AUTO S 3792000 H 2244000 AUTO S 3815000 H 26667000 AUTO S 3850000 H 20000000 AUTO S 3900000 H 3612000 AUTO S 3914000 V 1809000 AUTO S 3918000 V 4400000 AUTO S 3929000 H 2941000 AUTO S 3932000 V 3255000 AUTO S 3936000 H 3255000 AUTO S 3940000 H 2575000 AUTO S 3980000 V 19510000 AUTO S 4000000 V 5200000 AUTO S 4006000 V 3690000 AUTO S 4010000 V 6111000 AUTO S 4027000 V 2000000 AUTO S 4030000 V 6111000 AUTO S 4055000 V 21703000 AUTO S 4080000 V 4340000 AUTO S 4084000 H 10317000 AUTO S 4089000 V 5540000 AUTO S 4093000 H 2540000 AUTO S 4096000 H 5247000 AUTO S 4104000 H 5062000 AUTO S 4111000 H 3333000 AUTO S 4119000 V 1631000 AUTO S 4127000 H 2532000 AUTO S 4127000 V 2000000 AUTO S 4135000 H 6111000 AUTO S 4140000 V 4700000 AUTO S 4147000 H 6111000 AUTO S 4152000 V 3600000 AUTO S 4158000 H 1447000 AUTO S 4171000 H 6111000 AUTO S 4177000 V 27690000 AUTO S 4195000 H 4444000 AUTO [dvb-s/Intelsat-9-58.0W] S 3720000 H 19510000 AUTO S 3720000 V 27700000 AUTO S 3760000 H 28500000 AUTO S 3760000 V 27690000 AUTO S 3787000 H 7407000 AUTO S 3794000 H 3332000 AUTO S 3800000 H 4444000 AUTO S 3800000 V 26470000 AUTO S 3807000 H 3428000 AUTO S 3815000 H 6250000 AUTO S 3840000 H 27690000 AUTO S 3840000 V 27690000 AUTO S 3880000 H 27690000 AUTO S 3880000 V 27690000 AUTO S 3905000 H 6620000 AUTO S 3911000 V 13330000 AUTO S 3915000 H 6620000 AUTO S 3924000 V 6620000 AUTO S 3925000 H 6620000 AUTO S 3925000 H 6666000 AUTO S 3934000 V 7000000 AUTO S 3935000 H 5632000 AUTO S 3960000 H 29270000 AUTO S 3960000 V 29270000 AUTO S 3986000 H 6111000 AUTO S 3995000 H 5632000 AUTO S 3996000 H 3330000 AUTO S 4005000 H 6620000 AUTO S 4015000 H 6620000 AUTO S 4040000 H 16180000 AUTO S 4080000 H 27684000 AUTO S 4080000 V 27690000 AUTO S 4107000 H 8850000 AUTO S 4120000 V 27500000 AUTO S 4122000 H 2222000 AUTO S 4125000 H 2941000 AUTO S 4131000 H 4444000 AUTO S 4137000 H 2941000 AUTO S 4144000 V 2205000 AUTO S 4146000 H 6620000 AUTO S 4147000 V 2941000 AUTO S 4151000 V 2890000 AUTO S 4155000 H 6111000 AUTO S 4155000 V 3310000 AUTO S 4157000 H 6620000 AUTO S 4160000 V 3000000 AUTO S 4166000 H 6200000 AUTO S 4170000 V 2941000 AUTO S 4173000 H 6620000 AUTO S 4174000 V 2941000 AUTO S 4175000 H 4410000 AUTO S 11670000 V 16470000 AUTO S 11852000 V 30000000 AUTO S 11895000 V 20000000 AUTO S 11913000 V 10000000 AUTO [dvb-s/Intelsat-903-34.5W] S 3895000 H 13021000 AUTO S 4004000 V 2170000 AUTO S 4045000 H 4960000 AUTO S 4178000 V 32555000 AUTO [dvb-s/Intelsat-905-24.5W] S 4060000 V 6111000 AUTO S 4070000 V 6111000 AUTO S 4162000 V 6111000 AUTO S 4171000 V 6111000 AUTO S 4181000 V 6111000 AUTO S 4194000 V 5193000 AUTO [dvb-s/Intelsat-907-27.5W] S 3732000 V 14000000 AUTO S 3743000 V 2900000 AUTO S 3873000 H 4687000 AUTO S 3935000 H 4687000 AUTO S 3938000 H 3544000 AUTO S 3943000 H 1808000 AUTO [dvb-s/Intelsat8_C-166.0E] S 3740000 H 27500000 2/3 S 3790000 V 6510000 3/4 S 3815000 V 4400000 3/4 S 3829000 H 13238000 3/4 S 3833000 V 17500000 3/4 S 3900000 H 27500000 3/4 S 3940000 H 27690000 7/8 S 3959000 V 3428000 3/4 S 4060000 H 16180000 1/2 S 4122000 V 5554000 3/4 S 4130000 V 5800000 3/4 [dvb-s/JCSat3A_C-128.0E] S 3960000 V 30000000 5/6 S 4000000 V 30000000 5/6 S 4055000 V 3332000 3/4 S 4120000 V 30000000 5/6 [dvb-s/Measat3_C-91.5E] S 3629000 V 2200000 3/4 S 3644000 H 22320000 3/4 S 3645000 V 19510000 3/4 S 3718000 V 1700000 7/8 S 3721000 V 2170000 3/4 S 3751000 V 13330000 2/3 S 3769000 V 14000000 3/4 S 3796000 V 7030000 3/4 S 3814000 V 6666000 3/4 S 3865000 V 3835000 3/4 S 3877000 V 12525000 7/8 S 3887000 V 3984000 3/4 S 3920000 V 28000000 7/8 S 4113000 V 2960000 3/4 S 4117000 V 2963000 3/4 S 4134000 V 7200000 3/4 [dvb-s/NSS-10-37.5W] S 3824000 H 1808000 AUTO S 3828000 H 2532000 AUTO S 3844000 H 4340000 AUTO S 4044000 V 3250000 AUTO S 4051000 V 4440000 AUTO S 4055000 V 2700000 AUTO S 4059000 V 3214000 AUTO S 4071000 V 3150000 AUTO S 4077000 V 3200000 AUTO [dvb-s/NSS-7-22.0W] S 3674000 V 2222000 AUTO S 3761000 V 22650000 AUTO S 3915000 H 3715000 AUTO S 3920000 H 3715000 AUTO S 3926000 H 3715000 AUTO S 3929000 V 5632000 AUTO S 3954000 V 5632000 AUTO S 3969000 H 1808000 AUTO S 3976000 H 1842000 AUTO S 4003000 H 6667000 AUTO S 4011000 H 6667000 AUTO S 4016000 H 3663000 AUTO S 4033000 V 3689000 AUTO S 4038000 V 3690000 AUTO S 4126000 H 3680000 AUTO S 11777000 H 4000000 AUTO S 11814000 H 5630000 AUTO S 11825000 H 5904000 AUTO S 11860000 H 35000000 AUTO S 11921000 H 35000000 AUTO S 12049000 H 6500000 AUTO S 12162000 H 6510000 AUTO [dvb-s/NSS-806-40.5W] S 3500000 H 6666000 AUTO S 3516000 H 5632000 AUTO S 3516000 V 5632000 AUTO S 3600000 H 29185000 AUTO S 3600000 V 25185000 AUTO S 3630000 H 5632000 AUTO S 3637000 H 2963000 AUTO S 3641000 V 2666000 AUTO S 3644000 H 2534000 AUTO S 3646000 V 3978000 AUTO S 3648000 H 2000000 AUTO S 3652000 H 4000000 AUTO S 3653000 V 5924000 AUTO S 3660000 H 4350000 AUTO S 3660000 V 2540000 AUTO S 3664000 V 2170000 AUTO S 3667000 V 3340000 AUTO S 3670000 H 2960000 AUTO S 3673000 V 3000000 AUTO S 3676000 H 5900000 AUTO S 3676000 V 3000000 AUTO S 3679000 V 2220000 AUTO S 3685000 H 6500000 AUTO S 3688000 V 6666000 AUTO S 3693000 V 4441000 AUTO S 3695000 H 2963000 AUTO S 3695000 V 2220000 AUTO S 3725000 H 26669000 AUTO S 3725000 V 26667000 AUTO S 3755000 H 20000000 AUTO S 3758000 V 26667000 AUTO S 3774000 H 6670000 AUTO S 3803000 H 27500000 AUTO S 3803000 V 26860000 AUTO S 3832000 V 13310000 AUTO S 3837000 H 19510000 AUTO S 3853000 H 5900000 AUTO S 3859000 H 2600000 AUTO S 3860000 V 2713000 AUTO S 3868000 V 2100000 AUTO S 3878000 V 22117000 AUTO S 3898000 V 4195000 AUTO S 3920000 V 20000000 AUTO S 3923000 H 27500000 AUTO S 3938000 V 4785000 AUTO S 3960000 V 3170000 AUTO S 3961000 H 1481000 AUTO S 3965000 H 3332000 AUTO S 3965000 V 2540000 AUTO S 3972000 H 3330000 AUTO S 3978000 H 3978000 AUTO S 3982000 V 17800000 AUTO S 3983000 H 2222000 AUTO S 3986000 H 3179000 AUTO S 3990000 V 4195000 AUTO S 3991000 H 3578000 AUTO S 4000000 H 2450000 AUTO S 4003000 H 2450000 AUTO S 4003000 H 6666000 AUTO S 4005000 H 2450000 AUTO S 4009000 H 2450000 AUTO S 4009000 V 6666000 AUTO S 4016000 V 5712000 AUTO S 4022000 V 3800000 AUTO S 4024000 H 16030000 AUTO S 4042000 H 8680000 AUTO S 4043000 V 7440000 AUTO S 4052000 V 2459000 AUTO S 4053000 V 6666000 AUTO S 4055000 H 7233000 AUTO S 4063000 V 8500000 AUTO S 4065000 H 8400000 AUTO S 4071000 V 3333000 AUTO S 4082000 H 6666000 AUTO S 4082000 V 6510000 AUTO S 4090000 H 6620000 AUTO S 4090000 V 2515000 AUTO S 4093000 V 2887000 AUTO S 4100000 H 6654000 AUTO S 4100000 V 6111000 AUTO S 4107000 V 2100000 AUTO S 4109000 H 6654000 AUTO S 4112000 V 2000000 AUTO S 4120000 V 2960000 AUTO S 4122000 V 1860000 AUTO S 4124000 H 3480000 AUTO S 4126000 V 2531000 AUTO S 4127000 H 3000000 AUTO S 4130000 V 2000000 AUTO S 4132000 H 2480000 AUTO S 4132000 V 2800000 AUTO S 4135000 V 2000000 AUTO S 4137000 H 4400000 AUTO S 4139000 V 2220000 AUTO S 4142000 H 2222000 AUTO S 4143000 V 4800000 AUTO S 4146000 H 2571000 AUTO S 4152000 V 3280000 AUTO S 4162000 H 7200000 AUTO S 4168000 H 2400000 AUTO S 4170000 H 2222000 AUTO S 4177000 H 4391000 AUTO S 4184000 H 6142000 AUTO S 4194000 H 6660000 AUTO S 11921000 H 35000000 AUTO [dvb-s/Nahuel-1-71.8W] S 11654000 V 4170000 AUTO S 11673000 V 4000000 AUTO S 11680000 V 3335000 AUTO S 11873000 H 8000000 AUTO S 11874000 V 4000000 AUTO S 11997000 V 8500000 AUTO S 12116000 H 14396000 AUTO S 12136000 V 2960000 AUTO [dvb-s/Nilesat101+102-7.0W] S 10719000 V 27500000 3/4 S 10723000 H 27500000 3/4 S 10758000 V 27500000 3/4 S 10775000 H 27500000 3/4 S 10796000 V 27500000 3/4 S 10892000 H 27500000 3/4 S 10911000 V 27500000 3/4 S 10930000 H 27500000 3/4 S 11317000 V 27500000 3/4 S 11747000 V 27500000 3/4 S 11766000 H 27500000 3/4 S 11785000 V 27500000 3/4 S 11804000 H 27500000 3/4 S 11823000 V 27500000 3/4 S 11843000 H 27500000 3/4 S 11862000 V 27500000 3/4 S 11881000 H 27500000 3/4 S 11900000 V 27500000 3/4 S 11919000 H 27500000 3/4 S 11938000 V 27500000 3/4 S 11958000 H 27500000 3/4 S 11977000 V 27600000 5/6 S 11996000 H 27500000 3/4 S 12015000 V 27500000 3/4 S 12034000 H 27500000 3/4 S 12054000 V 27500000 3/4 S 12073000 H 27500000 3/4 S 12130000 V 27500000 3/4 S 12149000 H 27500000 3/4 S 12207000 V 27500000 3/4 S 12226000 H 27500000 3/4 S 12284000 V 27500000 3/4 S 12303000 H 27500000 3/4 S 12341000 V 27500000 3/4 S 12360000 H 27500000 3/4 S 12380000 V 27500000 3/4 S 12399000 H 27500000 3/4 S 12418000 V 27500000 3/4 S 12476000 H 27500000 3/4 [dvb-s/OptusC1-156E] S 12278000 H 30000000 2/3 S 12305000 H 30000000 2/3 S 12358000 H 27000000 2/3 S 12398000 H 27800000 3/4 S 12407000 V 30000000 2/3 S 12438000 H 27800000 3/4 S 12487000 V 27800000 3/4 S 12501000 H 29473000 3/4 S 12518000 H 27800000 3/4 S 12527000 V 30000000 3/4 S 12558000 H 27800000 3/4 S 12564000 H 29473000 3/4 S 12567000 V 27800000 2/3 S 12598000 H 27800000 3/4 S 12607000 V 29473000 3/4 S 12638000 H 27800000 3/4 S 12689000 H 27800000 3/4 S 12720000 V 30000000 3/4 [dvb-s/PAS-43.0W] S 12578000 H 19850000 3/4 S 12584000 V 27500000 3/4 S 12606000 H 6616000 3/4 S 12665000 H 19850000 7/8 [dvb-s/PalapaC2_C-113.0E] S 3745000 H 3125000 3/4 S 3758000 H 4470000 3/4 S 3765000 H 5555000 3/4 S 3774000 H 6520000 3/4 S 3836000 V 2097000 3/4 S 3926000 H 4208000 3/4 S 4054000 H 5632000 3/4 S 4055000 V 6510000 3/4 S 4074000 V 6500000 3/4 S 4080000 H 28125000 3/4 S 4184000 V 6700000 3/4 [dvb-s/SBS6-74W] S 11744000 H 6616000 AUTO [dvb-s/ST1_C-80.0E] S 3469000 V 30000000 3/4 S 3521000 H 8332000 5/6 S 3550000 V 30000000 3/4 S 3595000 H 30000000 3/4 S 3632000 V 30000000 3/4 S 3671000 H 9256000 3/4 S 3689000 H 3000000 3/4 [dvb-s/Satmex-5-116.8W] S 3720000 V 27000000 AUTO S 3744000 H 4480000 AUTO S 3748000 V 2100000 AUTO S 3749000 H 4070000 AUTO S 3755000 H 4000000 AUTO S 3767000 H 1620000 AUTO S 3767000 V 2893000 AUTO S 3773000 V 2892000 AUTO S 3797000 V 3200000 AUTO S 3805000 V 4679000 AUTO S 3809000 V 3100000 AUTO S 3826000 H 2712000 AUTO S 3832000 H 2500000 AUTO S 3840000 V 29270000 AUTO S 3869000 H 3000000 AUTO S 3876000 H 2170000 AUTO S 3876000 V 2920000 AUTO S 3879000 H 1984000 AUTO S 3885000 H 3000000 AUTO S 3888000 H 5351000 AUTO S 3905000 H 2400000 AUTO S 3905000 V 2963000 AUTO S 3910000 H 2500000 AUTO S 3914000 V 3223000 AUTO S 3915000 H 1520000 AUTO S 3922000 V 9760000 AUTO S 3932000 V 2500000 AUTO S 3935000 V 4440000 AUTO S 3940000 H 28125000 AUTO S 3944000 V 3410000 AUTO S 3949000 V 3255000 AUTO S 3953000 V 2597000 AUTO S 3957000 V 2600000 AUTO S 3968000 V 7500000 AUTO S 3972000 H 3364000 AUTO S 3975000 V 3131000 AUTO S 3982000 H 2531000 AUTO S 3987000 V 8860000 AUTO S 3996000 V 2170000 AUTO S 4001000 V 4100000 AUTO S 4007000 V 5582000 AUTO S 4012000 V 3131000 AUTO S 4023000 H 6400000 AUTO S 4037000 H 2222000 AUTO S 4038000 V 7675000 AUTO S 4046000 H 2441000 AUTO S 4052000 V 4307000 AUTO S 4060000 H 19510000 AUTO S 4076000 H 2962000 AUTO S 4080000 H 2441000 AUTO S 4080000 V 29270000 AUTO S 4084000 H 3162000 AUTO S 4108000 H 2666000 AUTO S 4115000 H 3253000 AUTO S 4134000 H 3617000 AUTO S 4160000 V 29270000 AUTO S 4164000 H 1733000 AUTO S 4180000 H 19510000 AUTO S 11960000 H 2000000 AUTO S 11975000 H 5000000 AUTO S 12024000 H 3000000 AUTO S 12028000 H 3255000 AUTO S 12034000 H 2532000 AUTO S 12044000 V 4340000 AUTO S 12060000 V 3078000 AUTO S 12164000 V 2000000 AUTO S 12175000 H 4232000 AUTO S 12176000 H 3985000 AUTO S 12193000 V 7885000 AUTO [dvb-s/Satmex-6-113.0W] S 3761000 V 2120000 AUTO S 3947000 V 3700000 AUTO S 3985000 V 2300000 AUTO S 4075000 V 3782000 AUTO S 4078000 H 3609000 AUTO S 4080000 V 3255000 AUTO S 4085000 V 2821000 AUTO S 4091000 V 3720000 AUTO S 12080000 H 25635000 AUTO S 12091000 V 3337000 AUTO S 12107000 V 2222000 AUTO S 12126000 H 2170000 AUTO S 12126000 V 6022000 AUTO S 12145000 V 3255000 AUTO S 12157000 V 3038000 AUTO S 12166000 H 17500000 AUTO [dvb-s/Sirius-5.0E] S 11215000 V 6666000 1/2 S 11227000 H 23145000 3/4 S 11247000 V 23145000 3/4 S 11420000 H 23145000 3/4 S 11727000 H 27500000 5/6 S 11747000 V 27500000 3/4 S 11766000 H 27500000 3/4 S 11785000 V 27500000 3/4 S 11804000 H 27500000 3/4 S 11823000 V 27500000 3/4 S 11843000 H 27500000 3/4 S 11862000 V 27500000 3/4 S 11881000 H 27500000 3/4 S 11900000 V 27500000 3/4 S 11919000 H 27500000 3/4 S 11938000 V 27500000 3/4 S 11958000 H 27500000 3/4 S 11977000 V 27500000 3/4 S 11996000 H 27500000 3/4 S 12015000 V 27500000 5/6 S 12034000 H 27500000 3/4 S 12054000 V 27500000 3/4 S 12073000 H 27500000 3/4 S 12092000 V 27500000 3/4 S 12111000 H 27500000 5/6 S 12130000 V 27500000 3/4 S 12149000 H 27500000 3/4 S 12169000 V 27500000 3/4 S 12188000 H 27500000 7/8 S 12207000 V 27500000 3/4 S 12226000 H 25540000 7/8 S 12245000 V 27500000 3/4 S 12265000 H 27500000 3/4 S 12284000 V 27500000 3/4 S 12303000 H 25547000 7/8 S 12322000 V 27500000 3/4 S 12341000 H 27500000 3/4 S 12360000 V 27500000 7/8 S 12379000 H 27500000 3/4 S 12399000 V 27500000 2/3 S 12418000 H 27500000 3/4 S 12437000 V 27500000 2/3 S 12456000 H 27500000 3/4 S 12476000 V 27500000 3/4 S 12608000 H 27500000 3/4 S 12637000 H 14465000 3/4 S 12668000 V 6666000 1/2 S 12672000 H 3300000 3/4 S 12674000 V 10000000 3/4 S 12678000 V 13333000 5/6 S 12680000 H 9404000 3/4 S 12685000 V 4444000 3/4 S 12690000 H 3330000 3/4 S 12693000 V 3333000 5/6 S 12701000 H 6111000 3/4 S 12715000 H 3330000 3/4 S 12718000 V 23500000 3/4 S 12724000 H 1772000 3/4 S 12728000 V 19720000 3/4 S 12737000 V 6150000 3/4 [dvb-s/Telecom2-8.0W] S 10972000 V 27500000 3/4 S 10974000 H 27500000 3/4 S 11010000 H 27500000 3/4 S 11011000 V 27500000 3/4 S 11042000 H 7860000 3/4 S 11053000 H 2850000 3/4 S 11064000 H 12667000 3/4 S 11387000 H 24740000 5/6 S 11428000 H 27500000 3/4 S 11500000 H 3460000 AUTO S 11554000 V 27500000 3/4 S 11595000 V 27500000 3/4 S 12545000 H 3038000 3/4 S 12566000 V 27500000 3/4 S 12649000 V 27500000 3/4 [dvb-s/Telkom1_C-108.0E] S 3580000 H 28000000 3/4 S 3620000 H 28000000 3/4 S 3640000 V 28000000 3/4 S 3776000 H 4285000 3/4 S 3785000 H 4000000 3/4 S 3793000 H 3000000 3/4 S 3797000 H 3900000 3/4 S 3807000 H 4000000 3/4 S 3990000 H 6000000 3/4 S 4015000 H 6000000 3/4 S 4025000 H 3000000 3/4 S 4084000 H 6000000 3/4 S 4092000 H 3570000 3/4 S 4097000 H 3125000 3/4 [dvb-s/Telstar10_C-76.5E] S 3646000 H 5064000 3/4 S 3655000 H 3214000 3/4 S 3680000 H 27500000 3/4 S 3760000 H 28066000 2/3 S 3780000 V 28066000 2/3 S 3787000 H 4600000 2/3 S 3793000 H 4340000 3/4 S 3840000 H 27500000 3/4 S 4003000 H 4080000 3/4 S 4009000 H 4300000 3/4 S 4030000 V 6312000 1/2 S 4034000 H 4300000 3/4 S 4049000 H 3600000 3/4 S 4056000 H 3214000 3/4 S 4073000 H 13020000 1/2 S 4105000 H 3125000 3/4 S 4137000 H 2893000 3/4 S 4146000 H 3600000 3/4 S 4173000 H 7400000 3/4 [dvb-s/Telstar12-15.0W] S 10988000 H 2893000 3/4 S 10992000 H 2893000 3/4 S 11060000 H 19279000 3/4 S 11123000 V 19279000 3/4 S 11124000 H 18386000 3/4 S 11150000 H 18386000 3/4 S 11150000 V 19279000 3/4 S 11531000 H 3198000 7/8 S 11566000 H 4284000 3/4 S 11677000 V 2200000 1/2 S 11709000 V 3195000 AUTO S 11806000 V 7596000 3/4 S 11963000 H 14714000 3/4 S 12082000 H 3935000 3/4 S 12117000 H 4772000 AUTO S 12159000 H 7777000 2/3 S 12166000 H 3503000 3/4 S 12173000 H 3503000 3/4 S 12524000 V 26470000 3/4 S 12547000 H 11900000 2/3 S 12589000 V 4503000 1/2 S 12608000 H 19279000 2/3 S 12615000 V 11939000 2/3 S 12645000 H 3255000 3/4 [dvb-s/Telstar18_C-138.0E] S 3599000 V 30000000 3/4 S 3660000 V 30000000 3/4 S 3704000 V 3034000 3/4 S 4124000 V 3255000 1/2 [dvb-s/Thaicom1A_C-120.0E] S 3725000 V 3255000 3/4 S 3745000 V 2850000 5/6 S 3854000 V 9628000 3/4 S 3881000 V 2000000 3/4 S 3916000 V 3359000 3/4 S 4135000 V 1808000 3/4 [dvb-s/Thaicom2_C-78.5E] S 3764000 H 5900000 3/4 S 3803000 H 1445000 7/8 S 3888000 H 15625000 3/4 S 3905000 H 6250000 3/4 S 3967000 H 4551000 3/4 S 4003000 H 1085000 3/4 S 4016000 H 2305000 7/8 S 4106000 H 4688000 3/4 S 4145000 H 4815000 3/4 [dvb-s/Thaicom5_C-78.5E] S 3421000 V 6667000 3/4 S 3431000 H 13333000 3/4 S 3432000 V 6667000 3/4 S 3448000 V 2222000 3/4 S 3450000 H 13333000 3/4 S 3454000 V 3333000 3/4 S 3460000 V 1538000 3/4 S 3489000 V 3333000 3/4 S 3502000 V 4444000 2/3 S 3504000 H 3367000 2/3 S 3505000 V 1852000 3/4 S 3521000 V 2917000 3/4 S 3545000 V 30000000 5/6 S 3551000 H 13333000 3/4 S 3562000 H 4444000 1/2 S 3574000 H 7492000 2/3 S 3585000 V 26667000 3/4 S 3600000 H 26667000 3/4 S 3617000 V 12500000 3/4 S 3640000 H 28066000 3/4 S 3664000 H 3704000 3/4 [dvb-s/Thor-1.0W] S 11216000 V 24500000 7/8 S 11229000 H 24500000 7/8 S 11247000 V 24500000 7/8 S 11261000 H 24500000 7/8 S 11278000 V 24500000 7/8 S 11293000 H 24500000 7/8 S 11309000 V 24500000 7/8 S 11325000 H 24500000 7/8 S 11325000 V 24500000 7/8 S 11325000 V 24500000 7/8 S 11341000 V 24500000 7/8 S 11357000 H 24500000 7/8 S 11372000 V 24500000 7/8 S 11389000 H 24500000 7/8 S 11403000 V 24500000 7/8 S 11421000 H 24500000 7/8 S 11434000 V 24500000 7/8 S 11747000 H 28000000 5/6 S 11785000 H 28000000 5/6 S 11823000 H 28000000 7/8 S 11938000 H 25000000 3/4 S 12015000 H 30000000 3/4 S 12130000 H 30000000 3/4 S 12149000 V 28000000 5/6 S 12169000 H 28000000 7/8 S 12188000 V 25000000 3/4 S 12226000 V 28000000 3/4 S 12245000 H 28000000 5/6 S 12303000 V 28000000 5/6 S 12322000 H 27800000 3/4 S 12399000 H 28000000 7/8 S 12418000 V 28000000 7/8 S 12456000 V 28000000 3/4 S 12476000 H 28000000 5/6 [dvb-s/Turksat-42.0E] S 10968000 V 4557000 3/4 S 10970000 H 30000000 5/6 S 10999000 V 2222000 3/4 S 11003000 V 2175000 3/4 S 11007000 V 2950000 5/6 S 11011000 V 2125000 5/6 S 11014000 V 2050000 3/4 S 11018000 V 2150000 3/4 S 11028000 V 2400000 3/4 S 11083000 V 8888000 3/4 S 11136000 V 2170000 3/4 S 11143000 V 2200000 3/4 S 11159000 V 2596000 3/4 S 11162000 V 2222000 5/6 S 11166000 V 2960000 3/4 S 11177000 V 2200000 3/4 S 11554000 H 2916000 2/3 S 11576000 H 2400000 5/6 S 11581000 H 4444000 3/4 S 11607000 H 3750000 2/3 S 11712000 V 2963000 3/4 S 11716000 V 2222000 3/4 S 11729000 V 15555000 5/6 S 11734000 H 3291000 3/4 S 11739000 H 3125000 3/4 S 11743000 H 2222000 3/4 S 11743000 V 2222000 3/4 S 11748000 H 4444000 5/6 S 11753000 H 3000000 7/8 S 11754000 V 3900000 5/6 S 11758000 V 2962000 3/4 S 11760000 H 5925000 3/4 S 11762000 V 2155000 3/4 S 11765000 V 2222000 3/4 S 11770000 V 2177000 3/4 S 11773000 V 2420000 5/6 S 11775000 H 2222000 3/4 S 11777000 V 3150000 5/6 S 11781000 V 2815000 5/6 S 11794000 H 5632000 3/4 S 11800000 H 2400000 5/6 S 11804000 V 24444000 5/6 S 11830000 V 6666000 3/4 S 11839000 V 4444000 3/4 S 11846000 V 3333000 5/6 S 11852000 V 4444000 5/6 S 11858000 V 2400000 7/8 S 11867000 V 4444000 5/6 S 11874000 V 3400000 7/8 S 11878000 V 3750000 5/6 S 11882000 V 2965000 5/6 S 11887000 V 3333000 7/8 S 11892000 H 12800000 5/6 S 11892000 V 2960000 5/6 S 11896000 V 2222000 3/4 S 11905000 H 6666000 3/4 S 11912000 H 3333000 5/6 S 11919000 V 24444000 3/4 S 11951000 V 8800000 5/6 S 11959000 V 2960000 3/4 S 11963000 V 2300000 5/6 S 11967000 V 4340000 3/4 S 11970000 H 17900000 5/6 S 11973000 V 2240000 5/6 S 11984000 H 4000000 5/6 S 11996000 V 26000000 5/6 S 12002000 H 4800000 5/6 S 12008000 H 4400000 5/6 S 12015000 H 4800000 5/6 S 12022000 H 5380000 5/6 S 12028000 H 4557000 5/6 S 12126000 V 6666000 5/6 S 12127000 H 7400000 5/6 S 12140000 H 2222000 3/4 S 12140000 V 4444000 3/4 S 12513000 H 4400000 3/4 S 12518000 H 3125000 3/4 S 12524000 H 4250000 5/6 S 12530000 H 4444000 5/6 S 12536000 H 2962000 3/4 S 12540000 H 3125000 3/4 S 12563000 H 24000000 7/8 S 12590000 V 3000000 5/6 S 12595000 V 2500000 5/6 S 12605000 V 2961000 3/4 S 12609000 V 3700000 5/6 S 12614000 V 3333000 5/6 S 12633000 V 4800000 5/6 S 12636000 H 4800000 5/6 S 12638000 V 2400000 5/6 S 12647000 V 3333000 5/6 S 12652000 H 22500000 5/6 S 12652000 V 3900000 5/6 S 12660000 V 9150000 5/6 S 12672000 H 2222000 5/6 S 12680000 H 8888000 3/4 S 12692000 H 2800000 5/6 S 12696000 H 2222000 3/4 S 12699000 H 2400000 3/4 S 12702000 H 2285000 7/8 S 12717000 V 5925000 5/6 S 12731000 V 3333000 3/4 [dvb-s/Vinasat1_C-132.0E] S 3413000 V 9766000 3/4 S 3529000 V 2500000 2/3 [dvb-s/Yamal201-90.0E] S 3536000 H 2532000 3/4 S 3553000 H 20000000 3/4 S 3577000 H 2626000 3/4 S 3588000 H 4285000 3/4 S 3600000 H 4285000 3/4 S 3603000 V 4285000 3/4 S 3605000 H 2626000 3/4 S 3645000 H 28000000 3/4 S 3674000 H 17500000 3/4 S 3725000 H 3200000 3/4 S 3900000 H 4285000 3/4 S 3907000 H 4265000 3/4 S 3912000 H 4295000 3/4 S 3944000 H 15550000 3/4 S 3980000 H 38000000 3/4 S 4042000 V 8681000 3/4 S 4084000 V 2500000 3/4 S 10990000 V 2170000 AUTO S 10995000 V 4285000 AUTO S 11057000 V 26470000 AUTO S 11092000 V 26470000 AUTO S 11145000 V 22222000 AUTO S 11671000 V 18200000 AUTO [dvb-t/ad-Andorra] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/at-Official] T 474000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 514000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 522000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 562000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 610000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 650000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE [dvb-t/au-Adelaide] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536625000 7MHz 3/4 NONE QAM16 8k 1/8 NONE T 564500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-AdelaideFoothills] T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 760500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 781625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 795500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Ballarat] T 592625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 620625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 634625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Bendigo] T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 529500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 534250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 536500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 543500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 550500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 555250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 572500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 576250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 585625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 618250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 634500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 669500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 676500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Brisbane] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 599500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Cairns] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Canberra-Black-Mt] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 543500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Coonabarabran] T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 641500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Darwin] T 536625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 543625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 550500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 557625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Devonport] T 585498000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 606500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 613498000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 627498000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 709250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 730250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-FraserCoast-Bundaberg] T 184625000 7MHz 2/3 NONE QAM64 8k 1/16 NONE T 198525000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 212500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-GoldCoast] T 585500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 634500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 704500000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 746500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 767500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 788500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Goulburn-Rocky_Hill] T 725625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 746625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 788625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Hervey_Bay-Ghost_Hill] T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 746500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Hobart] T 184625000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 191500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 212500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Mackay] T 205500000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 212500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 557500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 578500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Melbourne] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Melbourne-Upwey] T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 641500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 662500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 683500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-MidNorthCoast] T 184625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 198500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 543500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 585500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 599500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 606500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 641500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Newcastle] T 585500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 599500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 704500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Perth] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 536625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-Perth_Roleystone] T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 746500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE T 767500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 788500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-SpencerGulf] T 599500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 620500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 641500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-SunshineCoast] T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 662625000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 788625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Sutherland] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Sydney_Kings_Cross] T 543500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 571500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 669500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Sydney_North_Shore] T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 571500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 578500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/au-Tamworth] T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 226625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 585500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 641500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 641500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 690500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 753500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 774500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Townsville] T 550500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 585500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 592500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 599500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-WaggaWagga] T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 662500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 669500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 683500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/au-Wollongong] T 585500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 599500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 634500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 676500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 697500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 711625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-canberra] T 177500000 7MHz 3/4 NONE QAM64 8k 1/8 NONE T 191625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 205625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE T 543500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/au-unknown] T 226500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/ax-Smedsbole] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/be-All] T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 834000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE [dvb-t/ch-All] T 514000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 522000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 562000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 5/6 NONE QAM16 8k 1/8 NONE T 666000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 690000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE T 714000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 5/6 NONE QAM16 8k 1/8 NONE T 738000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 762000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 802000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 826000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 850000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE [dvb-t/ch-Citycable] T 498000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 522000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 554000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 570000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 578000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 586000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 626000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 730000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 746000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 834000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 7/8 NONE QAM64 8k 1/32 NONE [dvb-t/ch-Geneva] T 570166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 578000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 658166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 666166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE T 746166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 1/2 NONE QPSK 2k 1/32 NONE T 770166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 794166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 818166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 850166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/cz-All] T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/de-Baden-Wuerttemberg] T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Bayern] T 191500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE T 212500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Berlin] T 177500000 7MHz 3/4 NONE QAM16 8k 1/8 NONE T 191500000 7MHz 2/3 NONE QAM16 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE [dvb-t/de-Brandenburg] T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Bremen] T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Hamburg] T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE [dvb-t/de-Hessen] T 198500000 7MHz 2/3 NONE QAM16 8k 1/4 NONE T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Mecklenburg-Vorpommern] T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Niedersachsen] T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Nordrhein-Westfalen] T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 482000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 522000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Rheinland-Pfalz] T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Saarland] T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Sachsen] T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/de-Sachsen-Anhalt] T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/de-Schleswig-Holstein] T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/de-Thueringen] T 474000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/dk-All] T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Albacete] T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Alfabia] T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Alicante] T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Alpicat] T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Asturias] T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-BaixoMinho] T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Bilbao] T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Cadiz] T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Carceres] T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Collserola] T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Donostia] T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Granada] T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Huesca] T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Las_Palmas] T 530000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Lugo] T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Madrid] T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Malaga] T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Muros-Noia] T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Mussara] T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Pamplona] T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Rocacorba] T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-SC_Tenerife] T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Santander] T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Santiago_de_Compostela] T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Sevilla] T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Valencia] T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Valladolid] T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Vilamarxant] T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Vitoria-Gasteiz] T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/es-Zaragoza] T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/fi-Aanekoski] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Aanekoski_Konginkangas] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ahtari] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ala-Vuokki] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Alajarvi] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ammansaari] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Anjalankoski] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Enontekio_Raattama] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Espoo] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Eurajoki] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Fiskars] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Haapavesi] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hameenkyro_Kyroskoski] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hameenlinna_Painokangas] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hanko] T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hartola] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Haukela] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Heinavesi] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Heinola] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hetta] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hossa] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Houtskari] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hyrynsalmi] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hyrynsalmi_Kyparavaara] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hyrynsalmi_Paljakka] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Hyvinkaa_Musta-Mannisto] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ii_Raiskio] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Iisalmi] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ikaalinen] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ikaalinen_Riitiala] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Inari] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Inari_Janispaa] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Inari_Naatamo] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ivalo_Saarineitamovaara] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jalasjarvi] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jamsa_Kaipola] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jamsa_Kuorevesi_Halli] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jamsa_Matkosvuori] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jamsa_Ouninpohja] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jamsankoski] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Joensuu_Vestinkallio] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Joroinen_Puukkola-Huutokoski] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Joutsa_Lankia] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Joutseno] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Juntusranta] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Juupajoki_Kopsamo] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Jyvaskyla] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kaavi_Luikonlahti] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kajaani_Pollyvaara] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kalajoki] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kangaslampi] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kangasniemi_Turkinmaki] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kankaanpaa] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Karigasniemi] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Karkkila] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Karstula] T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Karvia] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kaunispaa] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kemijarvi_Suomutunturi] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kerimaki] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Keuruu] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Keuruu_Haapamaki] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kihnio] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kiihtelysvaara] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kilpisjarvi] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kittila_Sirkka_Levitunturi] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kolari_Vuolittaja] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Koli] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Korpilahti_Vaarunvuori] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Korppoo] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kruunupyy] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuhmo_Iivantiira] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuhmo_Lentiira] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuhmoinen] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuhmoinen_Harjunsalmi] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuhmoinen_Puukkoinen] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuopio] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kustavi_Viherlahti] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kuttanen] T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Kyyjarvi_Noposenaho] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Lahti] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Lapua] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Laukaa] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Laukaa_Vihtavuori] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Lavia_Lavianjarvi] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Lieksa_Konnanvaara] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Lohja] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Loimaa] T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Luhanka] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Luopioinen] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Mantta] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Mantyharju] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Mikkeli] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Muonio_Olostunturi] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Mustasaari] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Myllylahti] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nilsia] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nilsia_Keski-Siikajarvi] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nilsia_Pisa] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nokia] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nokia_Siuro_Linnavuori] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nummi-Pusula_Hyonola] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Nurmes_Kortevaara] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Orivesi_Langelmaki_Talviainen] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Oulu] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Padasjoki] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Padasjoki_Arrakoski] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Paltamo_Kivesvaara] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Parikkala] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Parkano_Sopukallio] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pello] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pello_Ratasvaara] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Perho] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pernaja] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pieksamaki_Halkokumpu] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pihtipudas] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Porvoo_Suomenkyla] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Posio] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pudasjarvi] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pudasjarvi_Hirvaskoski] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pudasjarvi_Iso-Syote] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Puolanka] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pyhatunturi] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pyhavuori] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Pylkonmaki_Karankajarvi] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Raahe_Mestauskallio] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Raahe_Piehinki] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ranua_Haasionmaa] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ranua_Leppiaho] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rautavaara_Angervikko] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rautjarvi_Simpele] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ristijarvi] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Ala-Nampa_Yli-Nampa_Rantalaki] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Kaihuanvaara] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Marasenkallio] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Marrasjarvi] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Meltaus_Sorviselka] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Rovaniemi_Sonka] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ruka] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ruovesi_Storminiemi] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Saarijarvi] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Saarijarvi_Kalmari] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Saarijarvi_Mahlu] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salla_Hirvasvaara] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salla_Ihistysjanka] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salla_Naruska] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salla_Sallatunturi] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salla_Sarivaara] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Salo_Isokyla] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Savukoski_Martti] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Savukoski_Tanhua] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Siilinjarvi] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Sipoo_Norrkulla] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Sodankyla_Pittiovaara] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Sulkava_Vaatalanmaki] T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Sysma_Liikola] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Taivalkoski] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Taivalkoski_Taivalvaara] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Tammela] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Tammisaari] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Tampere] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Tampere_Pyynikki] T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Tervola] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Turku] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Nuorgam_Njallavaara] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Nuorgam_raja] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Nuvvus] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Outakoski] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Polvarniemi] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Rovisuvanto] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Utsjoki_Tenola] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Uusikaupunki_Orivo] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vaajakoski] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vaala] T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vaasa] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Valtimo] T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vammala_Jyranvuori] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vammala_Roismala] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vammala_Savi] T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vantaa_Hakunila] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Varpaisjarvi_Honkamaki] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Virrat_Lappavuori] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vuokatti] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Vuotso] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ylitornio_Ainiovaara] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Ylitornio_Raanujarvi] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fi-Yllas] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/fr-Abbeville] T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Agen] T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Ajaccio] T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Albi] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 818000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Alençon] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 826000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Ales] T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Ales-Bouquet] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Amiens] T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Angers] T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Annecy] T 482000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 834000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Arcachon] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Argenton] T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Aubenas] T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Aurillac] T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Autun] T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 834000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 850000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Auxerre] T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Avignon] T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-BarleDuc] T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bastia] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bayonne] T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 826000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bergerac] T 482000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Besançon] T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bordeaux] T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Bordeaux-Bouliac] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bordeaux-Cauderan] T 482000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Boulogne] T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Bourges] T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Brest] T 546000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 578000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 586000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 618000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 650000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 770000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE [dvb-t/fr-Brive] T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Caen] T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Caen-Pincon] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Cannes] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Carcassonne] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Chambery] T 682167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Chartres] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Chennevieres] T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Cherbourg] T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-ClermontFerrand] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Cluses] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Dieppe] T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Dijon] T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 834000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Epinal] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Evreux] T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Grenoble] T 474000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Gueret] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Hyeres] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-LaRochelle] T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Laval] T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-LeCreusot] T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 818000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-LeHavre] T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-LeMans] T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-LePuyEnVelay] T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Lille-Bouvigny] T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 554167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754167000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Lille-Lambersart] T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Limoges] T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 826000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Lorient] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 818000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Lyon-Fourviere] T 474167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 498167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 522167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Lyon-Pilat] T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Mantes] T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Marseille] T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Meaux] T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 818000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Mende] T 474000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Menton] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 842000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Montbeliard] T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738167000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786167000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Montlucon] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 826000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Montpellier] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Mulhouse] T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 826000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Nancy] T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 522166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Nantes] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM16 8k AUTO NONE [dvb-t/fr-NeufchatelEnBray] T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Nice] T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Niort] T 498000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 602000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 738000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 778000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 802000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE [dvb-t/fr-Orleans] T 610166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 674166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Paris] T 474166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 522166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 538166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 562166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 586166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 714166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 738166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Parthenay] T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Perpignan] T 474000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Poitiers] T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Privas] T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Reims] T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Rennes] T 562000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 586000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 626000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 650000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE T 674000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE [dvb-t/fr-Roanne] T 474000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 498000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 522000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Rochefort-sur-mer] T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Rouen] T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-SaintEtienne] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 618000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-SaintRaphael] T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Sannois] T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 762000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 786000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Sens] T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 770000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Strasbourg] T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Toulon] T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Toulouse] T 698167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 730167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 746167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Toulouse-Midi] T 482000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Tours] T 498000000 8MHz AUTO NONE AUTO AUTO AUTO NONE T 578000000 8MHz AUTO NONE AUTO AUTO AUTO NONE T 602000000 8MHz AUTO NONE AUTO AUTO AUTO NONE T 610000000 8MHz AUTO NONE AUTO AUTO AUTO NONE T 690000000 8MHz AUTO NONE AUTO AUTO AUTO NONE T 714000000 8MHz AUTO NONE AUTO AUTO AUTO NONE [dvb-t/fr-Troyes] T 482000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 514000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 594000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Ussel] T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Valence] T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 570000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE T 746000000 8MHz AUTO NONE QAM64 8k AUTO NONE [dvb-t/fr-Vannes] T 674167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/fr-Villebon] T 586000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/gr-Athens] T 674000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hk-HongKong] T 482000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 546000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 562000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 586000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 602000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 628000000 8MHz AUTO NONE QAM64 8k 1/32 NONE T 650000000 8MHz AUTO NONE QAM64 8k 1/32 NONE [dvb-t/hr-All] T 474000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 490000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 578000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 690000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 714000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/hu-Budapest] T 746000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Debrecen] T 714000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Gyor] T 642000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Kabhegy] T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Kekes] T 658000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 858000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Kiskoros] T 666000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Nagykanizsa-Ujudvar] T 498000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Pecs] T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Szeged] T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Szentes] T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Tokaj] T 810000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Uzd] T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/hu-Vasvar-Hegyhatsal] T 770000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE [dvb-t/il-All] T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/ir-Tehran] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/is-Reykjavik] T 522000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738000000 8MHz 1/2 NONE QPSK 2k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 1/2 NONE QAM64 2k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Aosta] T 226500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Bari] T 219500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 226500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Bologna] T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 203500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 212500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 219500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Bolzano] T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/it-Cagliari] T 205500000 7MHz 3/4 NONE QAM64 8k 1/32 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 514000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 562000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 674000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Caivano] T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Catania] T 226500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Conero] T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Firenze] T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Genova] T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Livorno] T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Milano] T 184500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 191500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 495250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 735250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 783250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 800000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 807250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 847250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Modena] T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 184500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Montevergine] T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/it-Pagnacco] T 226500000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 490000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 522000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE [dvb-t/it-Palermo] T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Pescara] T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 194500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Pisa] T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Roma] T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-S-Stefano_al_mare] T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Sassari] T 177500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Torino] T 474000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 514000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 650000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE [dvb-t/it-Trieste] T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Varese] T 226500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Venezia] T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/it-Verona] T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/lt-All] T 474000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 482000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 514000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 546000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 570000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 594000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 602000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 610000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 618000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 658000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 682000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 690000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 706000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 730000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 738000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 762000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 770000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 778000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 786000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 794000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 802000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 810000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 818000000 8MHz AUTO NONE QAM64 8k 1/16 NONE T 826000000 8MHz AUTO NONE QAM64 8k 1/16 NONE [dvb-t/lu-All] T 191500000 7MHz 2/3 NONE QAM16 8k 1/8 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE [dvb-t/lv-Riga] T 610000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 658000000 8MHz 1/2 NONE QPSK 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 690000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 778000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 834000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/nl-All] T 474000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 474000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 514000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 562000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 578000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 690000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 706000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE [dvb-t/no-Trondelag_Stjordal] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/nz-Waiatarua] T 538000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 570000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE T 666000000 8MHz 3/4 NONE QAM64 8k 1/16 NONE [dvb-t/pl-Rzeszow] T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/pl-Warszawa] T 690000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE T 746000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE [dvb-t/pl-Wroclaw] T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/ro-Bucharest] T 546000000 8MHz 2/3 NONE QAM16 8k 1/16 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE [dvb-t/se-Alvdalen_Brunnsberg] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Alvdalsasen] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Alvsbyn] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Amot] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ange_Snoberg] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Angebo] T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Angelholm_Vegeholm] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Arvidsjaur_Jultrask] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Aspeboda] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Atvidaberg] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Avesta_Krylbo] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Backefors] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 586000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Bankeryd] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bergsjo_Balleberget] T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bergvik] T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bollebygd] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bollnas] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Boras_Dalsjofors] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Boras_Sjobo] T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Borlange_Idkerberget] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Borlange_Nygardarna] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bottnaryd_Ryd] T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bromsebro] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Bruzaholm] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Byxelkrok] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Dadran] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Dalfors] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Dalstuga] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Degerfors] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Delary] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Djura] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Drevdagen] T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Duvnas] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Duvnas_Basna] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Edsbyn] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Emmaboda_Balshult] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Enviken] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Fagersta] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Falerum_Centrum] T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Falun_Lovberget] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Farila] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Faro_Ajkerstrask] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Farosund_Bunge] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Filipstad_Klockarhojden] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Finnveden] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Fredriksberg] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Fritsla] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Furudal] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gallivare] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Garpenberg_Kuppgarden] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gavle_Skogmur] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gnarp] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gnesta] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gnosjo_Marieholm] T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Goteborg_Brudaremossen] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Goteborg_Slattadamm] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gullbrandstorp] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gunnarsbo] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Gusum] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hagfors_Varmullsasen] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hallaryd] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hallbo] T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Halmstad_Hamnen] T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Halmstad_Oskarstrom] T 474000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Harnosand_Harnon] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hassela] T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Havdhem] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hedemora] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Helsingborg_Olympia] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Hennan] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hestra_Aspas] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hjo_Grevback] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hofors] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hogfors] T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hogsby_Virstad] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Holsbybrunn_Holsbyholm] T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Horby_Sallerup] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 650000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Horken] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hudiksvall_Forsa] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 618000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Hudiksvall_Galgberget] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Huskvarna] T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Idre] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ingatorp] T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ingvallsbenning] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Irevik] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Jamjo] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Jarnforsen] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Jarvso] T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Jokkmokk_Tjalmejaure] T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Jonkoping_Bondberget] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kalix] T 706000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Karbole] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Karlsborg_Vaberget] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Karlshamn] T 498000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 522000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Karlskrona_Vamo] T 498000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 522000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Karlstad_Sormon] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kaxholmen_Vistakulle] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kinnastrom] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kiruna_Kirunavaara] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kisa] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Knared] T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kopmanholmen] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kopparberg] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kramfors_Lugnvik] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kristinehamn_Utsiktsberget] T 522000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 546000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Kungsater] T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Kungsberget_GI] T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Langshyttan] T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Langshyttan_Engelsfors] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Leksand_Karingberget] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lerdala] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lilltjara_Digerberget] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Limedsforsen] T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lindshammar_Ramkvilla] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Linkoping_Vattentornet] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ljugarn] T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Loffstrand] T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 650000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Lonneberga] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lorstrand] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ludvika_Bjorkasen] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lumsheden_Trekanten] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Lycksele_Knaften] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Mahult] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Malmo_Jagersro] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Malung] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Mariannelund] T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Markaryd_Hualtet] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Matfors] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Molndal_Vasterberget] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Mora_Eldris] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Motala_Ervasteby] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Mullsjo_Torestorp] T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Nassjo] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Navekvarn] T 842000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Norrahammar] T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Norrkoping_Krokek] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Norrtalje_Sodra_Bergen] T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Nykoping] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Orebro_Lockhyttan] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ornskoldsvik_As] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Oskarshamn] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ostersund_Brattasen] T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Osthammar_Valo] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Overkalix] T 706000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Oxberg] T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Pajala] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Paulistom] T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Rattvik] T 530000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Rengsjo] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Rorbacksnas] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sagmyra] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Salen] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Salfjallet] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sarna_Mickeltemplet] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Satila] T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Saxdalen] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Siljansnas_Uvberget] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Skarstad] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Skattungbyn] T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Skelleftea] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Skene_Nycklarberget] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Skovde] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Smedjebacken_Uvberget] T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Soderhamn] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 810000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Soderkoping] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sodertalje_Ragnhildsborg] T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Solleftea_Hallsta] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Solleftea_Multra] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sorsjon] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Stockholm_Marieberg] T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Stockholm_Nacka] T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Stora_Skedvi] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Storfjaten] T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Storuman] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Stromstad] T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Styrsjobo] T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sundborn] T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sundsbruk] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sundsvall_S_Stadsberget] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sunne_Blabarskullen] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Svartnas] T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Sveg_Brickan] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Taberg] T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tandadalen] T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tasjo] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tollsjo] T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Torsby_Bada] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tranas_Bredkarr] T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tranemo] T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Transtrand_Bolheden] T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Traryd_Betas] T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Trollhattan] T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Trosa] T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Tystberga] T 842000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Uddevalla_Herrestad] T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Ullared] T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ulricehamn] T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 842000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ulvshyttan_Porjus] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Uppsala_Rickomberga] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Uppsala_Vedyxa] T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vaddo_Elmsta] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Valdemarsvik] T 794000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vannas_Granlundsberget] T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vansbro_Hummelberget] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Varberg_Grimeton] T 474000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 610000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 666000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Vasteras_Lillharad] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 554000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vastervik_Farhult] T 498000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vaxbo] T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vessigebro] T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vetlanda_Nye] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vikmanshyttan] T 538000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Virserum] T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Visby_Follingbo] T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Visby_Hamnen] T 482000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 522000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Visingso] T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Vislanda_Nydala] T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 626000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Voxna] T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/se-Ystad_Metallgatan] T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE [dvb-t/se-Yttermalung] T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE [dvb-t/si-Ljubljana] T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-BanskaBystrica] T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Bardejov] T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Bratislava] T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Kosice] T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Michalovce] T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Namestovo] T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Poprad] T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-RimavskaSobota] T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Trencin] T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-VelkyKrtis] T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/sk-Zilina] T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE [dvb-t/tw-Kaohsiung] T 545000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE T 545000000 6MHz 2/3 NONE QAM16 8k 1/8 NONE T 557000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE T 557000000 6MHz 2/3 NONE QAM16 8k 1/8 NONE [dvb-t/tw-Taipei] T 533000000 6MHz 1/2 NONE QAM16 8k 1/8 NONE T 545000000 6MHz 2/3 NONE QAM16 8k 1/8 NONE T 557000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE T 581000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE T 593000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE [dvb-t/uk-Aberdare] T 474167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 497833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Angus] T 753833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 777833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 801833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 825833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 850000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BeaconHill] T 721833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 753833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 770167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 794167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 818167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Belmont] T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 762167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Bilsdale] T 474000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 498167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 522167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 554000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BlackHill] T 634167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 658167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 682167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 826000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Blaenplwyf] T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BluebellHill] T 498000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 522000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 641833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 665833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 778000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Bressay] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 497833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 553833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 850000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BrierleyHill] T 753833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 777833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 801833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 825833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 834167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 850000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BristolIlchesterCres] T 618000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 634167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 658167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BristolKingsWeston] T 482000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 506000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 562000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Bromsgrove] T 489833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 537833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 545833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 569833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-BrougherMountain] T 490167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 514167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Caldbeck] T 490000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 514167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-CaradonHill] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 497833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 522000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 553833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Carmel] T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 777833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 801833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 825833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 834167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 850000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Chatton] T 626167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 650167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 674167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Chesterfield] T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 626000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 650000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 674000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Craigkelly] T 489833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 570000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-CrystalPalace] T 481833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 505833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 529833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 537833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 561833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Darvel] T 481833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 505833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 529833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 561833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Divis] T 489833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 538000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 569833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Dover] T 618167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 745833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 762167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 770167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 785833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 794167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 850000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Durris] T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 634000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 658000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 713833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Eitshal] T 481833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 505833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 529833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 546167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 561833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-EmleyMoor] T 625833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 649833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 673833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 705833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Fenham] T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 545833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 762167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Fenton] T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 545833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 577833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Ferryside] T 474167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 498000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 522000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 545833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Guildford] T 634167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 658167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Hannington] T 626167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 634167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 650167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 658167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 674167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Hastings] T 474000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 497833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 553833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 810000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Heathfield] T 538000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 681833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 689833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 713833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-HemelHempstead] T 690167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 746000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 777833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 802000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 826000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-HuntshawCross] T 682000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 729833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 737833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 761833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 769833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 793833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 817833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Idle] T 545833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 754000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-KeelylangHill] T 634167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 658167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Keighley] T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 729833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-KilveyHill] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 481833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 505833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 529833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 553833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 561833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-KnockMore] T 546167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 753833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 762167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Lancaster] T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 545833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-LarkStoke] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 498167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 522167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 554000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 762000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Limavady] T 730000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 761833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 769833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 786167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 810167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Llanddona] T 674000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 770167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 794167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 818167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Malvern] T 618000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 634000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 658000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 714000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Mendip] T 746167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 754167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 778167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 802167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 826167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Midhurst] T 754167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 778167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 802167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 817833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 826167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Moel-y-Parc] T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 818000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Nottingham] T 538000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 778000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 810000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-OliversMount] T 698000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 770167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 794167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 818167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Oxford] T 538000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 713833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 721833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-PendleForest] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 497833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 545833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 553833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Plympton] T 722000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 754000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 785833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 809833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 833833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 842167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-PontopPike] T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 729833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 746167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 778167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 802167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 826167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Pontypool] T 482167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 722000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Presely] T 618000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 641833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 665833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Redruth] T 474167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 497833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 521833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 634167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 650167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 658167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/uk-Reigate] T 474000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 498000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 522000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 554000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 618167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-RidgeHill] T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 730000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 810000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Rosemarkie] T 633833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 657833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 674167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 682167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 714167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Rosneath] T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 729833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 761833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 785833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 809833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Rowridge] T 489833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 545833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-RumsterForest] T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 562167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 778000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 802000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Saddleworth] T 618167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 633833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 657833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 682000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 713833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Salisbury] T 721833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 745833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 753833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 777833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 801833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 826000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-SandyHeath] T 626167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 641833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 650167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 665833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 674167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 842000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Selkirk] T 730167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 754167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 762167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 786167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 810167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Sheffield] T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 786000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-StocklandHill] T 481833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 490167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 505833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 529833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/uk-Storeton] T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/uk-Sudbury] T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 690167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 698167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 754000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 850000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-SuttonColdfield] T 634167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 658167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 682167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 714167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 722167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Tacolneston] T 730167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 769833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 786000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 794000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 810000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 818000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-TheWrekin] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 498167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 522167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 554000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 618167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 698000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 730000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 762000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Torosay] T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 490167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 514167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 538167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 553833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-TunbridgeWells] T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 666167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 778000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE [dvb-t/uk-Waltham] T 490000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 514000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 570000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 642000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 698000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-Wenvoe] T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 578000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 625833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 649833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 673833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 705833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-WhitehawkHill] T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 706000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 746000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE T 770167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 794167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE T 834000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE [dvb-t/uk-WinterHill] T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE T 801833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE [dvb-t/vn-Hanoi] T 514000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE T 578000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE [dvb-t/vn-Thaibinh] T 626000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE T 634000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE [atsc/us-ATSC-center-frequencies-8VSB] A 57028615 8VSB A 63028615 8VSB A 69028615 8VSB A 79028615 8VSB A 85028615 8VSB A 177028615 8VSB A 183028615 8VSB A 189028615 8VSB A 195028615 8VSB A 201028615 8VSB A 207028615 8VSB A 213028615 8VSB A 473028615 8VSB A 479028615 8VSB A 485028615 8VSB A 491028615 8VSB A 497028615 8VSB A 503028615 8VSB A 509028615 8VSB A 515028615 8VSB A 521028615 8VSB A 527028615 8VSB A 533028615 8VSB A 539028615 8VSB A 545028615 8VSB A 551028615 8VSB A 557028615 8VSB A 563028615 8VSB A 569028615 8VSB A 575028615 8VSB A 581028615 8VSB A 587028615 8VSB A 593028615 8VSB A 599028615 8VSB A 605028615 8VSB A 611028615 8VSB A 617028615 8VSB A 623028615 8VSB A 629028615 8VSB A 635028615 8VSB A 641028615 8VSB A 647028615 8VSB A 653028615 8VSB A 659028615 8VSB A 665028615 8VSB A 671028615 8VSB A 677028615 8VSB A 683028615 8VSB A 689028615 8VSB A 695028615 8VSB A 701028615 8VSB A 707028615 8VSB A 713028615 8VSB A 719028615 8VSB A 725028615 8VSB A 731028615 8VSB A 737028615 8VSB A 743028615 8VSB A 749028615 8VSB A 755028615 8VSB A 761028615 8VSB A 767028615 8VSB A 773028615 8VSB A 779028615 8VSB A 785028615 8VSB A 791028615 8VSB A 797028615 8VSB A 803028615 8VSB [atsc/us-CA-SF-Bay-Area] A 503000000 8VSB A 551000000 8VSB A 563000000 8VSB A 593000000 8VSB A 623000000 8VSB A 635000000 8VSB A 647000000 8VSB A 659000000 8VSB A 683000000 8VSB A 689000000 8VSB A 701000000 8VSB A 725000000 8VSB A 731000000 8VSB [atsc/us-Cable-EIA-542-HRC-center-frequencies-QAM256] A 55752700 QAM256 A 61753000 QAM256 A 67753300 QAM256 A 73753600 QAM256 A 77753900 QAM256 A 83754200 QAM256 A 91754500 QAM256 A 97754800 QAM256 A 103755100 QAM256 A 109775000 QAM256 A 115775000 QAM256 A 121756000 QAM256 A 127756300 QAM256 A 133756600 QAM256 A 139756900 QAM256 A 145757200 QAM256 A 151757500 QAM256 A 157757800 QAM256 A 163758100 QAM256 A 169758400 QAM256 A 175758700 QAM256 A 181759000 QAM256 A 187759300 QAM256 A 193759600 QAM256 A 199759900 QAM256 A 205760200 QAM256 A 211760500 QAM256 A 217760800 QAM256 A 223761100 QAM256 A 229761400 QAM256 A 235761700 QAM256 A 241762000 QAM256 A 247762300 QAM256 A 253762600 QAM256 A 259762900 QAM256 A 265763200 QAM256 A 271763500 QAM256 A 277763800 QAM256 A 283764100 QAM256 A 289764400 QAM256 A 295764700 QAM256 A 301765000 QAM256 A 307765300 QAM256 A 313765600 QAM256 A 319765900 QAM256 A 325766200 QAM256 A 331766500 QAM256 A 337766800 QAM256 A 343767100 QAM256 A 349767400 QAM256 A 355767700 QAM256 A 361768000 QAM256 A 367768300 QAM256 A 373768600 QAM256 A 379768900 QAM256 A 385769200 QAM256 A 391769500 QAM256 A 397769800 QAM256 A 403770100 QAM256 A 409770400 QAM256 A 415770700 QAM256 A 421771000 QAM256 A 427771300 QAM256 A 433771600 QAM256 A 439771900 QAM256 A 445772200 QAM256 A 451772500 QAM256 A 457772800 QAM256 A 463773100 QAM256 A 469773400 QAM256 A 475773700 QAM256 A 481774000 QAM256 A 487774300 QAM256 A 493774600 QAM256 A 499774900 QAM256 A 505775200 QAM256 A 511775500 QAM256 A 517775800 QAM256 A 523776100 QAM256 A 529776400 QAM256 A 535776700 QAM256 A 541777000 QAM256 A 547777300 QAM256 A 553777600 QAM256 A 559777900 QAM256 A 565778200 QAM256 A 571778500 QAM256 A 577778800 QAM256 A 583779100 QAM256 A 589779400 QAM256 A 595779700 QAM256 A 601780000 QAM256 A 607780300 QAM256 A 613780600 QAM256 A 619780900 QAM256 A 625781200 QAM256 A 631781500 QAM256 A 637781800 QAM256 A 643782100 QAM256 A 649782400 QAM256 A 655782700 QAM256 A 661783000 QAM256 A 667783300 QAM256 A 673783600 QAM256 A 679783900 QAM256 A 685784200 QAM256 A 691784500 QAM256 A 697784800 QAM256 A 703785100 QAM256 A 709785400 QAM256 A 715785700 QAM256 A 721786000 QAM256 A 727786300 QAM256 A 733786600 QAM256 A 739786900 QAM256 A 745787200 QAM256 A 751787500 QAM256 A 757787800 QAM256 A 763788100 QAM256 A 769788400 QAM256 A 775788700 QAM256 A 781789000 QAM256 A 787789300 QAM256 A 793789600 QAM256 A 799789900 QAM256 [atsc/us-Cable-EIA-542-IRC-center_frequencies-QAM256] A 57025000 QAM256 A 63012500 QAM256 A 69012500 QAM256 A 75012500 QAM256 A 79012500 QAM256 A 85012500 QAM256 A 93012500 QAM256 A 99012500 QAM256 A 105012500 QAM256 A 111012500 QAM256 A 117012500 QAM256 A 123012500 QAM256 A 129012500 QAM256 A 135012500 QAM256 A 141012500 QAM256 A 147012500 QAM256 A 153012500 QAM256 A 159012500 QAM256 A 165012500 QAM256 A 171012500 QAM256 A 177012500 QAM256 A 183012500 QAM256 A 189012500 QAM256 A 195012500 QAM256 A 201012500 QAM256 A 207012500 QAM256 A 213012500 QAM256 A 219012500 QAM256 A 225012500 QAM256 A 231012500 QAM256 A 237012500 QAM256 A 243012500 QAM256 A 249012500 QAM256 A 255012500 QAM256 A 261012500 QAM256 A 267012500 QAM256 A 273012500 QAM256 A 279012500 QAM256 A 285012500 QAM256 A 291012500 QAM256 A 297012500 QAM256 A 303012500 QAM256 A 309012500 QAM256 A 315012500 QAM256 A 321012500 QAM256 A 327012500 QAM256 A 333025000 QAM256 A 339012500 QAM256 A 345012500 QAM256 A 351012500 QAM256 A 357012500 QAM256 A 363012500 QAM256 A 369012500 QAM256 A 375012500 QAM256 A 381012500 QAM256 A 387012500 QAM256 A 393012500 QAM256 A 399012500 QAM256 A 405012500 QAM256 A 411012500 QAM256 A 417012500 QAM256 A 423012500 QAM256 A 429012500 QAM256 A 435012500 QAM256 A 441012500 QAM256 A 447012500 QAM256 A 453012500 QAM256 A 459012500 QAM256 A 465012500 QAM256 A 471012500 QAM256 A 477012500 QAM256 A 483012500 QAM256 A 489012500 QAM256 A 495012500 QAM256 A 501012500 QAM256 A 507012500 QAM256 A 513012500 QAM256 A 519012500 QAM256 A 525012500 QAM256 A 531012500 QAM256 A 537012500 QAM256 A 543012500 QAM256 A 549012500 QAM256 A 555012500 QAM256 A 561012500 QAM256 A 567012500 QAM256 A 573012500 QAM256 A 579012500 QAM256 A 585012500 QAM256 A 591012500 QAM256 A 597012500 QAM256 A 603012500 QAM256 A 609012500 QAM256 A 615012500 QAM256 A 621012500 QAM256 A 627012500 QAM256 A 633012500 QAM256 A 639012500 QAM256 A 645012500 QAM256 A 651012500 QAM256 A 657012500 QAM256 A 663012500 QAM256 A 669012500 QAM256 A 675012500 QAM256 A 681012500 QAM256 A 687012500 QAM256 A 693012500 QAM256 A 699012500 QAM256 A 705012500 QAM256 A 711012500 QAM256 A 717012500 QAM256 A 723012500 QAM256 A 729012500 QAM256 A 735012500 QAM256 A 741012500 QAM256 A 747012500 QAM256 A 753012500 QAM256 A 759012500 QAM256 A 765012500 QAM256 A 771012500 QAM256 A 777012500 QAM256 A 783012500 QAM256 A 789012500 QAM256 A 795012500 QAM256 A 801012500 QAM256 [atsc/us-Cable-HRC-center-frequencies-QAM256] A 55752700 QAM256 A 61753000 QAM256 A 67753300 QAM256 A 73753600 QAM256 A 77753900 QAM256 A 83754200 QAM256 A 91754500 QAM256 A 97754800 QAM256 A 103755100 QAM256 A 109755400 QAM256 A 115755700 QAM256 A 121756000 QAM256 A 127756300 QAM256 A 133756600 QAM256 A 139756900 QAM256 A 145757200 QAM256 A 151757500 QAM256 A 157757800 QAM256 A 163758100 QAM256 A 169758400 QAM256 A 175758700 QAM256 A 181759000 QAM256 A 187759300 QAM256 A 193759600 QAM256 A 199759900 QAM256 A 205760200 QAM256 A 211760500 QAM256 A 217760800 QAM256 A 223761100 QAM256 A 229761400 QAM256 A 235761700 QAM256 A 241762000 QAM256 A 247762300 QAM256 A 253762600 QAM256 A 259762900 QAM256 A 265763200 QAM256 A 271763500 QAM256 A 277763800 QAM256 A 283764100 QAM256 A 289764400 QAM256 A 295764700 QAM256 A 301765000 QAM256 A 307765300 QAM256 A 313765600 QAM256 A 319765900 QAM256 A 325766200 QAM256 A 331766500 QAM256 A 337766800 QAM256 A 343767100 QAM256 A 349767400 QAM256 A 355767700 QAM256 A 361768000 QAM256 A 367768300 QAM256 A 373768600 QAM256 A 379768900 QAM256 A 385769200 QAM256 A 391769500 QAM256 A 397769800 QAM256 A 403770100 QAM256 A 409770400 QAM256 A 415770700 QAM256 A 421771000 QAM256 A 427771300 QAM256 A 433771600 QAM256 A 439771900 QAM256 A 445772200 QAM256 A 451772500 QAM256 A 457772800 QAM256 A 463773100 QAM256 A 469773400 QAM256 A 475773700 QAM256 A 481774000 QAM256 A 487774300 QAM256 A 493774600 QAM256 A 499774900 QAM256 A 505775200 QAM256 A 511775500 QAM256 A 517775800 QAM256 A 523776100 QAM256 A 529776400 QAM256 A 535776700 QAM256 A 541777000 QAM256 A 547777300 QAM256 A 553777600 QAM256 A 559777900 QAM256 A 565778200 QAM256 A 571778500 QAM256 A 577778800 QAM256 A 583779100 QAM256 A 589779400 QAM256 A 595779700 QAM256 A 601780000 QAM256 A 607780300 QAM256 A 613780600 QAM256 A 619780900 QAM256 A 625781200 QAM256 A 631781500 QAM256 A 637781800 QAM256 A 643782100 QAM256 A 649782400 QAM256 A 655782700 QAM256 A 661783000 QAM256 A 667783300 QAM256 A 673783600 QAM256 A 679783900 QAM256 A 685784200 QAM256 A 691784500 QAM256 A 697784800 QAM256 A 703785100 QAM256 A 709785400 QAM256 A 715785700 QAM256 A 721786000 QAM256 A 727786300 QAM256 A 733786600 QAM256 A 739786900 QAM256 A 745787200 QAM256 A 751787500 QAM256 A 757787800 QAM256 A 763788100 QAM256 A 769788400 QAM256 A 775788700 QAM256 A 781789000 QAM256 A 787789300 QAM256 A 793789600 QAM256 A 799789900 QAM256 [atsc/us-Cable-IRC-center-frequencies-QAM256] A 57000000 QAM256 A 63000000 QAM256 A 69000000 QAM256 A 75000000 QAM256 A 79000000 QAM256 A 85000000 QAM256 A 93000000 QAM256 A 99000000 QAM256 A 105000000 QAM256 A 111000000 QAM256 A 117000000 QAM256 A 123000000 QAM256 A 129000000 QAM256 A 135000000 QAM256 A 141000000 QAM256 A 147000000 QAM256 A 153000000 QAM256 A 159000000 QAM256 A 165000000 QAM256 A 171000000 QAM256 A 177000000 QAM256 A 183000000 QAM256 A 189000000 QAM256 A 195000000 QAM256 A 201000000 QAM256 A 207000000 QAM256 A 213000000 QAM256 A 219000000 QAM256 A 225000000 QAM256 A 231000000 QAM256 A 237000000 QAM256 A 243000000 QAM256 A 249000000 QAM256 A 255000000 QAM256 A 261000000 QAM256 A 267000000 QAM256 A 273000000 QAM256 A 279000000 QAM256 A 285000000 QAM256 A 291000000 QAM256 A 297000000 QAM256 A 303000000 QAM256 A 309000000 QAM256 A 315000000 QAM256 A 321000000 QAM256 A 327000000 QAM256 A 333000000 QAM256 A 339000000 QAM256 A 345000000 QAM256 A 351000000 QAM256 A 357000000 QAM256 A 363000000 QAM256 A 369000000 QAM256 A 375000000 QAM256 A 381000000 QAM256 A 387000000 QAM256 A 393000000 QAM256 A 399000000 QAM256 A 405000000 QAM256 A 411000000 QAM256 A 417000000 QAM256 A 423000000 QAM256 A 429000000 QAM256 A 435000000 QAM256 A 441000000 QAM256 A 447000000 QAM256 A 453000000 QAM256 A 459000000 QAM256 A 465000000 QAM256 A 471000000 QAM256 A 477000000 QAM256 A 483000000 QAM256 A 489000000 QAM256 A 495000000 QAM256 A 501000000 QAM256 A 507000000 QAM256 A 513000000 QAM256 A 519000000 QAM256 A 525000000 QAM256 A 531000000 QAM256 A 537000000 QAM256 A 543000000 QAM256 A 549000000 QAM256 A 555000000 QAM256 A 561000000 QAM256 A 567000000 QAM256 A 573000000 QAM256 A 579000000 QAM256 A 585000000 QAM256 A 591000000 QAM256 A 597000000 QAM256 A 603000000 QAM256 A 609000000 QAM256 A 615000000 QAM256 A 621000000 QAM256 A 627000000 QAM256 A 633000000 QAM256 A 639000000 QAM256 A 645000000 QAM256 A 651000000 QAM256 A 657000000 QAM256 A 663000000 QAM256 A 669000000 QAM256 A 675000000 QAM256 A 681000000 QAM256 A 687000000 QAM256 A 693000000 QAM256 A 699000000 QAM256 A 705000000 QAM256 A 711000000 QAM256 A 717000000 QAM256 A 723000000 QAM256 A 729000000 QAM256 A 735000000 QAM256 A 741000000 QAM256 A 747000000 QAM256 A 753000000 QAM256 A 759000000 QAM256 A 765000000 QAM256 A 771000000 QAM256 A 777000000 QAM256 A 783000000 QAM256 A 789000000 QAM256 A 795000000 QAM256 A 801000000 QAM256 [atsc/us-Cable-Standard-center-frequencies-QAM256] A 57000000 QAM256 A 63000000 QAM256 A 69000000 QAM256 A 79000000 QAM256 A 85000000 QAM256 A 93000000 QAM256 A 99000000 QAM256 A 105000000 QAM256 A 111025000 QAM256 A 117025000 QAM256 A 123012500 QAM256 A 129012500 QAM256 A 135012500 QAM256 A 141000000 QAM256 A 147000000 QAM256 A 153000000 QAM256 A 159000000 QAM256 A 165000000 QAM256 A 171000000 QAM256 A 177000000 QAM256 A 183000000 QAM256 A 189000000 QAM256 A 195000000 QAM256 A 201000000 QAM256 A 207000000 QAM256 A 213000000 QAM256 A 219000000 QAM256 A 225000000 QAM256 A 231012500 QAM256 A 237012500 QAM256 A 243012500 QAM256 A 249012500 QAM256 A 255012500 QAM256 A 261012500 QAM256 A 267012500 QAM256 A 273012500 QAM256 A 279012500 QAM256 A 285012500 QAM256 A 291012500 QAM256 A 297012500 QAM256 A 303012500 QAM256 A 309012500 QAM256 A 315012500 QAM256 A 321012500 QAM256 A 327012500 QAM256 A 333025000 QAM256 A 339012500 QAM256 A 345012500 QAM256 A 351012500 QAM256 A 357012500 QAM256 A 363012500 QAM256 A 369012500 QAM256 A 375012500 QAM256 A 381012500 QAM256 A 387012500 QAM256 A 393012500 QAM256 A 399012500 QAM256 A 405000000 QAM256 A 411000000 QAM256 A 417000000 QAM256 A 423000000 QAM256 A 429000000 QAM256 A 435000000 QAM256 A 441000000 QAM256 A 447000000 QAM256 A 453000000 QAM256 A 459000000 QAM256 A 465000000 QAM256 A 471000000 QAM256 A 477000000 QAM256 A 483000000 QAM256 A 489000000 QAM256 A 495000000 QAM256 A 501000000 QAM256 A 507000000 QAM256 A 513000000 QAM256 A 519000000 QAM256 A 525000000 QAM256 A 531000000 QAM256 A 537000000 QAM256 A 543000000 QAM256 A 549000000 QAM256 A 555000000 QAM256 A 561000000 QAM256 A 567000000 QAM256 A 573000000 QAM256 A 579000000 QAM256 A 585000000 QAM256 A 591000000 QAM256 A 597000000 QAM256 A 603000000 QAM256 A 609000000 QAM256 A 615000000 QAM256 A 621000000 QAM256 A 627000000 QAM256 A 633000000 QAM256 A 639000000 QAM256 A 645000000 QAM256 A 651000000 QAM256 A 657000000 QAM256 A 663000000 QAM256 A 669000000 QAM256 A 675000000 QAM256 A 681000000 QAM256 A 687000000 QAM256 A 693000000 QAM256 A 699000000 QAM256 A 705000000 QAM256 A 711000000 QAM256 A 717000000 QAM256 A 723000000 QAM256 A 729000000 QAM256 A 735000000 QAM256 A 741000000 QAM256 A 747000000 QAM256 A 753000000 QAM256 A 759000000 QAM256 A 765000000 QAM256 A 771000000 QAM256 A 777000000 QAM256 A 783000000 QAM256 A 789000000 QAM256 A 795000000 QAM256 A 801000000 QAM256 [atsc/us-ID-Boise] A 195000000 8VSB A 213000000 8VSB A 515000000 8VSB A 533000000 8VSB A 545000000 8VSB A 557000000 8VSB [atsc/us-MA-Boston] A 503000000 8VSB A 509000000 8VSB A 527000000 8VSB A 563000000 8VSB A 569000000 8VSB A 575000000 8VSB A 581000000 8VSB A 623000000 8VSB A 635000000 8VSB A 641000000 8VSB A 647000000 8VSB [atsc/us-MI-Lansing] A 617000000 8VSB A 695000000 8VSB A 719000000 8VSB A 731000000 8VSB A 743000000 8VSB [atsc/us-NTSC-center-frequencies-8VSB] A 57000000 8VSB A 63000000 8VSB A 69000000 8VSB A 79000000 8VSB A 85000000 8VSB A 177000000 8VSB A 183000000 8VSB A 189000000 8VSB A 195000000 8VSB A 201000000 8VSB A 207000000 8VSB A 213000000 8VSB A 473000000 8VSB A 479000000 8VSB A 485000000 8VSB A 491000000 8VSB A 497000000 8VSB A 503000000 8VSB A 509000000 8VSB A 515000000 8VSB A 521000000 8VSB A 527000000 8VSB A 533000000 8VSB A 539000000 8VSB A 545000000 8VSB A 551000000 8VSB A 557000000 8VSB A 563000000 8VSB A 569000000 8VSB A 575000000 8VSB A 581000000 8VSB A 587000000 8VSB A 593000000 8VSB A 599000000 8VSB A 605000000 8VSB A 611000000 8VSB A 617000000 8VSB A 623000000 8VSB A 629000000 8VSB A 635000000 8VSB A 641000000 8VSB A 647000000 8VSB A 653000000 8VSB A 659000000 8VSB A 665000000 8VSB A 671000000 8VSB A 677000000 8VSB A 683000000 8VSB A 689000000 8VSB A 695000000 8VSB A 701000000 8VSB A 707000000 8VSB A 713000000 8VSB A 719000000 8VSB A 725000000 8VSB A 731000000 8VSB A 737000000 8VSB A 743000000 8VSB A 749000000 8VSB A 755000000 8VSB A 761000000 8VSB A 767000000 8VSB A 773000000 8VSB A 779000000 8VSB A 785000000 8VSB A 791000000 8VSB A 797000000 8VSB A 803000000 8VSB [atsc/us-PA-Philadelphia] A 575000000 8VSB A 581000000 8VSB A 593000000 8VSB A 647000000 8VSB A 713000000 8VSB A 773000000 8VSB A 785000000 8VSB A 791000000 8VSB kaffeine-1.2.2/src/ensurenopendingoperation.cpp0000644000175000017500000000173511552636277021355 0ustar lxuserlxuser/* * ensurenopendingoperation.cpp * * Copyright (C) 2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "ensurenopendingoperation.h" #include void EnsureNoPendingOperation::printFatalErrorMessage() { kFatal() << "illegal recursive call"; } kaffeine-1.2.2/src/datetimeedit.cpp0000644000175000017500000000730611552636277016673 0ustar lxuserlxuser/* * datetimeedit.cpp * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "datetimeedit.h" #include #include static QString localQtDateFormat() { QString dateFormat = KGlobal::locale()->dateFormatShort(); for (int i = 0; (i + 1) < dateFormat.size(); ++i) { if (dateFormat.at(i) != '%') { continue; } switch (dateFormat.at(i + 1).unicode()) { case 'Y': dateFormat.replace(i, 2, "yyyy"); break; case 'y': dateFormat.replace(i, 2, "yy"); break; case 'n': dateFormat.replace(i, 2, 'M'); break; case 'm': dateFormat.replace(i, 2, "MM"); break; case 'e': dateFormat.replace(i, 2, 'd'); break; case 'd': dateFormat.replace(i, 2, "dd"); break; case 'b': dateFormat.replace(i, 2, "MMM"); break; case 'B': dateFormat.replace(i, 2, "MMMM"); break; case 'a': dateFormat.replace(i, 2, "ddd"); break; case 'A': dateFormat.replace(i, 2, "dddd"); break; } } return dateFormat; } static QString localQtTimeFormat(bool showSeconds, bool duration) { QString timeFormat = KGlobal::locale()->timeFormat(); for (int i = 0; (i + 1) < timeFormat.size(); ++i) { if (timeFormat.at(i) != '%') { continue; } bool strip = false; switch (timeFormat.at(i + 1).unicode()) { case 'H': case 'I': timeFormat.replace(i, 2, "hh"); break; case 'k': case 'l': timeFormat.replace(i, 2, 'h'); break; case 'M': timeFormat.replace(i, 2, "mm"); break; case 'S': if (showSeconds) { timeFormat.replace(i, 2, "ss"); } else { strip = true; } break; case 'p': if (!duration) { timeFormat.replace(i, 2, "AP"); } else { strip = true; } break; } if (strip) { int beginRemove = i; int endRemove = i + 2; while ((beginRemove > 0) && timeFormat.at(beginRemove - 1).isSpace()) { --beginRemove; } if ((beginRemove > 0) && timeFormat.at(beginRemove - 1).isPunct() && (timeFormat.at(beginRemove - 1) != '%')) { --beginRemove; while ((beginRemove > 0) && timeFormat.at(beginRemove - 1).isSpace()) { --beginRemove; } } if (beginRemove == 0) { while ((endRemove < timeFormat.size()) && timeFormat.at(endRemove).isSpace()) { ++endRemove; } if ((endRemove < timeFormat.size()) && timeFormat.at(endRemove).isPunct() && (timeFormat.at(endRemove) != '%')) { ++endRemove; while ((endRemove < timeFormat.size()) && timeFormat.at(endRemove).isSpace()) { ++endRemove; } } } timeFormat.remove(beginRemove, endRemove - beginRemove); i = beginRemove - 1; } } return timeFormat; } DateTimeEdit::DateTimeEdit(QWidget *parent) : QDateTimeEdit(parent) { setDisplayFormat(localQtDateFormat() + ' ' + localQtTimeFormat(false, false)); } DateTimeEdit::~DateTimeEdit() { } DurationEdit::DurationEdit(QWidget *parent) : QTimeEdit(parent) { setDisplayFormat(localQtTimeFormat(false, true)); } DurationEdit::~DurationEdit() { } kaffeine-1.2.2/src/osdwidget.cpp0000644000175000017500000000503711552636277016221 0ustar lxuserlxuser/* * osdwidget.cpp * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "osdwidget.h" #include #include OsdWidget::OsdWidget(QWidget *parent) : QWidget(parent), osdObject(NULL) { timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(hideOsd())); hide(); } OsdWidget::~OsdWidget() { } void OsdWidget::showText(const QString &text, int duration) { QFont osdFont = font(); osdFont.setPointSize(25); rect = QRect(QPoint(0, 0), QFontMetrics(osdFont).size(Qt::AlignLeft, text)); rect.adjust(0, 0, 10, 0); pixmap = QPixmap(rect.size()); { QPainter painter(&pixmap); painter.fillRect(rect, Qt::black); painter.setFont(osdFont); painter.setPen(Qt::white); painter.drawText(rect.adjusted(5, 0, 0, 0), Qt::AlignLeft, text); } osdObject = NULL; update(); show(); timer->start(duration); } void OsdWidget::showObject(OsdObject *osdObject_, int duration) { osdObject = osdObject_; update(); show(); if (duration >= 0) { timer->start(duration); } else { timer->stop(); } } void OsdWidget::hideObject() { if (osdObject != NULL) { osdObject = NULL; timer->stop(); hide(); } } void OsdWidget::paintEvent(QPaintEvent *) { if (osdObject == NULL) { if (layoutDirection() == Qt::LeftToRight) { QPainter(this).drawPixmap(20, 20, pixmap); rect.moveTo(20, 20); } else { int x = width() - pixmap.width() - 20; QPainter(this).drawPixmap(x, 20, pixmap); rect.moveTo(x, 20); } } else { rect = QWidget::rect(); rect.adjust(0, 0, -40, -60); pixmap = osdObject->paintOsd(rect, font(), layoutDirection()); int y = (4 * height()) / 5 - rect.height(); if (y < 30) { y = 30; } rect.moveTo(20, y); QPainter(this).drawPixmap(rect.left(), rect.top(), pixmap); } setMask(rect); } void OsdWidget::hideOsd() { timer->stop(); hide(); } kaffeine-1.2.2/src/mediawidget.cpp0000644000175000017500000012464211552636277016517 0ustar lxuserlxuser/* * mediawidget.cpp * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "mediawidget.h" #include "mediawidget_p.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // bsd compatibility #include // bsd compatibility #include #include #include "backend-xine/xinemediawidget.h" #include "osdwidget.h" DvbFeed::DvbFeed(QObject *parent) : QObject(parent), timeShiftPrepared(false), timeShiftActive(false), ignoreSourceChange(false), readFd(-1), writeFd(-1), notifier(NULL) { QString fileName = KStandardDirs::locateLocal("appdata", "dvbpipe.m2t"); QFile::remove(fileName); url = KUrl::fromLocalFile(fileName); url.setScheme("fifo"); if (mkfifo(QFile::encodeName(fileName), 0600) != 0) { kError() << "mkfifo failed"; return; } readFd = open(QFile::encodeName(fileName), O_RDONLY | O_NONBLOCK); if (readFd < 0) { kError() << "open failed"; return; } writeFd = open(QFile::encodeName(fileName), O_WRONLY | O_NONBLOCK); if (writeFd < 0) { kError() << "open failed"; close(readFd); readFd = -1; } notifier = new QSocketNotifier(writeFd, QSocketNotifier::Write, this); notifier->setEnabled(false); connect(notifier, SIGNAL(activated(int)), this, SLOT(readyWrite())); } DvbFeed::~DvbFeed() { endOfData(); } KUrl DvbFeed::getUrl() const { return url; } void DvbFeed::writeData(const QByteArray &data) { if (writeFd >= 0) { buffers.append(data); if (!flush()) { notifier->setEnabled(true); } } } void DvbFeed::endOfData() { if (writeFd >= 0) { notifier->setEnabled(false); close(writeFd); writeFd = -1; } if (readFd >= 0) { close(readFd); readFd = -1; } } void DvbFeed::readyWrite() { if (flush()) { notifier->setEnabled(false); } } bool DvbFeed::flush() { while (!buffers.isEmpty()) { const QByteArray &buffer = *buffers.constBegin(); int bytesWritten = write(writeFd, buffer.constData(), buffer.size()); if ((bytesWritten < 0) && (errno == EINTR)) { continue; } if (bytesWritten == buffer.size()) { buffers.removeFirst(); continue; } if (bytesWritten > 0) { buffers.first().remove(0, bytesWritten); } break; } return buffers.isEmpty(); } JumpToPositionDialog::JumpToPositionDialog(MediaWidget *mediaWidget_) : KDialog(mediaWidget_), mediaWidget(mediaWidget_) { setCaption(i18nc("@title:window", "Jump to Position")); QWidget *widget = new QWidget(this); QBoxLayout *layout = new QVBoxLayout(widget); layout->addWidget(new QLabel(i18n("Enter a position:"))); timeEdit = new QTimeEdit(this); timeEdit->setDisplayFormat("hh:mm:ss"); timeEdit->setTime(QTime().addSecs(mediaWidget->getPosition() / 1000)); layout->addWidget(timeEdit); timeEdit->setFocus(); setMainWidget(widget); } JumpToPositionDialog::~JumpToPositionDialog() { } void JumpToPositionDialog::accept() { mediaWidget->setPosition(QTime().msecsTo(timeEdit->time())); KDialog::accept(); } void SeekSlider::mousePressEvent(QMouseEvent *event) { int buttons = style()->styleHint(QStyle::SH_Slider_AbsoluteSetButtons); Qt::MouseButton button = static_cast(buttons & (~(buttons - 1))); QMouseEvent modifiedEvent(event->type(), event->pos(), event->globalPos(), button, event->buttons() ^ event->button() ^ button, event->modifiers()); QSlider::mousePressEvent(&modifiedEvent); } MediaWidget::MediaWidget(KMenu *menu_, KToolBar *toolBar, KActionCollection *collection, QWidget *parent) : QWidget(parent), menu(menu_), dvbFeed(NULL), screenSaverSuspended(false) { QBoxLayout *layout = new QVBoxLayout(this); layout->setMargin(0); setAcceptDrops(true); setFocusPolicy(Qt::StrongFocus); QPalette palette = QWidget::palette(); palette.setColor(backgroundRole(), Qt::black); setPalette(palette); setAutoFillBackground(true); backend = new XineMediaWidget(this); connect(backend, SIGNAL(sourceChanged()), this, SLOT(sourceChanged())); connect(backend, SIGNAL(playbackFinished()), this, SLOT(playbackFinished())); connect(backend, SIGNAL(playbackStopped()), this, SLOT(playbackStopped())); connect(backend, SIGNAL(playbackChanged(bool)), this, SLOT(playbackChanged(bool))); connect(backend, SIGNAL(totalTimeChanged(int)), this, SLOT(totalTimeChanged(int))); connect(backend, SIGNAL(currentTimeChanged(int)), this, SLOT(currentTimeChanged(int))); connect(backend, SIGNAL(metadataChanged(QMap)), this, SLOT(setMetadata(QMap))); connect(backend, SIGNAL(seekableChanged(bool)), this, SLOT(seekableChanged(bool))); connect(backend, SIGNAL(audioChannelsChanged(QStringList,int)), this, SLOT(audioChannelsChanged(QStringList,int))); connect(backend, SIGNAL(currentAudioChannelChanged(int)), this, SLOT(setCurrentAudioChannel(int))); connect(backend, SIGNAL(subtitlesChanged(QStringList,int)), this, SLOT(subtitlesChanged(QStringList,int))); connect(backend, SIGNAL(currentSubtitleChanged(int)), this, SLOT(setCurrentSubtitle(int))); connect(backend, SIGNAL(dvdPlaybackChanged(bool)), this, SLOT(dvdPlaybackChanged(bool))); connect(backend, SIGNAL(titlesChanged(int,int)), this, SLOT(titlesChanged(int,int))); connect(backend, SIGNAL(currentTitleChanged(int)), this, SLOT(setCurrentTitle(int))); connect(backend, SIGNAL(chaptersChanged(int,int)), this, SLOT(chaptersChanged(int,int))); connect(backend, SIGNAL(currentChapterChanged(int)), this, SLOT(setCurrentChapter(int))); connect(backend, SIGNAL(anglesChanged(int,int)), this, SLOT(anglesChanged(int,int))); connect(backend, SIGNAL(currentAngleChanged(int)), this, SLOT(setCurrentAngle(int))); connect(backend, SIGNAL(videoSizeChanged()), this, SLOT(videoSizeChanged())); layout->addWidget(backend); osdWidget = new OsdWidget(this); actionPrevious = new KAction(KIcon("media-skip-backward"), i18n("Previous"), this); actionPrevious->setShortcut(KShortcut(Qt::Key_PageUp, Qt::Key_MediaPrevious)); connect(actionPrevious, SIGNAL(triggered()), this, SLOT(previous())); toolBar->addAction(collection->addAction("controls_previous", actionPrevious)); menu->addAction(actionPrevious); actionPlayPause = new KAction(this); actionPlayPause->setShortcut(KShortcut(Qt::Key_Space, Qt::Key_MediaPlay)); textPlay = i18n("Play"); textPause = i18n("Pause"); iconPlay = KIcon("media-playback-start"); iconPause = KIcon("media-playback-pause"); connect(actionPlayPause, SIGNAL(triggered(bool)), this, SLOT(pausedChanged(bool))); toolBar->addAction(collection->addAction("controls_play_pause", actionPlayPause)); menu->addAction(actionPlayPause); actionStop = new KAction(KIcon("media-playback-stop"), i18n("Stop"), this); actionStop->setShortcut(KShortcut(Qt::Key_Backspace, Qt::Key_MediaStop)); connect(actionStop, SIGNAL(triggered()), this, SLOT(stop())); toolBar->addAction(collection->addAction("controls_stop", actionStop)); menu->addAction(actionStop); actionNext = new KAction(KIcon("media-skip-forward"), i18n("Next"), this); actionNext->setShortcut(KShortcut(Qt::Key_PageDown, Qt::Key_MediaNext)); connect(actionNext, SIGNAL(triggered()), this, SLOT(next())); toolBar->addAction(collection->addAction("controls_next", actionNext)); menu->addAction(actionNext); menu->addSeparator(); displayMode = NormalMode; fullScreenAction = new KAction(KIcon("view-fullscreen"), i18nc("'Playback' menu", "Full Screen Mode"), this); fullScreenAction->setShortcut(Qt::Key_F); connect(fullScreenAction, SIGNAL(triggered()), this, SLOT(toggleFullScreen())); menu->addAction(collection->addAction("view_fullscreen", fullScreenAction)); minimalModeAction = new KAction(KIcon("view-fullscreen"), i18nc("'Playback' menu", "Minimal Mode"), this); minimalModeAction->setShortcut(Qt::Key_Period); connect(minimalModeAction, SIGNAL(triggered()), this, SLOT(toggleMinimalMode())); menu->addAction(collection->addAction("view_minimal_mode", minimalModeAction)); audioChannelBox = new KComboBox(toolBar); audioChannelsReady = false; connect(audioChannelBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentAudioChannelChanged(int))); toolBar->addWidget(audioChannelBox); subtitleBox = new KComboBox(toolBar); textSubtitlesOff = i18nc("subtitle selection entry", "off"); subtitlesReady = false; connect(subtitleBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentSubtitleChanged(int))); toolBar->addWidget(subtitleBox); KMenu *audioMenu = new KMenu(i18nc("'Playback' menu", "Audio"), this); KAction *action = new KAction(KIcon("audio-volume-high"), i18nc("'Audio' menu", "Increase Volume"), this); action->setShortcut(KShortcut(Qt::Key_Plus, Qt::Key_VolumeUp)); connect(action, SIGNAL(triggered()), this, SLOT(increaseVolume())); audioMenu->addAction(collection->addAction("controls_increase_volume", action)); action = new KAction(KIcon("audio-volume-low"), i18nc("'Audio' menu", "Decrease Volume"), this); action->setShortcut(KShortcut(Qt::Key_Minus, Qt::Key_VolumeDown)); connect(action, SIGNAL(triggered()), this, SLOT(decreaseVolume())); audioMenu->addAction(collection->addAction("controls_decrease_volume", action)); muteAction = new KAction(i18nc("'Audio' menu", "Mute Volume"), this); mutedIcon = KIcon("audio-volume-muted"); unmutedIcon = KIcon("audio-volume-medium"); muteAction->setIcon(unmutedIcon); muteAction->setShortcut(KShortcut(Qt::Key_M, Qt::Key_VolumeMute)); isMuted = false; connect(muteAction, SIGNAL(triggered()), this, SLOT(mutedChanged())); toolBar->addAction(collection->addAction("controls_mute_volume", muteAction)); audioMenu->addAction(muteAction); menu->addMenu(audioMenu); KMenu *videoMenu = new KMenu(i18nc("'Playback' menu", "Video"), this); menu->addMenu(videoMenu); menu->addSeparator(); deinterlaceAction = new KAction(KIcon("format-justify-center"), i18nc("'Video' menu", "Deinterlace"), this); deinterlaceAction->setCheckable(true); deinterlaceAction->setChecked( KGlobal::config()->group("MediaObject").readEntry("Deinterlace", true)); deinterlaceAction->setShortcut(Qt::Key_I); connect(deinterlaceAction, SIGNAL(toggled(bool)), this, SLOT(deinterlacingChanged(bool))); backend->setDeinterlacing(deinterlaceAction->isChecked()); videoMenu->addAction(collection->addAction("controls_deinterlace", deinterlaceAction)); KMenu *aspectMenu = new KMenu(i18nc("'Video' menu", "Aspect Ratio"), this); QActionGroup *aspectGroup = new QActionGroup(this); connect(aspectGroup, SIGNAL(triggered(QAction*)), this, SLOT(aspectRatioChanged(QAction*))); action = new KAction(i18nc("'Aspect Ratio' menu", "Automatic"), aspectGroup); action->setCheckable(true); action->setChecked(true); action->setData(AspectRatioAuto); aspectMenu->addAction(collection->addAction("controls_aspect_auto", action)); action = new KAction(i18nc("'Aspect Ratio' menu", "Fit to Window"), aspectGroup); action->setCheckable(true); action->setData(AspectRatioWidget); aspectMenu->addAction(collection->addAction("controls_aspect_widget", action)); action = new KAction(i18nc("'Aspect Ratio' menu", "4:3"), aspectGroup); action->setCheckable(true); action->setData(AspectRatio4_3); aspectMenu->addAction(collection->addAction("controls_aspect_4_3", action)); action = new KAction(i18nc("'Aspect Ratio' menu", "16:9"), aspectGroup); action->setCheckable(true); action->setData(AspectRatio16_9); aspectMenu->addAction(collection->addAction("controls_aspect_16_9", action)); videoMenu->addMenu(aspectMenu); KMenu *autoResizeMenu = new KMenu(i18n("Automatic Resize"), this); QActionGroup *autoResizeGroup = new QActionGroup(this); // we need an event even if you select the currently selected item autoResizeGroup->setExclusive(false); connect(autoResizeGroup, SIGNAL(triggered(QAction*)), this, SLOT(autoResizeTriggered(QAction*))); action = new KAction(i18nc("automatic resize", "Off"), autoResizeGroup); action->setCheckable(true); action->setData(0); autoResizeMenu->addAction(collection->addAction("controls_autoresize_off", action)); action = new KAction(i18nc("automatic resize", "Original Size"), autoResizeGroup); action->setCheckable(true); action->setData(1); autoResizeMenu->addAction(collection->addAction("controls_autoresize_original", action)); action = new KAction(i18nc("automatic resize", "Double Size"), autoResizeGroup); action->setCheckable(true); action->setData(2); autoResizeMenu->addAction(collection->addAction("controls_autoresize_double", action)); autoResizeFactor = KGlobal::config()->group("MediaObject").readEntry("AutoResizeFactor", 0); if ((autoResizeFactor < 0) || (autoResizeFactor > 2)) { autoResizeFactor = 0; } autoResizeGroup->actions().at(autoResizeFactor)->setChecked(true); videoMenu->addMenu(autoResizeMenu); action = new KAction(i18n("Volume Slider"), this); volumeSlider = new QSlider(toolBar); volumeSlider->setFocusPolicy(Qt::NoFocus); volumeSlider->setOrientation(Qt::Horizontal); volumeSlider->setRange(0, 100); volumeSlider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); volumeSlider->setToolTip(action->text()); volumeSlider->setValue(KGlobal::config()->group("MediaObject").readEntry("Volume", 100)); connect(volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int))); backend->setVolume(volumeSlider->value()); action->setDefaultWidget(volumeSlider); toolBar->addAction(collection->addAction("controls_volume_slider", action)); jumpToPositionAction = new KAction(KIcon("go-jump"), i18nc("@action:inmenu", "Jump to Position..."), this); jumpToPositionAction->setShortcut(Qt::CTRL + Qt::Key_J); connect(jumpToPositionAction, SIGNAL(triggered()), this, SLOT(jumpToPosition())); menu->addAction(collection->addAction("controls_jump_to_position", jumpToPositionAction)); navigationMenu = new KMenu(i18nc("playback menu", "Skip"), this); menu->addMenu(navigationMenu); menu->addSeparator(); shortSkipDuration = KGlobal::config()->group("MediaObject").readEntry("ShortSkipDuration", 15); longSkipDuration = KGlobal::config()->group("MediaObject").readEntry("LongSkipDuration", 60); longSkipBackwardAction = new KAction(KIcon("media-skip-backward"), i18nc("submenu of 'Skip'", "Skip %1s Backward", longSkipDuration), this); longSkipBackwardAction->setShortcut(Qt::SHIFT + Qt::Key_Left); connect(longSkipBackwardAction, SIGNAL(triggered()), this, SLOT(longSkipBackward())); navigationMenu->addAction( collection->addAction("controls_long_skip_backward", longSkipBackwardAction)); shortSkipBackwardAction = new KAction(KIcon("media-skip-backward"), i18nc("submenu of 'Skip'", "Skip %1s Backward", shortSkipDuration), this); shortSkipBackwardAction->setShortcut(Qt::Key_Left); connect(shortSkipBackwardAction, SIGNAL(triggered()), this, SLOT(shortSkipBackward())); navigationMenu->addAction( collection->addAction("controls_skip_backward", shortSkipBackwardAction)); shortSkipForwardAction = new KAction(KIcon("media-skip-forward"), i18nc("submenu of 'Skip'", "Skip %1s Forward", shortSkipDuration), this); shortSkipForwardAction->setShortcut(Qt::Key_Right); connect(shortSkipForwardAction, SIGNAL(triggered()), this, SLOT(shortSkipForward())); navigationMenu->addAction( collection->addAction("controls_skip_forward", shortSkipForwardAction)); longSkipForwardAction = new KAction(KIcon("media-skip-forward"), i18nc("submenu of 'Skip'", "Skip %1s Forward", longSkipDuration), this); longSkipForwardAction->setShortcut(Qt::SHIFT + Qt::Key_Right); connect(longSkipForwardAction, SIGNAL(triggered()), this, SLOT(longSkipForward())); navigationMenu->addAction( collection->addAction("controls_long_skip_forward", longSkipForwardAction)); toolBar->addAction(KIcon("player-time"), i18n("Seek Slider"))->setEnabled(false); action = new KAction(i18n("Seek Slider"), this); seekSlider = new SeekSlider(toolBar); seekSlider->setFocusPolicy(Qt::NoFocus); seekSlider->setOrientation(Qt::Horizontal); seekSlider->setToolTip(action->text()); connect(seekSlider, SIGNAL(valueChanged(int)), backend, SLOT(seek(int))); action->setDefaultWidget(seekSlider); toolBar->addAction(collection->addAction("controls_position_slider", action)); menuAction = new KAction(KIcon("media-optical-video"), i18nc("dvd navigation", "Toggle Menu"), this); connect(menuAction, SIGNAL(triggered()), this, SLOT(toggleMenu())); menu->addAction(collection->addAction("controls_toggle_menu", menuAction)); titleMenu = new KMenu(i18nc("dvd navigation", "Title"), this); titleGroup = new QActionGroup(this); connect(titleGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentTitleChanged(QAction*))); menu->addMenu(titleMenu); chapterMenu = new KMenu(i18nc("dvd navigation", "Chapter"), this); chapterGroup = new QActionGroup(this); connect(chapterGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentChapterChanged(QAction*))); menu->addMenu(chapterMenu); angleMenu = new KMenu(i18nc("dvd navigation", "Angle"), this); angleGroup = new QActionGroup(this); connect(angleGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentAngleChanged(QAction*))); menu->addMenu(angleMenu); action = new KAction(i18n("Switch between elapsed and remaining time display"), this); timeButton = new QPushButton(toolBar); timeButton->setFocusPolicy(Qt::NoFocus); timeButton->setToolTip(action->text()); showElapsedTime = true; connect(timeButton, SIGNAL(clicked(bool)), this, SLOT(timeButtonClicked())); action->setDefaultWidget(timeButton); toolBar->addAction(collection->addAction("controls_time_button", action)); QTimer *timer = new QTimer(this); timer->start(50000); connect(timer, SIGNAL(timeout()), this, SLOT(checkScreenSaver())); playbackChanged(false); seekableChanged(false); totalTimeChanged(0); currentTimeChanged(0); audioChannelsChanged(QStringList(), -1); subtitlesChanged(QStringList(), -1); dvdPlaybackChanged(false); titlesChanged(0, -1); chaptersChanged(0, -1); anglesChanged(0, -1); } MediaWidget::~MediaWidget() { KGlobal::config()->group("MediaObject").writeEntry("Volume", volumeSlider->value()); KGlobal::config()->group("MediaObject").writeEntry("Deinterlace", deinterlaceAction->isChecked()); KGlobal::config()->group("MediaObject").writeEntry("AutoResizeFactor", autoResizeFactor); KGlobal::config()->group("MediaObject").writeEntry("ShortSkipDuration", shortSkipDuration); KGlobal::config()->group("MediaObject").writeEntry("LongSkipDuration", longSkipDuration); } QString MediaWidget::extensionFilter() { return QString( // generated from kaffeine.desktop's mime types "*.669 *.aac *.ac3 *.aif *.aifc *.aiff *.anim1 *.anim2 *.anim3 *.anim4 *.anim5 " "*.anim6 *.anim7 *.anim8 *.anim9 *.animj *.asf *.asx *.au *.avi *.bdm *.bdmv " "*.clpi *.cpi *.divx *.dv *.f4a *.f4b *.f4v *.flac *.flc *.fli *.flv *.it *.m15 " "*.m2t *.m2ts *.m3u *.m3u8 *.m4a *.m4b *.m4v *.med *.mka *.mkv *.mng *.mod *.moov " "*.mov *.mp+ *.mp2 *.mp3 *.mp4 *.mpc *.mpe *.mpeg *.mpg *.mpga *.mpl *.mpls *.mpp " "*.mtm *.mts *.nsv *.oga *.ogg *.ogm *.ogv *.ogx *.pls *.qt *.qtl *.qtvr *.ra " "*.ram *.rax *.rm *.rmj *.rmm *.rms *.rmvb *.rmx *.rv *.rvx *.s3m *.shn *.snd " "*.spx *.stm *.ts *.tta *.ult *.uni *.vlc *.vob *.voc *.wav *.wax *.wma *.wmv " "*.wmx *.wv *.wvp *.wvx *.xm *.xspf " // manual entries "*.kaffeine *.iso|") + i18nc("file filter", "Supported Media Files") + "\n*|" + i18nc("file filter", "All Files"); } MediaWidget::DisplayMode MediaWidget::getDisplayMode() const { return displayMode; } void MediaWidget::setDisplayMode(DisplayMode displayMode_) { if (displayMode != displayMode_) { switch (displayMode) { case NormalMode: break; case FullScreenMode: fullScreenAction->setIcon(KIcon("view-fullscreen")); fullScreenAction->setText(i18nc("'Playback' menu", "Full Screen Mode")); break; case MinimalMode: minimalModeAction->setIcon(KIcon("view-restore")); minimalModeAction->setText(i18nc("'Playback' menu", "Minimal Mode")); break; } displayMode = displayMode_; switch (displayMode) { case NormalMode: break; case FullScreenMode: fullScreenAction->setIcon(KIcon("view-restore")); fullScreenAction->setText(i18nc("'Playback' menu", "Exit Full Screen Mode")); break; case MinimalMode: minimalModeAction->setIcon(KIcon("view-fullscreen")); minimalModeAction->setText(i18nc("'Playback' menu", "Exit Minimal Mode")); break; } emit displayModeChanged(); } } void MediaWidget::play(const KUrl &url, const KUrl &subtitleUrl) { currentSourceName = url.toLocalFile(); if (currentSourceName.isEmpty()) { currentSourceName = url.fileName(); } externalSubtitles.clear(); currentExternalSubtitle = subtitleUrl; actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); backend->playUrl(url, subtitleUrl); } void MediaWidget::playAudioCd(const QString &device) { QString deviceName = device; if (deviceName.isEmpty()) { QList devices = Solid::Device::listFromQuery("OpticalDisc.availableContent & 'Audio'"); if (!devices.isEmpty()) { Solid::Block *block = devices.first().as(); if (block != NULL) { deviceName = block->device(); } } } currentSourceName.clear(); externalSubtitles.clear(); currentExternalSubtitle.clear(); actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); backend->playAudioCd(deviceName); } void MediaWidget::playVideoCd(const QString &device) { QString deviceName = device; if (deviceName.isEmpty()) { QList devices = Solid::Device::listFromQuery( "OpticalDisc.availableContent & 'VideoCd|SuperVideoCd'"); if (!devices.isEmpty()) { Solid::Block *block = devices.first().as(); if (block != NULL) { deviceName = block->device(); } } } currentSourceName.clear(); externalSubtitles.clear(); currentExternalSubtitle.clear(); actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); backend->playVideoCd(deviceName); } void MediaWidget::playDvd(const QString &device) { QString deviceName = device; if (deviceName.isEmpty()) { QList devices = Solid::Device::listFromQuery("OpticalDisc.availableContent & 'VideoDvd'"); if (!devices.isEmpty()) { Solid::Block *block = devices.first().as(); if (block != NULL) { deviceName = block->device(); } } } currentSourceName.clear(); externalSubtitles.clear(); currentExternalSubtitle.clear(); actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); backend->playDvd(deviceName); } void MediaWidget::updateExternalSubtitles(const QList &subtitles, int currentSubtitle) { if (!currentSourceName.isEmpty()) { subtitlesReady = false; externalSubtitles = subtitles; int currentIndex; KUrl externalSubtitle; if (currentSubtitle < 0) { currentIndex = subtitleBox->currentIndex(); } else { currentIndex = currentSubtitle + subtitleBox->count(); externalSubtitle = subtitles.at(currentSubtitle); } if (currentExternalSubtitle != externalSubtitle) { currentExternalSubtitle = externalSubtitle; backend->setExternalSubtitle(currentExternalSubtitle); } foreach (const KUrl &subtitleUrl, subtitles) { subtitleBox->addItem(subtitleUrl.fileName()); } subtitleBox->setCurrentIndex(currentIndex); subtitleBox->setEnabled(subtitleBox->count() > 1); subtitlesReady = true; } } OsdWidget *MediaWidget::getOsdWidget() { return osdWidget; } void MediaWidget::playDvb(const QString &channelName) { delete dvbFeed; dvbFeed = NULL; seekableChanged(false); totalTimeChanged(0); currentTimeChanged(0); dvbFeed = new DvbFeed(this); dvbFeed->ignoreSourceChange = true; emit changeCaption(channelName); externalSubtitles.clear(); currentExternalSubtitle.clear(); actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); backend->playUrl(dvbFeed->getUrl(), KUrl()); dvbFeed->ignoreSourceChange = false; } void MediaWidget::writeDvbData(const QByteArray &data) { dvbFeed->writeData(data); } void MediaWidget::updateDvbAudioChannels(const QStringList &audioChannels, int currentAudioChannel) { dvbFeed->audioChannels = audioChannels; if (!audioChannels.isEmpty()) { audioChannelsReady = false; audioChannelBox->clear(); audioChannelBox->addItems(audioChannels); audioChannelBox->setCurrentIndex(currentAudioChannel); audioChannelBox->setEnabled(audioChannelBox->count() > 1); audioChannelsReady = true; } else { audioChannelsChanged(backend->getAudioChannels(), backend->getCurrentAudioChannel()); } } void MediaWidget::updateDvbSubtitles(const QStringList &subtitles, int currentSubtitle) { dvbFeed->subtitles = subtitles; if (!subtitles.isEmpty()) { subtitlesReady = false; subtitleBox->clear(); subtitleBox->addItem(textSubtitlesOff); subtitleBox->addItems(subtitles); subtitleBox->setCurrentIndex(currentSubtitle + 1); subtitleBox->setEnabled(subtitleBox->count() > 1); subtitlesReady = true; } else { subtitlesChanged(backend->getSubtitles(), backend->getCurrentSubtitle()); } } int MediaWidget::getShortSkipDuration() const { return shortSkipDuration; } int MediaWidget::getLongSkipDuration() const { return longSkipDuration; } void MediaWidget::setShortSkipDuration(int duration) { shortSkipDuration = duration; shortSkipBackwardAction->setText(i18nc("submenu of 'Skip'", "Skip %1s Backward", duration)); shortSkipForwardAction->setText(i18nc("submenu of 'Skip'", "Skip %1s Forward", duration)); } void MediaWidget::setLongSkipDuration(int duration) { longSkipDuration = duration; longSkipBackwardAction->setText(i18nc("submenu of 'Skip'", "Skip %1s Backward", duration)); longSkipForwardAction->setText(i18nc("submenu of 'Skip'", "Skip %1s Forward", duration)); } bool MediaWidget::isPlaying() const { return backend->isPlaying(); } bool MediaWidget::isPaused() const { return actionPlayPause->isChecked(); } int MediaWidget::getVolume() const { return volumeSlider->value(); } int MediaWidget::getPosition() const { return backend->getCurrentTime(); } void MediaWidget::play() { // FIXME not the best behaviour if (dvbFeed == NULL) { emit playlistPlay(); } } void MediaWidget::togglePause() { actionPlayPause->trigger(); } void MediaWidget::setPosition(int position) { backend->seek(position); } void MediaWidget::setVolume(int volume) { // QSlider ensures that the value is within the range volumeSlider->setValue(volume); } void MediaWidget::toggleMuted() { muteAction->trigger(); } void MediaWidget::previous() { actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); if (dvbFeed != NULL) { emit previousDvbChannel(); } else if (!backend->playPreviousTitle()) { emit playlistPrevious(); } } void MediaWidget::next() { actionPlayPause->setText(textPause); actionPlayPause->setIcon(iconPause); actionPlayPause->setChecked(false); if (dvbFeed != NULL) { emit nextDvbChannel(); } else if (!backend->playNextTitle()) { emit playlistNext(); } } void MediaWidget::stop() { if (backend->isPlaying()) { osdWidget->showText(i18nc("osd", "Stopped"), 1500); } backend->stop(); } void MediaWidget::increaseVolume() { // QSlider ensures that the value is within the range volumeSlider->setValue(volumeSlider->value() + 5); } void MediaWidget::decreaseVolume() { // QSlider ensures that the value is within the range volumeSlider->setValue(volumeSlider->value() - 5); } void MediaWidget::sourceChanged() { if ((dvbFeed != NULL) && !dvbFeed->ignoreSourceChange) { stopDvbPlayback(); } setMetadata(QMap()); if (autoResizeFactor > 0) { emit resizeToVideo(autoResizeFactor); } } void MediaWidget::playbackFinished() { currentSourceName.clear(); if (dvbFeed != NULL) { dvbFeed->ignoreSourceChange = true; emit startDvbTimeShift(); dvbFeed->ignoreSourceChange = false; } else { emit changeCaption(QString()); emit playlistNext(); } } void MediaWidget::playbackStopped() { currentSourceName.clear(); emit changeCaption(QString()); if (dvbFeed != NULL) { stopDvbPlayback(); } } void MediaWidget::playbackChanged(bool playing) { actionPlayPause->setText(playing ? textPause : textPlay); actionPlayPause->setIcon(playing ? iconPause : iconPlay); actionPlayPause->setCheckable(playing); actionPrevious->setEnabled(playing); actionStop->setEnabled(playing); actionNext->setEnabled(playing); timeButton->setEnabled(playing); } void MediaWidget::totalTimeChanged(int totalTime) { if ((dvbFeed == NULL) || dvbFeed->timeShiftActive) { seekSlider->setRange(0, totalTime); } if (!currentSourceName.isEmpty() && (dvbFeed == NULL)) { emit playlistTrackLengthChanged(totalTime); } } void MediaWidget::currentTimeChanged(int currentTime) { if ((dvbFeed == NULL) || dvbFeed->timeShiftActive) { seekSlider->setValue(currentTime); updateTimeButton(); } } void MediaWidget::setMetadata(const QMap &metadata) { if (dvbFeed == NULL) { QString caption = metadata.value(Title); QString artist = metadata.value(Artist); if (!caption.isEmpty() && !artist.isEmpty()) { caption += ' '; } if (!artist.isEmpty()) { caption += '('; caption += artist; caption += ')'; } if (caption.isEmpty()) { caption = currentSourceName; } if (!caption.isEmpty()) { osdWidget->showText(caption, 2500); } emit changeCaption(caption); if (!currentSourceName.isEmpty()) { emit playlistTrackMetadataChanged(metadata); } } } void MediaWidget::seekableChanged(bool seekable) { if ((dvbFeed == NULL) || dvbFeed->timeShiftActive) { seekSlider->setEnabled(seekable); navigationMenu->setEnabled(seekable); jumpToPositionAction->setEnabled(seekable); } } void MediaWidget::audioChannelsChanged(const QStringList &audioChannels, int currentAudioChannel) { if ((dvbFeed == NULL) || dvbFeed->audioChannels.isEmpty()) { audioChannelsReady = false; audioChannelBox->clear(); audioChannelBox->addItems(audioChannels); audioChannelBox->setCurrentIndex(currentAudioChannel); audioChannelBox->setEnabled(audioChannelBox->count() > 1); audioChannelsReady = true; } } void MediaWidget::setCurrentAudioChannel(int currentAudioChannel) { if ((dvbFeed == NULL) || dvbFeed->audioChannels.isEmpty()) { audioChannelBox->setCurrentIndex(currentAudioChannel); } } void MediaWidget::subtitlesChanged(const QStringList &subtitles, int currentSubtitle) { if ((dvbFeed == NULL) || dvbFeed->subtitles.isEmpty()) { subtitlesReady = false; subtitleBox->clear(); subtitleBox->addItem(textSubtitlesOff); subtitleBox->addItems(subtitles); int currentIndex; if (currentExternalSubtitle.isValid()) { currentIndex = (externalSubtitles.indexOf(currentExternalSubtitle) + subtitleBox->count()); } else { currentIndex = (currentSubtitle + 1); } foreach (const KUrl &subtitleUrl, externalSubtitles) { subtitleBox->addItem(subtitleUrl.fileName()); } subtitleBox->setCurrentIndex(currentIndex); subtitleBox->setEnabled(subtitleBox->count() > 1); subtitlesReady = true; } else { if (!subtitles.isEmpty()) { backend->setCurrentSubtitle(0); } } } void MediaWidget::setCurrentSubtitle(int currentSubtitle) { if ((dvbFeed == NULL) || dvbFeed->subtitles.isEmpty()) { subtitleBox->setCurrentIndex(currentSubtitle + 1); } } void MediaWidget::dvdPlaybackChanged(bool playingDvd) { menuAction->setEnabled(playingDvd); } void MediaWidget::titlesChanged(int titleCount, int currentTitle) { if (titleCount > 1) { QList actions = titleGroup->actions(); if (actions.count() < titleCount) { int i = actions.count(); actions.clear(); for (; i < titleCount; ++i) { QAction *action = titleGroup->addAction(QString::number(i + 1)); action->setCheckable(true); titleMenu->addAction(action); } actions = titleGroup->actions(); } for (int i = 0; i < actions.size(); ++i) { actions.at(i)->setVisible(i < titleCount); } setCurrentTitle(currentTitle); titleMenu->setEnabled(true); } else { titleMenu->setEnabled(false); } } void MediaWidget::setCurrentTitle(int currentTitle) { if ((currentTitle >= 1) && (currentTitle <= titleGroup->actions().count())) { titleGroup->actions().at(currentTitle - 1)->setChecked(true); } else if (titleGroup->checkedAction() != NULL) { titleGroup->checkedAction()->setChecked(false); } } void MediaWidget::chaptersChanged(int chapterCount, int currentChapter) { if (chapterCount > 1) { QList actions = chapterGroup->actions(); if (actions.count() < chapterCount) { int i = actions.count(); actions.clear(); for (; i < chapterCount; ++i) { QAction *action = chapterGroup->addAction(QString::number(i + 1)); action->setCheckable(true); chapterMenu->addAction(action); } actions = chapterGroup->actions(); } for (int i = 0; i < actions.size(); ++i) { actions.at(i)->setVisible(i < chapterCount); } setCurrentChapter(currentChapter); chapterMenu->setEnabled(true); } else { chapterMenu->setEnabled(false); } } void MediaWidget::setCurrentChapter(int currentChapter) { if ((currentChapter >= 1) && (currentChapter <= chapterGroup->actions().count())) { chapterGroup->actions().at(currentChapter - 1)->setChecked(true); } else if (chapterGroup->checkedAction() != NULL) { chapterGroup->checkedAction()->setChecked(false); } } void MediaWidget::anglesChanged(int angleCount, int currentAngle) { if (angleCount > 1) { QList actions = angleGroup->actions(); if (actions.count() < angleCount) { int i = actions.count(); actions.clear(); for (; i < angleCount; ++i) { QAction *action = angleGroup->addAction(QString::number(i + 1)); action->setCheckable(true); angleMenu->addAction(action); } actions = angleGroup->actions(); } for (int i = 0; i < actions.size(); ++i) { actions.at(i)->setVisible(i < angleCount); } setCurrentAngle(currentAngle); angleMenu->setEnabled(true); } else { angleMenu->setEnabled(false); } } void MediaWidget::setCurrentAngle(int currentAngle) { if ((currentAngle >= 1) && (currentAngle <= angleGroup->actions().count())) { angleGroup->actions().at(currentAngle - 1)->setChecked(true); } else if (angleGroup->checkedAction() != NULL) { angleGroup->checkedAction()->setChecked(false); } } void MediaWidget::videoSizeChanged() { if (autoResizeFactor > 0) { emit resizeToVideo(autoResizeFactor); } } void MediaWidget::checkScreenSaver() { bool suspendScreenSaver = (backend->isPlaying() && !isPaused() && isVisible()); if (suspendScreenSaver) { // KDE - Inhibit doesn't inhibit "lock screen after inactivity" QDBusInterface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver").call(QDBus::NoBlock, "SimulateUserActivity"); // GNOME - Inhibit doesn't inhibit power management functions QDBusInterface("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver"). call(QDBus::NoBlock, "SimulateUserActivity"); } if (screenSaverSuspended != suspendScreenSaver) { // X11 - needed if none of the above applications is running screenSaverSuspended = suspendScreenSaver; XScreenSaverSuspend(QX11Info::display(), suspendScreenSaver); } } void MediaWidget::mutedChanged() { isMuted = !isMuted; backend->setMuted(isMuted); if (isMuted) { muteAction->setIcon(mutedIcon); osdWidget->showText(i18nc("osd", "Mute On"), 1500); } else { muteAction->setIcon(unmutedIcon); osdWidget->showText(i18nc("osd", "Mute Off"), 1500); } } void MediaWidget::volumeChanged(int volume) { backend->setVolume(volume); osdWidget->showText(i18nc("osd", "Volume: %1%", volume), 1500); } void MediaWidget::toggleFullScreen() { if (displayMode == FullScreenMode) { setDisplayMode(NormalMode); } else { setDisplayMode(FullScreenMode); } } void MediaWidget::toggleMinimalMode() { if (displayMode == MinimalMode) { setDisplayMode(NormalMode); } else { setDisplayMode(MinimalMode); } } void MediaWidget::deinterlacingChanged(bool deinterlacing) { backend->setDeinterlacing(deinterlacing); if (deinterlacing) { osdWidget->showText(i18nc("osd message", "Deinterlacing On"), 1500); } else { osdWidget->showText(i18nc("osd message", "Deinterlacing Off"), 1500); } } void MediaWidget::aspectRatioChanged(QAction *action) { bool ok; unsigned int aspectRatio_ = action->data().toInt(&ok); if (ok && aspectRatio_ <= AspectRatioWidget) { backend->setAspectRatio(static_cast(aspectRatio_)); return; } kError() << "internal error" << action->data(); } void MediaWidget::autoResizeTriggered(QAction *action) { foreach (QAction *autoResizeAction, action->actionGroup()->actions()) { autoResizeAction->setChecked(autoResizeAction == action); } bool ok; unsigned int autoResizeFactor_ = action->data().toInt(&ok); if (ok && (autoResizeFactor_ <= 2)) { autoResizeFactor = autoResizeFactor_; if (autoResizeFactor > 0) { emit resizeToVideo(autoResizeFactor); } return; } kError() << "internal error" << action->data(); } void MediaWidget::pausedChanged(bool paused) { if (backend->isPlaying()) { if (paused) { actionPlayPause->setIcon(iconPlay); actionPlayPause->setText(textPlay); osdWidget->showText(i18nc("osd", "Paused"), 1500); backend->setPaused(true); if ((dvbFeed != NULL) && !dvbFeed->timeShiftPrepared) { dvbFeed->timeShiftPrepared = true; dvbFeed->endOfData(); emit prepareDvbTimeShift(); } } else { actionPlayPause->setIcon(iconPause); actionPlayPause->setText(textPause); osdWidget->showText(i18nc("osd", "Playing"), 1500); if ((dvbFeed != NULL) && !dvbFeed->timeShiftActive && dvbFeed->timeShiftPrepared) { dvbFeed->timeShiftActive = true; dvbFeed->ignoreSourceChange = true; emit startDvbTimeShift(); dvbFeed->ignoreSourceChange = false; } else { backend->setPaused(false); } } } else { emit playlistPlay(); } } void MediaWidget::timeButtonClicked() { showElapsedTime = !showElapsedTime; updateTimeButton(); } void MediaWidget::longSkipBackward() { int time = backend->getCurrentTime() - 1000 * longSkipDuration; if (time < 0) { time = 0; } backend->seek(time); } void MediaWidget::shortSkipBackward() { int time = backend->getCurrentTime() - 1000 * shortSkipDuration; if (time < 0) { time = 0; } backend->seek(time); } void MediaWidget::shortSkipForward() { backend->seek(backend->getCurrentTime() + 1000 * shortSkipDuration); } void MediaWidget::longSkipForward() { backend->seek(backend->getCurrentTime() + 1000 * longSkipDuration); } void MediaWidget::jumpToPosition() { KDialog *dialog = new JumpToPositionDialog(this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void MediaWidget::currentAudioChannelChanged(int currentAudioChannel) { if (audioChannelsReady) { if ((dvbFeed == NULL) || dvbFeed->audioChannels.isEmpty()) { backend->setCurrentAudioChannel(currentAudioChannel); } else { emit changeDvbAudioChannel(currentAudioChannel); } } } void MediaWidget::currentSubtitleChanged(int currentSubtitle) { if (subtitlesReady) { if ((dvbFeed == NULL) || dvbFeed->subtitles.isEmpty()) { KUrl externalSubtitle; if (currentSubtitle < (subtitleBox->count() - externalSubtitles.count())) { backend->setCurrentSubtitle(currentSubtitle - 1); } else { backend->setCurrentSubtitle(-1); externalSubtitle = externalSubtitles.at(currentSubtitle - (subtitleBox->count() - externalSubtitles.count())); } if (currentExternalSubtitle != externalSubtitle) { currentExternalSubtitle = externalSubtitle; backend->setExternalSubtitle(currentExternalSubtitle); } } else { emit changeDvbSubtitle(currentSubtitle - 1); } } } void MediaWidget::toggleMenu() { backend->toggleMenu(); } void MediaWidget::currentTitleChanged(QAction *action) { backend->setCurrentTitle(titleGroup->actions().indexOf(action) + 1); } void MediaWidget::currentChapterChanged(QAction *action) { backend->setCurrentChapter(chapterGroup->actions().indexOf(action) + 1); } void MediaWidget::currentAngleChanged(QAction *action) { backend->setCurrentAngle(angleGroup->actions().indexOf(action) + 1); } void MediaWidget::updateTimeButton() { if (showElapsedTime) { timeButton->setText(' ' + QTime(0, 0).addMSecs(seekSlider->value()).toString()); } else { int remainingTime = seekSlider->maximum() - seekSlider->value(); timeButton->setText('-' + QTime(0, 0).addMSecs(remainingTime).toString()); } } void MediaWidget::stopDvbPlayback() { delete dvbFeed; dvbFeed = NULL; totalTimeChanged(backend->getTotalTime()); currentTimeChanged(backend->getCurrentTime()); seekableChanged(backend->isSeekable()); audioChannelsChanged(QStringList(), -1); subtitlesChanged(QStringList(), -1); emit dvbStopped(); } void MediaWidget::contextMenuEvent(QContextMenuEvent *event) { menu->popup(event->globalPos()); } void MediaWidget::mouseDoubleClickEvent(QMouseEvent *event) { Q_UNUSED(event) emit toggleFullScreen(); } void MediaWidget::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasUrls()) { event->acceptProposedAction(); } } void MediaWidget::dropEvent(QDropEvent *event) { const QMimeData *mimeData = event->mimeData(); if (mimeData->hasUrls()) { emit playlistUrlsDropped(KUrl::List::fromMimeData(mimeData)); event->acceptProposedAction(); } } void MediaWidget::keyPressEvent(QKeyEvent *event) { int key = event->key(); if ((key >= Qt::Key_0) && (key <= Qt::Key_9)) { emit osdKeyPressed(key); } else { QWidget::keyPressEvent(event); } } void MediaWidget::resizeEvent(QResizeEvent *event) { osdWidget->resize(event->size()); QWidget::resizeEvent(event); } void MediaWidget::wheelEvent(QWheelEvent *event) { if (backend->isSeekable()) { qint64 time = (backend->getCurrentTime() - (25 * shortSkipDuration * event->delta()) / 3); if (time < 0) { time = 0; } backend->seek(time); } } kaffeine-1.2.2/src/mediawidget_p.h0000644000175000017500000000351611552636277016477 0ustar lxuserlxuser/* * mediawidget_p.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef MEDIAWIDGET_P_H #define MEDIAWIDGET_P_H #include #include class QSocketNotifier; class QTimeEdit; class MediaWidget; class DvbFeed : public QObject { Q_OBJECT public: explicit DvbFeed(QObject *parent); ~DvbFeed(); KUrl getUrl() const; void writeData(const QByteArray &data); void endOfData(); bool timeShiftPrepared; bool timeShiftActive; bool ignoreSourceChange; QStringList audioChannels; QStringList subtitles; private slots: void readyWrite(); private: bool flush(); KUrl url; int readFd; int writeFd; QSocketNotifier *notifier; QList buffers; }; class JumpToPositionDialog : public KDialog { public: explicit JumpToPositionDialog(MediaWidget *mediaWidget_); ~JumpToPositionDialog(); private: void accept(); MediaWidget *mediaWidget; QTimeEdit *timeEdit; }; class SeekSlider : public QSlider { public: explicit SeekSlider(QWidget *parent) : QSlider(parent) { } ~SeekSlider() { } private: void mousePressEvent(QMouseEvent *event); }; #endif /* MEDIAWIDGET_P_H */ kaffeine-1.2.2/src/dbusobjects.cpp0000644000175000017500000002244711552636277016543 0ustar lxuserlxuser/* * dbusobjects.cpp * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dbusobjects.h" #include #include #include #include "dvb/dvbmanager.h" #include "dvb/dvbtab.h" #include "playlist/playlisttab.h" QDBusArgument &operator<<(QDBusArgument &argument, const MprisStatusStruct &statusStruct) { argument.beginStructure(); argument << statusStruct.state << statusStruct.random << statusStruct.repeatTrack << statusStruct.repeatPlaylist; argument.endStructure(); return argument; } const QDBusArgument &operator>>(const QDBusArgument &argument, MprisStatusStruct &statusStruct) { argument.beginStructure(); argument >> statusStruct.state >> statusStruct.random >> statusStruct.repeatTrack >> statusStruct.repeatPlaylist; argument.endStructure(); return argument; } QDBusArgument &operator<<(QDBusArgument &argument, const MprisVersionStruct &versionStruct) { argument.beginStructure(); argument << versionStruct.major << versionStruct.minor; argument.endStructure(); return argument; } const QDBusArgument &operator>>(const QDBusArgument &argument, MprisVersionStruct &versionStruct) { argument.beginStructure(); argument >> versionStruct.major >> versionStruct.minor; argument.endStructure(); return argument; } QDBusArgument &operator<<(QDBusArgument &argument, const TelevisionScheduleEntryStruct &entry) { argument.beginStructure(); argument << entry.key << entry.name << entry.channel << entry.begin << entry.duration << entry.repeat << entry.isRunning; argument.endStructure(); return argument; } const QDBusArgument &operator>>(const QDBusArgument &argument, TelevisionScheduleEntryStruct &entry) { argument.beginStructure(); argument >> entry.key >> entry.name >> entry.channel >> entry.begin >> entry.duration >> entry.repeat >> entry.isRunning; argument.endStructure(); return argument; } MprisRootObject::MprisRootObject(QObject *parent) : QObject(parent) { qDBusRegisterMetaType(); } MprisRootObject::~MprisRootObject() { } QString MprisRootObject::Identity() { const KAboutData *aboutData = KGlobal::mainComponent().aboutData(); return aboutData->programName() + ' ' + aboutData->version(); } void MprisRootObject::Quit() { kapp->quit(); } MprisVersionStruct MprisRootObject::MprisVersion() { MprisVersionStruct versionStruct; versionStruct.major = 1; versionStruct.minor = 0; return versionStruct; } MprisPlayerObject::MprisPlayerObject(MainWindow *mainWindow_, MediaWidget *mediaWidget_, PlaylistTab *playlistTab_, QObject *parent) : QObject(parent), mainWindow(mainWindow_), mediaWidget(mediaWidget_), playlistTab(playlistTab_) { qDBusRegisterMetaType(); } MprisPlayerObject::~MprisPlayerObject() { } void MprisPlayerObject::Next() { mediaWidget->next(); } void MprisPlayerObject::Prev() { mediaWidget->previous(); } void MprisPlayerObject::Pause() { mediaWidget->togglePause(); } void MprisPlayerObject::Stop() { mediaWidget->stop(); } void MprisPlayerObject::Play() { mediaWidget->play(); } void MprisPlayerObject::Repeat(bool repeat) { Q_UNUSED(repeat) // FIXME track repeat not implemented yet } MprisStatusStruct MprisPlayerObject::GetStatus() { MprisStatusStruct statusStruct; if (mediaWidget->isPaused()) { statusStruct.state = 1; } else if (mediaWidget->isPlaying()) { statusStruct.state = 0; } else { statusStruct.state = 2; } if (playlistTab->getRandom()) { statusStruct.random = 1; } else { statusStruct.random = 0; } statusStruct.repeatTrack = 0; // FIXME track repeat not implemented yet if (playlistTab->getRepeat()) { statusStruct.repeatPlaylist = 1; } else { statusStruct.repeatPlaylist = 0; } return statusStruct; } QVariantMap MprisPlayerObject::GetMetadata() { return QVariantMap(); // FIXME metadata handling not implemented yet } int MprisPlayerObject::GetCaps() { int capabilities = (1 << 0) | // CAN_GO_NEXT // FIXME check availability (1 << 1) | // CAN_GO_PREV // FIXME check availability (1 << 3) | // CAN_PLAY // FIXME check availability (1 << 4) | // CAN_SEEK // FIXME check availability (1 << 6); // CAN_HAS_TRACKLIST if (mediaWidget->isPlaying()) { capabilities |= (1 << 2); // CAN_PAUSE } return capabilities; // FIXME metadata handling not implemented yet } void MprisPlayerObject::VolumeSet(int volume) { mediaWidget->setVolume(volume); } int MprisPlayerObject::VolumeGet() { return mediaWidget->getVolume(); } void MprisPlayerObject::PositionSet(int position) { mediaWidget->setPosition(position); } int MprisPlayerObject::PositionGet() { return mediaWidget->getPosition(); } void MprisPlayerObject::IncreaseVolume() { mediaWidget->increaseVolume(); } void MprisPlayerObject::DecreaseVolume() { mediaWidget->decreaseVolume(); } void MprisPlayerObject::ToggleMuted() { mediaWidget->toggleMuted(); } void MprisPlayerObject::ToggleFullScreen() { mediaWidget->toggleFullScreen(); } void MprisPlayerObject::ShortSkipBackward() { mediaWidget->shortSkipBackward(); } void MprisPlayerObject::ShortSkipForward() { mediaWidget->shortSkipForward(); } void MprisPlayerObject::LongSkipBackward() { mediaWidget->longSkipBackward(); } void MprisPlayerObject::LongSkipForward() { mediaWidget->longSkipForward(); } MprisTrackListObject::MprisTrackListObject(PlaylistTab *playlistTab_, QObject *parent) : QObject(parent), playlistTab(playlistTab_) { } MprisTrackListObject::~MprisTrackListObject() { } QVariantMap MprisTrackListObject::GetMetadata(int index) { Q_UNUSED(index) return QVariantMap(); // FIXME metadata handling not implemented yet } int MprisTrackListObject::GetCurrentTrack() { return playlistTab->getCurrentTrack(); } int MprisTrackListObject::GetLength() { return playlistTab->getTrackCount(); } int MprisTrackListObject::AddTrack(const QString &url, bool playImmediately) { playlistTab->appendToCurrentPlaylist(QList() << url, playImmediately); return 0; } void MprisTrackListObject::DelTrack(int index) { playlistTab->removeTrack(index); } void MprisTrackListObject::SetLoop(bool loop) { playlistTab->setRepeat(loop); } void MprisTrackListObject::SetRandom(bool random) { playlistTab->setRandom(random); } #if HAVE_DVB == 1 DBusTelevisionObject::DBusTelevisionObject(DvbTab *dvbTab_, QObject *parent) : QObject(parent), dvbTab(dvbTab_) { qDBusRegisterMetaType(); qDBusRegisterMetaType >(); } DBusTelevisionObject::~DBusTelevisionObject() { } void DBusTelevisionObject::DigitPressed(int digit) { if ((digit >= 0) && (digit <= 9)) { dvbTab->osdKeyPressed(Qt::Key_0 + digit); } } void DBusTelevisionObject::PlayChannel(const QString &nameOrNumber) { dvbTab->playChannel(nameOrNumber); } void DBusTelevisionObject::PlayLastChannel() { dvbTab->playLastChannel(); } void DBusTelevisionObject::ToggleInstantRecord() { dvbTab->toggleInstantRecord(); } void DBusTelevisionObject::ToggleOsd() { dvbTab->toggleOsd(); } QList DBusTelevisionObject::ListProgramSchedule() { QList entries; DvbRecordingModel *recordingModel = dvbTab->getManager()->getRecordingModel(); foreach (const DvbSharedRecording &recording, recordingModel->getRecordings()) { TelevisionScheduleEntryStruct entry; entry.key = recording->sqlKey; entry.name = recording->name; entry.channel = recording->channel->name; entry.begin = (recording->begin.toString(Qt::ISODate) + 'Z'); entry.duration = recording->duration.toString(Qt::ISODate); entry.repeat = recording->repeat; entry.isRunning = (recording->status != DvbRecording::Inactive); entries.append(entry); } return entries; } quint32 DBusTelevisionObject::ScheduleProgram(const QString &name, const QString &channel, const QString &begin, const QString &duration, int repeat) { DvbRecording recording; recording.name = name; recording.channel = dvbTab->getManager()->getChannelModel()->findChannelByName(channel); recording.begin = QDateTime::fromString(begin, Qt::ISODate).toUTC(); recording.duration = QTime::fromString(duration, Qt::ISODate); recording.repeat = (repeat & ((1 << 7) - 1)); DvbSharedRecording newRecording = dvbTab->getManager()->getRecordingModel()->addRecording(recording); if (newRecording.isValid()) { return newRecording->sqlKey; } return 0; } void DBusTelevisionObject::RemoveProgram(quint32 key) { DvbRecordingModel *recordingModel = dvbTab->getManager()->getRecordingModel(); SqlKey sqlKey; sqlKey.sqlKey = key; DvbSharedRecording recording = recordingModel->getRecordings().value(sqlKey); if (recording.isValid()) { recordingModel->removeRecording(recording); } } #endif /* HAVE_DVB == 1 */ kaffeine-1.2.2/src/sqlhelper.h0000644000175000017500000000267711552636277015703 0ustar lxuserlxuser/* * sqlhelper.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SQLHELPER_H #define SQLHELPER_H #include #include #include class SqlInterface; class SqlHelper : public QObject, public QSharedData { Q_OBJECT private: SqlHelper(); public: ~SqlHelper(); static bool createInstance(); static SqlHelper *getInstance(); QSqlQuery prepare(const QString &statement); QSqlQuery exec(const QString &statement); void exec(QSqlQuery &query); void requestSubmission(SqlInterface *object); public slots: void collectSubmissions(); private: static SqlHelper *instance; QSqlDatabase database; QTimer timer; QList objects; }; #endif /* SQLHELPER_H */ kaffeine-1.2.2/src/Messages.sh0000755000175000017500000000016311552636277015625 0ustar lxuserlxuser#! /bin/sh $XGETTEXT *.cpp */*.cpp -o $podir/kaffeine.pot sed "s/, c-format/, no-c-format/" -i $podir/kaffeine.pot kaffeine-1.2.2/src/playlist/0000755000175000017500000000000011552636277015360 5ustar lxuserlxuserkaffeine-1.2.2/src/playlist/playlistmodel.h0000644000175000017500000000727711552636277020430 0ustar lxuserlxuser/* * playlistmodel.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PLAYLISTMODEL_H #define PLAYLISTMODEL_H #include #include #include "../mediawidget.h" class PlaylistTrack { public: PlaylistTrack() : trackNumber(-1), currentSubtitle(-1) { } ~PlaylistTrack() { } KUrl url; QString title; QString artist; QString album; int trackNumber; QTime length; QList subtitles; int currentSubtitle; }; class Playlist { public: Playlist() : currentTrack(-1) { } ~Playlist() { } const PlaylistTrack &at(int index) const { return tracks.at(index); } enum Format { Invalid, Kaffeine, // read-only M3U, PLS, XSPF }; bool load(const KUrl &url_, Format format); bool save(Format format) const; KUrl url; QString title; QList tracks; int currentTrack; private: void appendTrack(PlaylistTrack &track); KUrl fromFileOrUrl(const QString &fileOrUrl) const; KUrl fromRelativeUrl(const QString &trackUrlString) const; QString toFileOrUrl(const KUrl &trackUrl) const; QString toRelativeUrl(const KUrl &trackUrl) const; bool loadKaffeinePlaylist(QIODevice *device); bool loadM3UPlaylist(QIODevice *device); void saveM3UPlaylist(QIODevice *device) const; bool loadPLSPlaylist(QIODevice *device); void savePLSPlaylist(QIODevice *device) const; bool loadXSPFPlaylist(QIODevice *device); void saveXSPFPlaylist(QIODevice *device) const; }; class PlaylistModel : public QAbstractTableModel { Q_OBJECT public: PlaylistModel(Playlist *visiblePlaylist_, QObject *parent); ~PlaylistModel(); void setVisiblePlaylist(Playlist *visiblePlaylist_); Playlist *getVisiblePlaylist() const; void appendUrls(Playlist *playlist, const QList &urls, bool playImmediately); void removeRows(Playlist *playlist, int row, int count); void setCurrentTrack(Playlist *playlist, int track); void updateTrackLength(Playlist *playlist, int length); void updateTrackMetadata(Playlist *playlist, const QMap &metadata); public slots: void clearVisiblePlaylist(); signals: void appendPlaylist(Playlist *playlist, bool playImmediately); void playTrack(Playlist *playlist, int track); private: void insertUrls(Playlist *playlist, int row, const QList &urls, bool playImmediately); int columnCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; bool removeRows(int row, int count, const QModelIndex &parent); void sort(int column, Qt::SortOrder order); Qt::ItemFlags flags(const QModelIndex &index) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; QMimeData *mimeData(const QModelIndexList &indexes) const; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); Playlist *visiblePlaylist; }; #endif /* PLAYLISTMODEL_H */ kaffeine-1.2.2/src/playlist/playlisttab.h0000644000175000017500000000717711552636277020075 0ustar lxuserlxuser/* * playlisttab.h * * Copyright (C) 2009-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PLAYLISTTAB_H #define PLAYLISTTAB_H #include #include "../mediawidget.h" #include "../tabbase.h" class QSplitter; class Playlist; class PlaylistBrowserView; class PlaylistModel; class PlaylistView : public QTreeView { Q_OBJECT public: explicit PlaylistView(QWidget *parent); ~PlaylistView(); public slots: void removeSelectedRows(); protected: void contextMenuEvent(QContextMenuEvent *event); void keyPressEvent(QKeyEvent *event); }; class PlaylistBrowserModel : public QAbstractListModel { Q_OBJECT public: PlaylistBrowserModel(PlaylistModel *playlistModel_, Playlist *temporaryPlaylist, QObject *parent); ~PlaylistBrowserModel(); void append(Playlist *playlist); Playlist *getPlaylist(int row) const; void setCurrentPlaylist(Playlist *playlist); Playlist *getCurrentPlaylist() const; bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); signals: void playTrack(Playlist *playlist, int track); private: int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role); PlaylistModel *playlistModel; QList playlists; int currentPlaylist; }; class PlaylistTab : public TabBase { Q_OBJECT public: PlaylistTab(KMenu *menu, KActionCollection *collection, MediaWidget *mediaWidget_); ~PlaylistTab(); void appendToCurrentPlaylist(const QList &urls, bool playImmediately); void appendToVisiblePlaylist(const QList &urls, bool playImmediately); void removeTrack(int row); void setRandom(bool random); void setRepeat(bool repeat); int getCurrentTrack() const; int getTrackCount() const; bool getRandom() const; bool getRepeat() const; private slots: void createFileWidget(); void newPlaylist(); void renamePlaylist(); void removePlaylist(); void savePlaylist(); void savePlaylistAs(); void addSubtitle(); void playlistActivated(const QModelIndex &index); void playPreviousTrack(); void playCurrentTrack(); void playNextTrack(); void playTrack(Playlist *playlist, int track); void playTrack(const QModelIndex &index); void appendUrls(const QList &urls); void appendPlaylist(Playlist *playlist, bool playImmediately); void updateTrackLength(int length); void updateTrackMetadata(const QMap &metadata); private: static QString subtitleExtensionFilter(); // usable for KFileDialog::setFilter() void activate(); void savePlaylist(bool askName); MediaWidget *mediaWidget; QLayout *mediaLayout; QSplitter *fileWidgetSplitter; PlaylistBrowserModel *playlistBrowserModel; PlaylistBrowserView *playlistBrowserView; PlaylistModel *playlistModel; PlaylistView *playlistView; KAction *randomAction; KAction *repeatAction; }; #endif /* PLAYLISTTAB_H */ kaffeine-1.2.2/src/playlist/playlistmodel.cpp0000644000175000017500000005517611552636277020764 0ustar lxuserlxuser/* * playlistmodel.cpp * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "playlistmodel.h" #include #include #include #include #include #include #include bool Playlist::load(const KUrl &url_, Format format) { url = url_; title = url.fileName(); QString localFile = url.toLocalFile(); if (localFile.isEmpty()) { // FIXME kWarning() << "opening remote playlists not supported yet"; return false; } QFile file(localFile); if (!file.open(QIODevice::ReadOnly)) { kWarning() << "cannot open file" << file.fileName(); return false; } switch (format) { case Invalid: return false; case Kaffeine: return loadKaffeinePlaylist(&file); case M3U: return loadM3UPlaylist(&file); case PLS: return loadPLSPlaylist(&file); case XSPF: return loadXSPFPlaylist(&file); } return false; } bool Playlist::save(Format format) const { QString localFile = url.toLocalFile(); if (localFile.isEmpty()) { // FIXME kWarning() << "opening remote playlists not supported yet"; return false; } QFile file(localFile); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "cannot open file" << file.fileName(); return false; } switch (format) { case Invalid: return false; case Kaffeine: return false; // read-only case M3U: saveM3UPlaylist(&file); return true; case PLS: savePLSPlaylist(&file); return true; case XSPF: saveXSPFPlaylist(&file); return true; } return false; } void Playlist::appendTrack(PlaylistTrack &track) { if (track.url.isValid()) { if (track.title.isEmpty()) { track.title = track.url.fileName(); } tracks.append(track); } } KUrl Playlist::fromFileOrUrl(const QString &fileOrUrl) const { if (!QFileInfo(fileOrUrl).isRelative()) { return KUrl::fromLocalFile(fileOrUrl); } KUrl trackUrl(fileOrUrl); if (trackUrl.isRelative()) { trackUrl = url.resolved(KUrl::fromLocalFile(fileOrUrl)); if (trackUrl.encodedPath() == url.encodedPath()) { return KUrl(); } } return trackUrl; } KUrl Playlist::fromRelativeUrl(const QString &trackUrlString) const { KUrl trackUrl(trackUrlString); if (trackUrl.isRelative()) { trackUrl = url.resolved(trackUrl); } return trackUrl; } QString Playlist::toFileOrUrl(const KUrl &trackUrl) const { QString localFile = trackUrl.toLocalFile(); if (!localFile.isEmpty()) { QString playlistPath = url.path(); int index = playlistPath.lastIndexOf('/'); playlistPath.truncate(index + 1); if (localFile.startsWith(playlistPath)) { localFile.remove(0, index + 1); } return QDir::toNativeSeparators(localFile); } else { return trackUrl.url(); } } QString Playlist::toRelativeUrl(const KUrl &trackUrl) const { if ((trackUrl.scheme() == url.scheme()) && (trackUrl.authority() == url.authority())) { QByteArray playlistPath = url.encodedPath(); int index = playlistPath.lastIndexOf('/'); playlistPath.truncate(index + 1); QByteArray trackPath = trackUrl.encodedPath(); if (trackPath.startsWith(playlistPath)) { trackPath.remove(0, index + 1); KUrl relativeUrl; relativeUrl.setEncodedPath(trackPath); relativeUrl.setEncodedQuery(trackUrl.encodedQuery()); relativeUrl.setEncodedFragment(trackUrl.encodedFragment()); return relativeUrl.url(); } } return trackUrl.url(); } bool Playlist::loadKaffeinePlaylist(QIODevice *device) { QDomDocument document; if (!document.setContent(device)) { return false; } QDomElement root = document.documentElement(); if (root.nodeName() != "playlist") { return false; } for (QDomNode node = root.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement() || (node.nodeName() != "entry")) { continue; } PlaylistTrack track; track.url = fromFileOrUrl(node.attributes().namedItem("url").nodeValue()); track.title = node.attributes().namedItem("title").nodeValue(); track.artist = node.attributes().namedItem("artist").nodeValue(); track.album = node.attributes().namedItem("album").nodeValue(); bool ok; int trackNumber = node.attributes().namedItem("track").nodeValue().toInt(&ok); if (ok && (trackNumber >= 0)) { track.trackNumber = trackNumber; } QString length = node.attributes().namedItem("length").nodeValue(); if (length.size() == 7) { length.prepend('0'); } track.length = QTime::fromString(length, Qt::ISODate); if (QTime().msecsTo(track.length) == 0) { track.length = QTime(); } appendTrack(track); } return true; } bool Playlist::loadM3UPlaylist(QIODevice *device) { QTextStream stream(device); stream.setCodec("UTF-8"); PlaylistTrack track; while (!stream.atEnd()) { QString line = stream.readLine(); if (line.startsWith('#')) { if (line.startsWith(QLatin1String("#EXTINF:"))) { int index = line.indexOf(',', 8); bool ok; int length = line.mid(8, index - 8).toInt(&ok); if (ok && (length >= 0)) { track.length = QTime().addSecs(length); } track.title = line.mid(index + 1); } } else { track.url = fromFileOrUrl(line); appendTrack(track); track = PlaylistTrack(); } } return true; } void Playlist::saveM3UPlaylist(QIODevice *device) const { QTextStream stream(device); stream.setCodec("UTF-8"); stream << "#EXTM3U\n"; foreach (const PlaylistTrack &track, tracks) { int length = -1; if (track.length.isValid()) { length = QTime().secsTo(track.length); } stream << "#EXTINF:" << length << ',' << track.title << '\n'; stream << toFileOrUrl(track.url) << '\n'; } } bool Playlist::loadPLSPlaylist(QIODevice *device) { QTextStream stream(device); stream.setCodec("UTF-8"); if (stream.readLine().compare("[playlist]", Qt::CaseInsensitive) != 0) { return false; } PlaylistTrack track; int lastNumber = -1; while (!stream.atEnd()) { QString line = stream.readLine(); int start; if (line.startsWith(QLatin1String("File"), Qt::CaseInsensitive)) { start = 4; } else if (line.startsWith(QLatin1String("Title"), Qt::CaseInsensitive)) { start = 5; } else if (line.startsWith(QLatin1String("Length"), Qt::CaseInsensitive)) { start = 6; } else { continue; } int index = line.indexOf('=', start); QString content = line.mid(index + 1); bool ok; int number = line.mid(start, index - start).toInt(&ok); if (!ok) { continue; } if (lastNumber != number) { if (lastNumber >= 0) { appendTrack(track); track = PlaylistTrack(); } lastNumber = number; } switch (start) { case 4: track.url = fromFileOrUrl(content); break; case 5: track.title = content; break; case 6: { int length = content.toInt(&ok); if (ok && (length >= 0)) { track.length = QTime().addSecs(content.toInt()); } break; } } } if (lastNumber >= 0) { appendTrack(track); } return true; } void Playlist::savePLSPlaylist(QIODevice *device) const { QTextStream stream(device); stream.setCodec("UTF-8"); stream << "[Playlist]\n" "NumberOfEntries=" << tracks.size() << '\n'; int index = 1; foreach (const PlaylistTrack &track, tracks) { int length = -1; if (track.length.isValid()) { length = QTime().secsTo(track.length); } stream << "File" << index << '=' << toFileOrUrl(track.url) << '\n'; stream << "Title" << index << '=' << track.title << '\n'; stream << "Length" << index << '=' << length << '\n'; ++index; } stream << "Version=2\n"; } bool Playlist::loadXSPFPlaylist(QIODevice *device) { QDomDocument document; if (!document.setContent(device)) { return false; } QDomElement root = document.documentElement(); if (root.nodeName() != "playlist") { return false; } for (QDomNode node = root.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) { continue; } QString nodeName = node.nodeName(); if (nodeName == "title") { title = node.toElement().text(); } else if (nodeName == "trackList") { for (QDomNode childNode = node.firstChild(); !childNode.isNull(); childNode = childNode.nextSibling()) { if (!childNode.isElement()) { continue; } PlaylistTrack track; for (QDomNode trackNode = childNode.firstChild(); !trackNode.isNull(); trackNode = trackNode.nextSibling()) { if (!trackNode.isElement()) { continue; } if (trackNode.nodeName() == "location") { if (!track.url.isValid()) { track.url = fromRelativeUrl( trackNode.toElement().text()); } } else if (trackNode.nodeName() == "title") { track.title = trackNode.toElement().text(); } else if (trackNode.nodeName() == "creator") { track.artist = trackNode.toElement().text(); } else if (trackNode.nodeName() == "album") { track.album = trackNode.toElement().text(); } else if (trackNode.nodeName() == "trackNum") { bool ok; int trackNumber = trackNode.toElement().text().toInt(&ok); if (ok && (trackNumber >= 0)) { track.trackNumber = trackNumber; } } else if (trackNode.nodeName() == "duration") { bool ok; int length = trackNode.toElement().text().toInt(&ok); if (ok && (length >= 0)) { track.length = QTime().addMSecs(length); } } } appendTrack(track); } } } return true; } void Playlist::saveXSPFPlaylist(QIODevice *device) const { QXmlStreamWriter stream(device); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(2); stream.writeStartDocument(); stream.writeStartElement("playlist"); stream.writeAttribute("version", "1"); stream.writeAttribute("xmlns", "http://xspf.org/ns/0/"); stream.writeTextElement("title", title); stream.writeStartElement("trackList"); foreach (const PlaylistTrack &track, tracks) { stream.writeStartElement("track"); stream.writeTextElement("location", toRelativeUrl(track.url)); if (!track.title.isEmpty()) { stream.writeTextElement("title", track.title); } if (!track.artist.isEmpty()) { stream.writeTextElement("creator", track.artist); } if (!track.album.isEmpty()) { stream.writeTextElement("album", track.album); } if (track.trackNumber >= 0) { stream.writeTextElement("trackNum", QString::number(track.trackNumber)); } if (track.length.isValid()) { stream.writeTextElement("duration", QString::number(QTime().msecsTo(track.length))); } stream.writeEndElement(); } stream.writeEndElement(); stream.writeEndElement(); stream.writeEndDocument(); } PlaylistModel::PlaylistModel(Playlist *visiblePlaylist_, QObject *parent) : QAbstractTableModel(parent), visiblePlaylist(visiblePlaylist_) { setSupportedDragActions(Qt::MoveAction); } PlaylistModel::~PlaylistModel() { } void PlaylistModel::setVisiblePlaylist(Playlist *visiblePlaylist_) { if (visiblePlaylist != visiblePlaylist_) { visiblePlaylist = visiblePlaylist_; reset(); } } Playlist *PlaylistModel::getVisiblePlaylist() const { return visiblePlaylist; } void PlaylistModel::appendUrls(Playlist *playlist, const QList &urls, bool playImmediately) { insertUrls(playlist, playlist->tracks.size(), urls, playImmediately); } void PlaylistModel::removeRows(Playlist *playlist, int row, int count) { if (playlist == visiblePlaylist) { beginRemoveRows(QModelIndex(), row, row + count - 1); } QList::Iterator begin = playlist->tracks.begin() + row; playlist->tracks.erase(begin, begin + count); if (playlist->currentTrack >= row) { if (playlist->currentTrack >= (row + count)) { playlist->currentTrack -= count; } else { playlist->currentTrack = -1; emit playTrack(playlist, -1); } } if (playlist == visiblePlaylist) { endRemoveRows(); } } void PlaylistModel::setCurrentTrack(Playlist *playlist, int track) { int oldTrack = playlist->currentTrack; playlist->currentTrack = track; if (playlist == visiblePlaylist) { if (oldTrack >= 0) { QModelIndex modelIndex = index(oldTrack, 0); emit dataChanged(modelIndex, modelIndex); } if (track >= 0) { QModelIndex modelIndex = index(track, 0); emit dataChanged(modelIndex, modelIndex); } } } void PlaylistModel::updateTrackLength(Playlist *playlist, int length) { if (playlist->currentTrack >= 0) { if (QTime().msecsTo(playlist->tracks.at(playlist->currentTrack).length) < length) { playlist->tracks[playlist->currentTrack].length = QTime().addMSecs(length); if (playlist == visiblePlaylist) { QModelIndex modelIndex = index(playlist->currentTrack, 4); emit dataChanged(modelIndex, modelIndex); } } } } void PlaylistModel::updateTrackMetadata(Playlist *playlist, const QMap &metadata) { if (playlist->currentTrack >= 0) { PlaylistTrack ¤tTrack = playlist->tracks[playlist->currentTrack]; if ((currentTrack.title != metadata.value(MediaWidget::Title)) && !metadata.value(MediaWidget::Title).isEmpty()) { currentTrack.title = metadata.value(MediaWidget::Title); if (playlist == visiblePlaylist) { QModelIndex modelIndex = index(playlist->currentTrack, 0); emit dataChanged(modelIndex, modelIndex); } } if ((currentTrack.artist != metadata.value(MediaWidget::Artist)) && !metadata.value(MediaWidget::Artist).isEmpty()) { currentTrack.artist = metadata.value(MediaWidget::Artist); if (playlist == visiblePlaylist) { QModelIndex modelIndex = index(playlist->currentTrack, 1); emit dataChanged(modelIndex, modelIndex); } } if ((currentTrack.album != metadata.value(MediaWidget::Album)) && !metadata.value(MediaWidget::Album).isEmpty()) { currentTrack.album = metadata.value(MediaWidget::Album); if (playlist == visiblePlaylist) { QModelIndex modelIndex = index(playlist->currentTrack, 2); emit dataChanged(modelIndex, modelIndex); } } bool ok; int trackNumber = metadata.value(MediaWidget::TrackNumber).toInt(&ok); if (!ok) { trackNumber = -1; } if ((currentTrack.trackNumber != trackNumber) && (trackNumber >= 0)) { currentTrack.trackNumber = trackNumber; if (playlist == visiblePlaylist) { QModelIndex modelIndex = index(playlist->currentTrack, 3); emit dataChanged(modelIndex, modelIndex); } } } } void PlaylistModel::clearVisiblePlaylist() { visiblePlaylist->tracks.clear(); if (visiblePlaylist->currentTrack >= 0) { visiblePlaylist->currentTrack = -1; emit playTrack(visiblePlaylist, -1); } reset(); } void PlaylistModel::insertUrls(Playlist *playlist, int row, const QList &urls, bool playImmediately) { QList processedUrls; foreach (const KUrl &url, urls) { QString fileName = url.fileName(); Playlist::Format format = Playlist::Invalid; if (fileName.endsWith(QLatin1String(".kaffeine"), Qt::CaseInsensitive)) { format = Playlist::Kaffeine; } else if (fileName.endsWith(QLatin1String(".m3u"), Qt::CaseInsensitive) || fileName.endsWith(QLatin1String(".m3u8"), Qt::CaseInsensitive)) { format = Playlist::M3U; } else if (fileName.endsWith(QLatin1String(".pls"), Qt::CaseInsensitive)) { format = Playlist::PLS; } else if (fileName.endsWith(QLatin1String(".xspf"), Qt::CaseInsensitive)) { format = Playlist::XSPF; } if (format != Playlist::Invalid) { Playlist *playlist = new Playlist(); if (playlist->load(url, format)) { emit appendPlaylist(playlist, playImmediately); playImmediately = false; } else { delete playlist; } continue; } QString localFile = url.toLocalFile(); if (!localFile.isEmpty() && QFileInfo(localFile).isDir()) { QDir dir(localFile); QString extensionFilter = MediaWidget::extensionFilter(); extensionFilter.truncate(extensionFilter.indexOf('|')); QStringList entries = dir.entryList(extensionFilter.split(' '), QDir::Files, QDir::Name | QDir::LocaleAware); foreach (const QString &entry, entries) { processedUrls.append(KUrl::fromLocalFile(dir.filePath(entry))); } } else { processedUrls.append(url); } } if (!processedUrls.isEmpty()) { if (playlist == visiblePlaylist) { beginInsertRows(QModelIndex(), row, row + processedUrls.size() - 1); } for (int i = 0; i < processedUrls.size(); ++i) { PlaylistTrack track; track.url = processedUrls.at(i); track.title = track.url.fileName(); playlist->tracks.insert(row + i, track); } if (playlist->currentTrack >= row) { playlist->currentTrack += processedUrls.size(); } if (playlist == visiblePlaylist) { endInsertRows(); } if (playImmediately) { emit playTrack(playlist, row); } } } int PlaylistModel::columnCount(const QModelIndex &parent) const { if (parent.isValid()) { return 0; } return 5; } int PlaylistModel::rowCount(const QModelIndex &parent) const { if (parent.isValid()) { return 0; } return visiblePlaylist->tracks.size(); } QVariant PlaylistModel::data(const QModelIndex &index, int role) const { if (role == Qt::DecorationRole) { if ((index.row() == visiblePlaylist->currentTrack) && (index.column() == 0)) { return KIcon("arrow-right"); } } else if (role == Qt::DisplayRole) { switch (index.column()) { case 0: return visiblePlaylist->at(index.row()).title; case 1: return visiblePlaylist->at(index.row()).artist; case 2: return visiblePlaylist->at(index.row()).album; case 3: { int trackNumber = visiblePlaylist->at(index.row()).trackNumber; if (trackNumber >= 0) { return trackNumber; } else { return QVariant(); } } case 4: { QTime length = visiblePlaylist->at(index.row()).length; if (length.isValid()) { return KGlobal::locale()->formatTime(length, true, true); } else { return QVariant(); } } } } return QVariant(); } QVariant PlaylistModel::headerData(int section, Qt::Orientation orientation, int role) const { if ((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { switch (section) { case 0: return i18nc("playlist track", "Title"); case 1: return i18nc("playlist track", "Artist"); case 2: return i18nc("playlist track", "Album"); case 3: return i18nc("playlist track", "Track Number"); case 4: return i18nc("playlist track", "Length"); } } return QVariant(); } bool PlaylistModel::removeRows(int row, int count, const QModelIndex &parent) { if (parent.isValid()) { return false; } removeRows(visiblePlaylist, row, count); return true; } class PlaylistTrackLessThan { public: PlaylistTrackLessThan(const Playlist *playlist_, int column_, Qt::SortOrder order_) : playlist(playlist_), column(column_), order(order_) { } ~PlaylistTrackLessThan() { } bool operator()(int x, int y) { int compare = 0; switch (column) { case 0: compare = playlist->at(x).title.localeAwareCompare(playlist->at(y).title); break; case 1: compare = playlist->at(x).artist.localeAwareCompare(playlist->at(y).artist); break; case 2: compare = playlist->at(x).album.localeAwareCompare(playlist->at(y).album); break; case 3: compare = (playlist->at(x).trackNumber - playlist->at(y).trackNumber); break; case 4: compare = playlist->at(y).length.msecsTo(playlist->at(x).length); break; } if (compare != 0) { if (order == Qt::AscendingOrder) { return (compare < 0); } else { return (compare > 0); } } return (x < y); } private: const Playlist *playlist; int column; Qt::SortOrder order; }; void PlaylistModel::sort(int column, Qt::SortOrder order) { if (visiblePlaylist->tracks.size() <= 1) { return; } QVector mapping(visiblePlaylist->tracks.size()); for (int i = 0; i < mapping.size(); ++i) { mapping[i] = i; } qSort(mapping.begin(), mapping.end(), PlaylistTrackLessThan(visiblePlaylist, column, order)); QVector reverseMapping(mapping.size()); for (int i = 0; i < mapping.size(); ++i) { reverseMapping[mapping.at(i)] = i; } emit layoutAboutToBeChanged(); for (int i = 0; i < mapping.size();) { int target = mapping.at(i); if (i != target) { qSwap(mapping[i], mapping[target]); visiblePlaylist->tracks.swap(i, target); } else { ++i; } } if (visiblePlaylist->currentTrack >= 0) { visiblePlaylist->currentTrack = reverseMapping.value(visiblePlaylist->currentTrack); } QModelIndexList oldIndexes = persistentIndexList(); QModelIndexList newIndexes; foreach (const QModelIndex &oldIndex, oldIndexes) { newIndexes.append(index(reverseMapping.value(oldIndex.row()), oldIndex.column())); } changePersistentIndexList(oldIndexes, newIndexes); emit layoutChanged(); } Qt::ItemFlags PlaylistModel::flags(const QModelIndex &index) const { if (index.isValid()) { return (QAbstractTableModel::flags(index) | Qt::ItemIsDragEnabled); } else { return (QAbstractTableModel::flags(index) | Qt::ItemIsDropEnabled); } } QStringList PlaylistModel::mimeTypes() const { return (QStringList() << "text/uri-list" << "x-org.kde.kaffeine-playlist"); } Qt::DropActions PlaylistModel::supportedDropActions() const { return (Qt::CopyAction | Qt::MoveAction); } Q_DECLARE_METATYPE(QList) QMimeData *PlaylistModel::mimeData(const QModelIndexList &indexes) const { QList tracks; QSet rows; foreach (const QModelIndex &index, indexes) { int row = index.row(); if (!rows.contains(row)) { tracks.append(visiblePlaylist->at(row)); rows.insert(row); } } QMimeData *mimeData = new QMimeData(); mimeData->setData("x-org.kde.kaffeine-playlist", QByteArray()); mimeData->setProperty("tracks", QVariant::fromValue(tracks)); return mimeData; } bool PlaylistModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { Q_UNUSED(action) Q_UNUSED(column) Q_UNUSED(parent) if (row < 0) { row = visiblePlaylist->tracks.size(); } QList tracks = data->property("tracks").value >(); if (!tracks.isEmpty()) { beginInsertRows(QModelIndex(), row, row + tracks.size() - 1); for (int i = 0; i < tracks.size(); ++i) { visiblePlaylist->tracks.insert(row + i, tracks.at(i)); } if (visiblePlaylist->currentTrack >= row) { visiblePlaylist->currentTrack += tracks.size(); } endInsertRows(); return true; } if (data->hasUrls()) { insertUrls(visiblePlaylist, row, KUrl::List::fromMimeData(data), false); return true; } return false; } kaffeine-1.2.2/src/playlist/playlisttab.cpp0000644000175000017500000006062311552636277020423 0ustar lxuserlxuser/* * playlisttab.cpp * * Copyright (C) 2009-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "playlisttab.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "playlistmodel.h" PlaylistBrowserModel::PlaylistBrowserModel(PlaylistModel *playlistModel_, Playlist *temporaryPlaylist, QObject *parent) : QAbstractListModel(parent), playlistModel(playlistModel_), currentPlaylist(-1) { playlists.append(temporaryPlaylist); QFile file(KStandardDirs::locateLocal("appdata", "playlistsK4")); if (!file.open(QIODevice::ReadOnly)) { file.setFileName(KStandardDirs::locateLocal("appdata", "playlists")); if (!file.open(QIODevice::ReadOnly)) { kDebug() << "cannot open file" << file.fileName(); return; } } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); unsigned int version; stream >> version; bool hasMetadata = true; bool hasSubtitles = true; if (version == 0xc39637a1) { // compatibility code hasMetadata = false; hasSubtitles = false; } else if (version == 0x2e00f3ea) { // compatibility code hasSubtitles = false; } else if (version != 0x361c4a3c) { kWarning() << "cannot read file" << file.fileName(); return; } while (!stream.atEnd()) { Playlist *playlist = new Playlist(); stream >> playlist->title; QString urlString; stream >> urlString; playlist->url = urlString; int count; stream >> count; for (int i = 0; (i < count) && !stream.atEnd(); ++i) { PlaylistTrack track; stream >> urlString; track.url = urlString; if (hasMetadata) { stream >> track.title; stream >> track.artist; stream >> track.album; stream >> track.trackNumber; stream >> track.length; } else { track.title = track.url.fileName(); } if (hasSubtitles) { QStringList subtitleStrings; stream >> subtitleStrings; foreach (const QString &subtitleString, subtitleStrings) { track.subtitles.append(subtitleString); } stream >> track.currentSubtitle; } playlist->tracks.append(track); } if (stream.status() != QDataStream::Ok) { kWarning() << "cannot read file" << file.fileName(); delete playlist; break; } playlists.append(playlist); } } PlaylistBrowserModel::~PlaylistBrowserModel() { QFile file(KStandardDirs::locateLocal("appdata", "playlistsK4")); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "cannot open file" << file.fileName(); return; } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); int version = 0x361c4a3c; stream << version; for (int i = 1; i < playlists.size(); ++i) { const Playlist *playlist = playlists.at(i); stream << playlist->title; stream << playlist->url.url(); stream << playlist->tracks.size(); foreach (const PlaylistTrack &track, playlist->tracks) { stream << track.url.url(); stream << track.title; stream << track.artist; stream << track.album; stream << track.trackNumber; stream << track.length; QStringList subtitleStrings; foreach (const KUrl &url, track.subtitles) { subtitleStrings.append(url.url()); } stream << subtitleStrings; stream << track.currentSubtitle; } } qDeleteAll(playlists); } int PlaylistBrowserModel::rowCount(const QModelIndex &parent) const { if (parent.isValid()) { return 0; } return playlists.size(); } QVariant PlaylistBrowserModel::data(const QModelIndex &index, int role) const { if (role == Qt::DecorationRole) { if (index.row() == currentPlaylist) { return KIcon("arrow-right"); } } else if (role == Qt::DisplayRole) { return playlists.at(index.row())->title; } return QVariant(); } bool PlaylistBrowserModel::removeRows(int row, int count, const QModelIndex &parent) { if (parent.isValid()) { return false; } if (row == 0) { ++row; if ((--count) == 0) { return false; } } beginRemoveRows(QModelIndex(), row, row + count - 1); Playlist *visiblePlaylist = playlistModel->getVisiblePlaylist(); for (int i = row; i < (row + count); ++i) { if (playlists.at(i) == visiblePlaylist) { if ((row + count) < playlists.size()) { playlistModel->setVisiblePlaylist(playlists.at(row + count)); } else { playlistModel->setVisiblePlaylist(playlists.at(row - 1)); } } } QList::Iterator begin = playlists.begin() + row; QList::Iterator end = begin + count; qDeleteAll(begin, end); playlists.erase(begin, end); if (currentPlaylist >= row) { if (currentPlaylist >= (row + count)) { currentPlaylist -= count; } else { currentPlaylist = -1; emit playTrack(NULL, -1); } } endRemoveRows(); return true; } Qt::ItemFlags PlaylistBrowserModel::flags(const QModelIndex &index) const { return QAbstractListModel::flags(index) | Qt::ItemIsEditable; } bool PlaylistBrowserModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role == Qt::EditRole) { QString title = value.toString(); if (title.isEmpty()) { return false; } playlists.at(index.row())->title = title; emit dataChanged(index, index); return true; } return false; } void PlaylistBrowserModel::append(Playlist *playlist) { beginInsertRows(QModelIndex(), playlists.size(), playlists.size()); playlists.append(playlist); endInsertRows(); } Playlist *PlaylistBrowserModel::getPlaylist(int row) const { return playlists.at(row); } void PlaylistBrowserModel::setCurrentPlaylist(Playlist *playlist) { int oldPlaylist = currentPlaylist; currentPlaylist = playlists.indexOf(playlist); if (oldPlaylist == currentPlaylist) { return; } if (oldPlaylist != -1) { playlistModel->setCurrentTrack(playlists.at(oldPlaylist), -1); QModelIndex modelIndex = index(oldPlaylist, 0); emit dataChanged(modelIndex, modelIndex); } if (currentPlaylist != -1) { QModelIndex modelIndex = index(currentPlaylist, 0); emit dataChanged(modelIndex, modelIndex); } } Playlist *PlaylistBrowserModel::getCurrentPlaylist() const { if (currentPlaylist >= 0) { return playlists.at(currentPlaylist); } else { return playlistModel->getVisiblePlaylist(); } } class PlaylistBrowserView : public QListView { public: explicit PlaylistBrowserView(QWidget *parent) : QListView(parent) { } ~PlaylistBrowserView() { } protected: void keyPressEvent(QKeyEvent *event); }; void PlaylistBrowserView::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Delete) { QModelIndexList selectedRows = selectionModel()->selectedRows(); qSort(selectedRows); for (int i = selectedRows.size() - 1; i >= 0; --i) { // FIXME compress model()->removeRows(selectedRows.at(i).row(), 1); } return; } QListView::keyPressEvent(event); } PlaylistView::PlaylistView(QWidget *parent) : QTreeView(parent) { } PlaylistView::~PlaylistView() { } void PlaylistView::removeSelectedRows() { QModelIndexList selectedRows = selectionModel()->selectedRows(); qSort(selectedRows); for (int i = selectedRows.size() - 1; i >= 0; --i) { // FIXME compress model()->removeRows(selectedRows.at(i).row(), 1); } } void PlaylistView::contextMenuEvent(QContextMenuEvent *event) { if (!currentIndex().isValid()) { return; } QMenu::exec(actions(), event->globalPos()); } void PlaylistView::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Delete) { removeSelectedRows(); return; } QTreeView::keyPressEvent(event); } PlaylistTab::PlaylistTab(KMenu *menu, KActionCollection *collection, MediaWidget *mediaWidget_) : mediaWidget(mediaWidget_) { Playlist *temporaryPlaylist = new Playlist(); temporaryPlaylist->title = i18nc("playlist browser", "Temporary Playlist"); playlistModel = new PlaylistModel(temporaryPlaylist, this); connect(playlistModel, SIGNAL(playTrack(Playlist*,int)), this, SLOT(playTrack(Playlist*,int))); connect(playlistModel, SIGNAL(appendPlaylist(Playlist*,bool)), this, SLOT(appendPlaylist(Playlist*,bool))); playlistBrowserModel = new PlaylistBrowserModel(playlistModel, temporaryPlaylist, this); playlistModel->setVisiblePlaylist(playlistBrowserModel->getPlaylist(0)); connect(playlistBrowserModel, SIGNAL(playTrack(Playlist*,int)), this, SLOT(playTrack(Playlist*,int))); connect(mediaWidget, SIGNAL(playlistPrevious()), this, SLOT(playPreviousTrack())); connect(mediaWidget, SIGNAL(playlistPlay()), this, SLOT(playCurrentTrack())); connect(mediaWidget, SIGNAL(playlistNext()), this, SLOT(playNextTrack())); connect(mediaWidget, SIGNAL(playlistUrlsDropped(QList)), this, SLOT(appendUrls(QList))); connect(mediaWidget, SIGNAL(playlistTrackLengthChanged(int)), this, SLOT(updateTrackLength(int))); connect(mediaWidget, SIGNAL(playlistTrackMetadataChanged(QMap)), this, SLOT(updateTrackMetadata(QMap))); repeatAction = new KAction(KIcon("media-playlist-repeat"), i18nc("playlist menu", "Repeat"), this); repeatAction->setCheckable(true); menu->addAction(collection->addAction("playlist_repeat", repeatAction)); randomAction = new KAction(KIcon("media-playlist-shuffle"), i18nc("playlist menu", "Random"), this); randomAction->setCheckable(true); menu->addAction(collection->addAction("playlist_random", randomAction)); KAction *addSubtitleAction = new KAction(KIcon("application-x-subrip"), i18n("Add Subtitle"), this); collection->addAction("playlist_add_subtitle", addSubtitleAction); KAction *removeTrackAction = new KAction(KIcon("edit-delete"), i18nc("@action", "Remove"), this); collection->addAction("playlist_remove_track", removeTrackAction); KAction *clearAction = new KAction(KIcon("edit-clear-list"), i18nc("remove all items from a list", "Clear"), this); connect(clearAction, SIGNAL(triggered(bool)), playlistModel, SLOT(clearVisiblePlaylist())); menu->addAction(collection->addAction("playlist_clear", clearAction)); menu->addSeparator(); KAction *newAction = new KAction(KIcon("list-add"), i18nc("@action", "New"), this); connect(newAction, SIGNAL(triggered(bool)), this, SLOT(newPlaylist())); menu->addAction(collection->addAction("playlist_new", newAction)); KAction *renameAction = new KAction(KIcon("edit-rename"), i18nc("rename an entry in a list", "Rename"), this); connect(renameAction, SIGNAL(triggered(bool)), this, SLOT(renamePlaylist())); menu->addAction(collection->addAction("playlist_rename", renameAction)); KAction *removePlaylistAction = new KAction(KIcon("edit-delete"), i18nc("@action", "Remove"), this); connect(removePlaylistAction, SIGNAL(triggered(bool)), this, SLOT(removePlaylist())); menu->addAction(collection->addAction("playlist_remove", removePlaylistAction)); KAction *savePlaylistAction = KStandardAction::save(this, SLOT(savePlaylist()), this); menu->addAction(collection->addAction("playlist_save", savePlaylistAction)); KAction *savePlaylistAsAction = KStandardAction::saveAs(this, SLOT(savePlaylistAs()), this); menu->addAction(collection->addAction("playlist_save_as", savePlaylistAsAction)); QBoxLayout *widgetLayout = new QHBoxLayout(this); widgetLayout->setMargin(0); QSplitter *horizontalSplitter = new QSplitter(this); widgetLayout->addWidget(horizontalSplitter); QSplitter *verticalSplitter = new QSplitter(Qt::Vertical, horizontalSplitter); QWidget *widget = new QWidget(verticalSplitter); QBoxLayout *sideLayout = new QVBoxLayout(widget); sideLayout->setMargin(0); QBoxLayout *boxLayout = new QHBoxLayout(); QToolButton *toolButton = new QToolButton(widget); toolButton->setDefaultAction(newAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(renameAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(removePlaylistAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(savePlaylistAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(savePlaylistAsAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); boxLayout->addStretch(); sideLayout->addLayout(boxLayout); playlistBrowserView = new PlaylistBrowserView(widget); playlistBrowserView->addAction(newAction); playlistBrowserView->addAction(renameAction); playlistBrowserView->addAction(removePlaylistAction); playlistBrowserView->addAction(savePlaylistAction); playlistBrowserView->addAction(savePlaylistAsAction); playlistBrowserView->setContextMenuPolicy(Qt::ActionsContextMenu); playlistBrowserView->setModel(playlistBrowserModel); connect(playlistBrowserView, SIGNAL(activated(QModelIndex)), this, SLOT(playlistActivated(QModelIndex))); sideLayout->addWidget(playlistBrowserView); // KFileWidget creates a local event loop which can cause bad side // effects (because the main window isn't fully constructed yet) fileWidgetSplitter = verticalSplitter; QTimer::singleShot(0, this, SLOT(createFileWidget())); verticalSplitter = new QSplitter(Qt::Vertical, horizontalSplitter); widget = new QWidget(verticalSplitter); sideLayout = new QVBoxLayout(widget); sideLayout->setMargin(0); boxLayout = new QHBoxLayout(); toolButton = new QToolButton(widget); toolButton->setDefaultAction(repeatAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(randomAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(removeTrackAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); toolButton = new QToolButton(widget); toolButton->setDefaultAction(clearAction); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); boxLayout->addWidget(toolButton); boxLayout->addStretch(); sideLayout->addLayout(boxLayout); playlistView = new PlaylistView(widget); playlistView->setAlternatingRowColors(true); playlistView->setDragDropMode(QAbstractItemView::DragDrop); playlistView->setRootIsDecorated(false); playlistView->setSelectionMode(QAbstractItemView::ExtendedSelection); playlistView->setModel(playlistModel); playlistView->sortByColumn(-1, Qt::AscendingOrder); playlistView->setSortingEnabled(true); playlistView->addAction(addSubtitleAction); connect(addSubtitleAction, SIGNAL(triggered(bool)), this, SLOT(addSubtitle())); playlistView->addAction(removeTrackAction); connect(removeTrackAction, SIGNAL(triggered(bool)), playlistView, SLOT(removeSelectedRows())); connect(playlistView, SIGNAL(activated(QModelIndex)), this, SLOT(playTrack(QModelIndex))); sideLayout->addWidget(playlistView); QWidget *mediaContainer = new QWidget(verticalSplitter); mediaLayout = new QHBoxLayout(mediaContainer); mediaLayout->setMargin(0); verticalSplitter->setStretchFactor(1, 1); horizontalSplitter->setStretchFactor(1, 1); } PlaylistTab::~PlaylistTab() { } void PlaylistTab::appendToCurrentPlaylist(const QList &urls, bool playImmediately) { playlistModel->appendUrls(playlistBrowserModel->getCurrentPlaylist(), urls, playImmediately); } void PlaylistTab::appendToVisiblePlaylist(const QList &urls, bool playImmediately) { playlistModel->appendUrls(playlistModel->getVisiblePlaylist(), urls, playImmediately); } void PlaylistTab::removeTrack(int row) { Playlist *currentPlaylist = playlistBrowserModel->getCurrentPlaylist(); if ((row >= 0) && (row < currentPlaylist->tracks.size())) { playlistModel->removeRows(currentPlaylist, row, 1); } } void PlaylistTab::setRandom(bool random) { randomAction->setChecked(random); } void PlaylistTab::setRepeat(bool repeat) { repeatAction->setChecked(repeat); } int PlaylistTab::getCurrentTrack() const { const Playlist *currentPlaylist = playlistBrowserModel->getCurrentPlaylist(); if (currentPlaylist->currentTrack >= 0) { return currentPlaylist->currentTrack; } else { return 0; } } int PlaylistTab::getTrackCount() const { return playlistBrowserModel->getCurrentPlaylist()->tracks.size(); } bool PlaylistTab::getRandom() const { return randomAction->isChecked(); } bool PlaylistTab::getRepeat() const { return repeatAction->isChecked(); } void PlaylistTab::createFileWidget() { KFileWidget *fileWidget = new KFileWidget(KUrl(), fileWidgetSplitter); fileWidget->setFilter(MediaWidget::extensionFilter()); fileWidget->setMode(KFile::Files | KFile::ExistingOnly); fileWidgetSplitter->setStretchFactor(1, 1); // KFileWidget creates a KUrlComboBox without layout (!), which steals the focus: // kDebug() << QApplication::focusWidget(); // kDebug() << QApplication::focusWidget()->layout(); // Let's reclaim the focus (and give it back to the main window). // FIXME report issue window()->setFocus(); } void PlaylistTab::newPlaylist() { Playlist *playlist = new Playlist(); playlist->title = i18nc("playlist browser", "Unnamed Playlist"); playlistBrowserModel->append(playlist); } void PlaylistTab::renamePlaylist() { QModelIndex index = playlistBrowserView->currentIndex(); if (!index.isValid() || (index.row() == 0)) { return; } playlistBrowserView->edit(index); } void PlaylistTab::removePlaylist() { QModelIndexList selectedRows = playlistBrowserView->selectionModel()->selectedRows(); qSort(selectedRows); for (int i = selectedRows.size() - 1; i >= 0; --i) { // FIXME compress playlistBrowserModel->removeRows(selectedRows.at(i).row(), 1); } } void PlaylistTab::savePlaylist() { savePlaylist(false); } void PlaylistTab::savePlaylistAs() { savePlaylist(true); } void PlaylistTab::addSubtitle() { QModelIndexList selectedRows = playlistView->selectionModel()->selectedRows(); if (selectedRows.size() != 1) { return; } int row = selectedRows.at(0).row(); Playlist *playlist = playlistModel->getVisiblePlaylist(); QList urls = KFileDialog::getOpenUrls(KUrl(), subtitleExtensionFilter(), this); if ((row < playlist->tracks.size()) && !urls.isEmpty()) { PlaylistTrack &track = playlist->tracks[row]; track.subtitles += urls; if (track.subtitles.size() == urls.size()) { track.currentSubtitle = 0; } if ((playlist == playlistBrowserModel->getCurrentPlaylist()) && (playlist->currentTrack == row)) { mediaWidget->updateExternalSubtitles(track.subtitles, track.currentSubtitle); } } } void PlaylistTab::playlistActivated(const QModelIndex &index) { playlistModel->setVisiblePlaylist(playlistBrowserModel->getPlaylist(index.row())); } void PlaylistTab::playPreviousTrack() { Playlist *currentPlaylist = playlistBrowserModel->getCurrentPlaylist(); playTrack(currentPlaylist, currentPlaylist->currentTrack - 1); } void PlaylistTab::playCurrentTrack() { Playlist *currentPlaylist = playlistBrowserModel->getCurrentPlaylist(); if (currentPlaylist->currentTrack >= 0) { playTrack(currentPlaylist, currentPlaylist->currentTrack); } else { playNextTrack(); } } void PlaylistTab::playNextTrack() { Playlist *currentPlaylist = playlistBrowserModel->getCurrentPlaylist(); if (randomAction->isChecked()) { int size = currentPlaylist->tracks.size(); if (size < 2) { playTrack(currentPlaylist, 0); } else if (currentPlaylist->currentTrack != -1) { int track = (qrand() % (size - 1)); if (track >= currentPlaylist->currentTrack) { ++track; } playTrack(currentPlaylist, track); } else { playTrack(currentPlaylist, qrand() % size); } } else if (((currentPlaylist->currentTrack + 1) == currentPlaylist->tracks.size()) && repeatAction->isChecked()) { playTrack(currentPlaylist, 0); } else { playTrack(currentPlaylist, currentPlaylist->currentTrack + 1); } } void PlaylistTab::activate() { mediaLayout->addWidget(mediaWidget); } void PlaylistTab::playTrack(const QModelIndex &index) { playTrack(playlistModel->getVisiblePlaylist(), index.row()); } void PlaylistTab::playTrack(Playlist *playlist, int track) { if ((track < 0) || (playlist == NULL) || (track >= playlist->tracks.size())) { track = -1; } if (track != -1) { PlaylistTrack &playlistTrack = playlist->tracks[track]; KUrl subtitleUrl; if ((playlistTrack.currentSubtitle >= 0) && (playlistTrack.currentSubtitle < playlistTrack.subtitles.size())) { subtitleUrl = playlistTrack.subtitles.at(playlistTrack.currentSubtitle); } else if (playlistTrack.subtitles.isEmpty()) { // check whether there's a possible subtitle file candidate QString localFile = playlistTrack.url.toLocalFile(); localFile.truncate(localFile.lastIndexOf('.')); if (!localFile.isEmpty()) { if (QFile::exists(localFile + ".asc")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".asc"); } else if (QFile::exists(localFile + ".smi")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".smi"); } else if (QFile::exists(localFile + ".srt")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".srt"); } else if (QFile::exists(localFile + ".ssa")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".ssa"); } else if (QFile::exists(localFile + ".sub")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".sub"); } else if (QFile::exists(localFile + ".txt")) { subtitleUrl = KUrl::fromLocalFile(localFile + ".txt"); } } if (subtitleUrl.isValid()) { playlistTrack.subtitles += subtitleUrl; playlistTrack.currentSubtitle = 0; } } mediaWidget->play(playlistTrack.url, subtitleUrl); mediaWidget->updateExternalSubtitles(playlistTrack.subtitles, playlistTrack.currentSubtitle); playlistBrowserModel->setCurrentPlaylist(playlist); } else { mediaWidget->stop(); } if (playlist != NULL) { playlistModel->setCurrentTrack(playlist, track); } } void PlaylistTab::appendUrls(const QList &urls) { playlistModel->appendUrls(playlistModel->getVisiblePlaylist(), urls, true); } void PlaylistTab::appendPlaylist(Playlist *playlist, bool playImmediately) { playlistBrowserModel->append(playlist); if (playImmediately) { playlistBrowserModel->setCurrentPlaylist(playlist); playlistModel->setVisiblePlaylist(playlist); playNextTrack(); } } void PlaylistTab::updateTrackLength(int length) { playlistModel->updateTrackLength(playlistBrowserModel->getCurrentPlaylist(), length); } void PlaylistTab::updateTrackMetadata(const QMap &metadata) { playlistModel->updateTrackMetadata(playlistBrowserModel->getCurrentPlaylist(), metadata); } QString PlaylistTab::subtitleExtensionFilter() { return QString("*.asc *.smi *.srt *.ssa *.sub *.txt|") + i18nc("file filter", "Subtitle Files"); } void PlaylistTab::savePlaylist(bool askName) { QModelIndex index = playlistBrowserView->currentIndex(); if (!index.isValid()) { return; } Playlist *playlist = playlistBrowserModel->getPlaylist(index.row()); KUrl url = playlist->url; if (askName || !url.isValid() || url.fileName().endsWith(QLatin1String(".kaffeine"), Qt::CaseInsensitive)) { url = KFileDialog::getSaveUrl(KUrl(), i18nc("file filter", "*.xspf|XSPF Playlist\n*.m3u|M3U Playlist\n*.pls|PLS Playlist"), this); if (!url.isValid()) { return; } playlist->url = url; } QString fileName = url.fileName(); Playlist::Format format = Playlist::Invalid; if (fileName.endsWith(QLatin1String(".m3u"), Qt::CaseInsensitive)) { format = Playlist::M3U; } else if (fileName.endsWith(QLatin1String(".pls"), Qt::CaseInsensitive)) { format = Playlist::PLS; } else if (fileName.endsWith(QLatin1String(".xspf"), Qt::CaseInsensitive)) { format = Playlist::XSPF; } if (format != Playlist::Invalid) { playlist->save(format); } } kaffeine-1.2.2/src/kaffeine.desktop0000644000175000017500000001005611552636277016664 0ustar lxuserlxuser[Desktop Entry] Name=Kaffeine Name[bg]=Kaffeine Name[ca]=Kaffeine Name[ca@valencia]=Kaffeine Name[cs]=Kaffeine Name[csb]=Kaffeine Name[da]=Kaffeine Name[de]=Kaffeine Name[el]=Kaffeine Name[en_GB]=Kaffeine Name[eo]=Kaffeine Name[es]=Kaffeine Name[et]=Kaffeine Name[fi]=Kaffeine Name[fr]=Kaffeine Name[ga]=Kaffeine Name[gl]=Kaffeine Name[hne]=कैफीन Name[hr]=Kaffeine Name[hu]=Kaffeine Name[is]=Kaffeine Name[it]=Kaffeine Name[ja]=Kaffeine Name[km]=Kaffeine Name[ko]=Kaffeine Name[ku]=Kaffeine Name[lv]=Kaffeine Name[mai]=Kaffeine Name[nb]=Kaffeine Name[nds]=Kaffeine Name[ne]=क्याफिन Name[nl]=Kaffeine Name[nn]=Kaffeine Name[pa]=ਕੈਫ਼ੀਨ Name[pl]=Kaffeine Name[pt]=Kaffeine Name[pt_BR]=Kaffeine Name[ro]=Kaffeine Name[ru]=Kaffeine Name[sk]=Kaffeine Name[sr]=Кафеин Name[sr@ijekavian]=Кафеин Name[sr@ijekavianlatin]=Kaffeine Name[sr@latin]=Kaffeine Name[sv]=Kaffeine Name[tg]=Kaffeine Name[th]=แคฟเฟอีน-K Name[tr]=Kaffeine Name[uk]=Kaffeine Name[x-test]=xxKaffeinexx Name[zh_CN]=Kaffeine Name[zh_TW]=Kaffeine Exec=kaffeine %U GenericName=Media Player GenericName[bg]=Медия плеър GenericName[ca]=Reproductor de suports GenericName[ca@valencia]=Reproductor de suports GenericName[cs]=Přehrávač médií GenericName[csb]=Mùltimedialny grôcz GenericName[da]=Medieafspiller GenericName[de]=Medienwiedergabe GenericName[el]=Αναπαραγωγέας πολυμέσων GenericName[en_GB]=Media Player GenericName[es]=Reproductor de medios GenericName[et]=Meediafailide mängija GenericName[fi]=Mediasoitin GenericName[fr]=Lecteur multimédia GenericName[ga]=Seinnteoir Meán GenericName[gl]=Reprodutor multimedia GenericName[hi]=मीडिया-प्लेयर GenericName[hne]=मीडिया-प्लेयर GenericName[hr]=Svirač medija GenericName[hu]=Médialejátszó GenericName[is]=Margmiðlunarspilari GenericName[it]=Lettore multimediale GenericName[ja]=メディアプレーヤー GenericName[km]=កម្មវិធី​ចាក់​មេឌៀ GenericName[ko]=미디어 재생기 GenericName[ku]=Lêdarê Medya GenericName[lv]=Mediju atskaņotājs GenericName[mai]=मीडिया-प्लेयर GenericName[nb]=Mediespiller GenericName[nds]=Medienafspeler GenericName[ne]=मिडिया प्लेयर GenericName[nl]=Mediaspeler GenericName[nn]=Mediespelar GenericName[oc]=Media Player GenericName[pa]=ਮੀਡਿਆ ਪਲੇਅਰ GenericName[pl]=Odtwarzacz multimedialny GenericName[pt]=Leitor Multimédia GenericName[pt_BR]=Reprodutor de mídia GenericName[ro]=Redare multimedia GenericName[ru]=Проигрыватель мультимедиа GenericName[sk]=Mediálny prehrávač GenericName[sr]=Медија плејер GenericName[sr@ijekavian]=Медија плејер GenericName[sr@ijekavianlatin]=Medija plejer GenericName[sr@latin]=Medija plejer GenericName[sv]=Mediaspelare GenericName[tg]=Навозишгари Медиа GenericName[th]=เครื่องเล่นสื่อ GenericName[tr]=Çokluortam Oynatıcı GenericName[uk]=Програвач мультимедіа GenericName[x-test]=xxMedia Playerxx GenericName[zh_CN]=媒体播放器 GenericName[zh_TW]=媒體播放器 Categories=Qt;KDE;AudioVideo;Player; Icon=kaffeine MimeType=application/ogg;application/ram;application/vnd.rn-realmedia;application/x-quicktime-media-link;application/x-shorten;application/xspf+xml;audio/ac3;audio/basic;audio/flac;audio/mp4;audio/mpeg;audio/ogg;audio/vnd.rn-realaudio;audio/x-aiff;audio/x-it;audio/x-m4b;audio/x-matroska;audio/x-mod;audio/x-mpegurl;audio/x-ms-asx;audio/x-ms-wma;audio/x-musepack;audio/x-s3m;audio/x-scpls;audio/x-stm;audio/x-tta;audio/x-voc;audio/x-wav;audio/x-wavpack;audio/x-xm;video/dv;video/mp2t;video/mp4;video/mpeg;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-anim;video/x-flic;video/x-flv;video/x-matroska;video/x-mng;video/x-ms-asf;video/x-ms-wmv;video/x-msvideo;video/x-nsv;video/x-ogm+ogg; Terminal=false Type=Application X-KDE-HasTempFileOption=true #To enable back when doc will be available #X-DocPath=kaffeine/index.html X-Desktop-File-Install-Version=0.15 kaffeine-1.2.2/src/shareddata.h0000644000175000017500000000376111552636277015777 0ustar lxuserlxuser/* * shareddata.h * * Copyright (C) 2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SHAREDDATA_H #define SHAREDDATA_H #include class SharedData : public QSharedData { public: SharedData() { } ~SharedData() { } SharedData &operator=(const SharedData &) { return *this; } }; template class ExplicitlySharedDataPointer { public: explicit ExplicitlySharedDataPointer(T *data_ = NULL) : data(data_) { } ~ExplicitlySharedDataPointer() { } bool isValid() const { return (data.constData() != NULL); } const T *constData() const { return data.constData(); } const T &operator*() const { return *data; } const T *operator->() const { return data.constData(); } bool operator==(const ExplicitlySharedDataPointer &other) const { return (data.constData() == other.data.constData()); } bool operator!=(const ExplicitlySharedDataPointer &other) const { return (data.constData() != other.data.constData()); } bool operator<(const ExplicitlySharedDataPointer &other) const { return (data.constData() < other.data.constData()); } friend uint qHash(const ExplicitlySharedDataPointer &pointer) { return qHash(pointer.data.constData()); } private: QExplicitlySharedDataPointer data; }; #endif /* SHAREDDATA_H */ kaffeine-1.2.2/src/osdwidget.h0000644000175000017500000000274011552636277015664 0ustar lxuserlxuser/* * osdwidget.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef OSDWIDGET_H #define OSDWIDGET_H #include class OsdObject { public: OsdObject() { } virtual ~OsdObject() { } virtual QPixmap paintOsd(QRect &rect, const QFont &font, Qt::LayoutDirection direction) = 0; }; class OsdWidget : public QWidget { Q_OBJECT public: explicit OsdWidget(QWidget *parent); ~OsdWidget(); void showText(const QString &text, int duration); // duration: msecs void showObject(OsdObject *osdObject_, int duration); // duration: msecs void hideObject(); protected: void paintEvent(QPaintEvent *); private slots: void hideOsd(); private: QRect rect; QPixmap pixmap; OsdObject *osdObject; QTimer *timer; }; #endif /* OSDWIDGET_H */ kaffeine-1.2.2/src/tabbase.h0000644000175000017500000000175011552636277015274 0ustar lxuserlxuser/* * tabbase.h * * Copyright (C) 2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef TABBASE_H #define TABBASE_H #include class TabBase : public QWidget { public: TabBase() { } ~TabBase() { } virtual void activate() = 0; }; #endif /* TABBASE_H */ kaffeine-1.2.2/src/mainwindow.cpp0000644000175000017500000005470011552636277016405 0ustar lxuserlxuser/* * mainwindow.cpp * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "mainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dvb/dvbtab.h" #include "playlist/playlisttab.h" #include "dbusobjects.h" class StackedLayout : public QStackedLayout { public: explicit StackedLayout(QWidget *parent) : QStackedLayout(parent) { } ~StackedLayout() { } QSize minimumSize() const { QWidget *widget = currentWidget(); if (widget != NULL) { return widget->minimumSizeHint(); } return QSize(); } }; class StartTab : public TabBase { public: explicit StartTab(MainWindow *mainWindow); ~StartTab() { } private: void activate() { } QAbstractButton *addShortcut(const QString &name, const KIcon &icon, QWidget *parent); }; StartTab::StartTab(MainWindow *mainWindow) { setBackgroundRole(QPalette::Base); setAutoFillBackground(true); QGridLayout *gridLayout = new QGridLayout(this); gridLayout->setAlignment(Qt::AlignCenter); gridLayout->setMargin(10); gridLayout->setSpacing(15); QAbstractButton *button = addShortcut(i18n("&1 Play File"), KIcon("video-x-generic"), this); button->setShortcut(Qt::Key_1); connect(button, SIGNAL(clicked()), mainWindow, SLOT(open())); gridLayout->addWidget(button, 0, 0); button = addShortcut(i18n("&2 Play Audio CD"), KIcon("media-optical-audio"), this); button->setShortcut(Qt::Key_2); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openAudioCd())); gridLayout->addWidget(button, 0, 1); button = addShortcut(i18n("&3 Play Video CD"), KIcon("media-optical"), this); button->setShortcut(Qt::Key_3); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openVideoCd())); gridLayout->addWidget(button, 0, 2); button = addShortcut(i18n("&4 Play DVD"), KIcon("media-optical"), this); button->setShortcut(Qt::Key_4); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openDvd())); gridLayout->addWidget(button, 1, 0); #if HAVE_DVB == 1 button = addShortcut(i18n("&5 Digital TV"), KIcon("video-television"), this); button->setShortcut(Qt::Key_5); connect(button, SIGNAL(clicked()), mainWindow, SLOT(playDvb())); gridLayout->addWidget(button, 1, 1); #endif /* HAVE_DVB == 1 */ } QAbstractButton *StartTab::addShortcut(const QString &name, const KIcon &icon, QWidget *parent) { // QPushButton has visual problems with big icons QToolButton *button = new QToolButton(parent); button->setText(name); button->setIcon(icon); button->setFocusPolicy(Qt::NoFocus); button->setIconSize(QSize(48, 48)); button->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); return button; } class PlayerTab : public TabBase { public: explicit PlayerTab(MediaWidget *mediaWidget_); ~PlayerTab() { } void activate() { layout()->addWidget(mediaWidget); mediaWidget->setFocus(); } private: MediaWidget *mediaWidget; }; PlayerTab::PlayerTab(MediaWidget *mediaWidget_) : mediaWidget(mediaWidget_) { QHBoxLayout *layout = new QHBoxLayout(this); layout->setMargin(0); } class ConfigurationDialog : public KDialog { public: enum StartupDisplayMode { StartupNormalMode, StartupMinimalMode, StartupFullScreenMode, StartupRememberLastSetting }; static StartupDisplayMode getStartupDisplayMode(); static void setStartupDisplayMode(StartupDisplayMode startupDisplayMode); ConfigurationDialog(MediaWidget *mediaWidget_, QWidget *parent); ~ConfigurationDialog(); void accept(); private: MediaWidget *mediaWidget; KComboBox *startupDisplayModeBox; QSpinBox *shortSkipBox; QSpinBox *longSkipBox; }; ConfigurationDialog::StartupDisplayMode ConfigurationDialog::getStartupDisplayMode() { StartupDisplayMode startupDisplayMode = StartupNormalMode; switch (KGlobal::config()->group("MainWindow").readEntry("StartupDisplayMode", 0)) { case 0: startupDisplayMode = StartupNormalMode; break; case 1: startupDisplayMode = StartupMinimalMode; break; case 2: startupDisplayMode = StartupFullScreenMode; break; case 3: startupDisplayMode = StartupRememberLastSetting; break; } return startupDisplayMode; } void ConfigurationDialog::setStartupDisplayMode(StartupDisplayMode startupDisplayMode) { int value = 0; switch (startupDisplayMode) { case StartupNormalMode: value = 0; break; case StartupMinimalMode: value = 1; break; case StartupFullScreenMode: value = 2; break; case StartupRememberLastSetting: value = 3; break; } KGlobal::config()->group("MainWindow").writeEntry("StartupDisplayMode", value); } ConfigurationDialog::ConfigurationDialog(MediaWidget *mediaWidget_, QWidget *parent) : KDialog(parent), mediaWidget(mediaWidget_) { setCaption(i18nc("dialog", "Configure Kaffeine")); QWidget *widget = new QWidget(this); QGridLayout *gridLayout = new QGridLayout(widget); gridLayout->addWidget(new QLabel(i18nc("@label:listbox", "Startup display mode:"), widget), 0, 0); int index = 0; switch (getStartupDisplayMode()) { case StartupNormalMode: index = 0; break; case StartupMinimalMode: index = 1; break; case StartupFullScreenMode: index = 2; break; case StartupRememberLastSetting: index = 3; break; } startupDisplayModeBox = new KComboBox(widget); startupDisplayModeBox->addItem(i18nc("@item:inlistbox 'Startup display mode:'", "Normal Mode")); startupDisplayModeBox->addItem(i18nc("@item:inlistbox 'Startup display mode:'", "Minimal Mode")); startupDisplayModeBox->addItem(i18nc("@item:inlistbox 'Startup display mode:'", "Full Screen Mode")); startupDisplayModeBox->addItem(i18nc("@item:inlistbox 'Startup display mode:'", "Remember Last Setting")); startupDisplayModeBox->setCurrentIndex(index); gridLayout->addWidget(startupDisplayModeBox, 0, 1); gridLayout->addWidget(new QLabel(i18nc("'Configure Kaffeine' dialog", "Short skip duration:"), widget), 1, 0); shortSkipBox = new QSpinBox(widget); shortSkipBox->setRange(1, 600); shortSkipBox->setValue(mediaWidget->getShortSkipDuration()); gridLayout->addWidget(shortSkipBox, 1, 1); gridLayout->addWidget(new QLabel(i18nc("'Configure Kaffeine' dialog", "Long skip duration:"), widget), 2, 0); longSkipBox = new QSpinBox(widget); longSkipBox->setRange(1, 600); longSkipBox->setValue(mediaWidget->getLongSkipDuration()); gridLayout->addWidget(longSkipBox, 2, 1); setMainWidget(widget); } ConfigurationDialog::~ConfigurationDialog() { } void ConfigurationDialog::accept() { StartupDisplayMode displayMode = StartupNormalMode; switch (startupDisplayModeBox->currentIndex()) { case 0: displayMode = StartupNormalMode; break; case 1: displayMode = StartupMinimalMode; break; case 2: displayMode = StartupFullScreenMode; break; case 3: displayMode = StartupRememberLastSetting; break; } setStartupDisplayMode(displayMode); mediaWidget->setShortSkipDuration(shortSkipBox->value()); mediaWidget->setLongSkipDuration(longSkipBox->value()); KDialog::accept(); } MainWindow::MainWindow() { // menu structure KMenuBar *menuBar = KMainWindow::menuBar(); collection = new KActionCollection(this); KMenu *menu = new KMenu(i18n("&File"), this); menuBar->addMenu(menu); KAction *action = KStandardAction::open(this, SLOT(open()), collection); menu->addAction(collection->addAction("file_open", action)); action = new KAction(KIcon("text-html"), i18nc("@action:inmenu", "Open URL..."), collection); action->setShortcut(Qt::CTRL | Qt::Key_U); connect(action, SIGNAL(triggered(bool)), this, SLOT(openUrl())); menu->addAction(collection->addAction("file_open_url", action)); actionOpenRecent = KStandardAction::openRecent(this, SLOT(openUrl(KUrl)), collection); actionOpenRecent->loadEntries(KGlobal::config()->group("Recent Files")); menu->addAction(collection->addAction("file_open_recent", actionOpenRecent)); menu->addSeparator(); action = new KAction(KIcon("media-optical-audio"), i18n("Play Audio CD"), collection); connect(action, SIGNAL(triggered(bool)), this, SLOT(openAudioCd())); menu->addAction(collection->addAction("file_play_audiocd", action)); action = new KAction(KIcon("media-optical"), i18n("Play Video CD"), collection); connect(action, SIGNAL(triggered(bool)), this, SLOT(openVideoCd())); menu->addAction(collection->addAction("file_play_videocd", action)); action = new KAction(KIcon("media-optical"), i18n("Play DVD"), collection); connect(action, SIGNAL(triggered(bool)), this, SLOT(openDvd())); menu->addAction(collection->addAction("file_play_dvd", action)); action = new KAction(KIcon("media-optical"), i18nc("@action:inmenu", "Play DVD Folder"), collection); connect(action, SIGNAL(triggered()), this, SLOT(playDvdFolder())); menu->addAction(collection->addAction("file_play_dvd_folder", action)); menu->addSeparator(); action = KStandardAction::quit(this, SLOT(close()), collection); menu->addAction(collection->addAction("file_quit", action)); KMenu *playerMenu = new KMenu(i18n("&Playback"), this); menuBar->addMenu(playerMenu); KMenu *playlistMenu = new KMenu(i18nc("menu bar", "Play&list"), this); menuBar->addMenu(playlistMenu); #if HAVE_DVB == 1 KMenu *dvbMenu = new KMenu(i18n("&Television"), this); menuBar->addMenu(dvbMenu); #endif /* HAVE_DVB == 1 */ menu = new KMenu(i18n("&Settings"), this); menuBar->addMenu(menu); action = KStandardAction::keyBindings(this, SLOT(configureKeys()), collection); menu->addAction(collection->addAction("settings_keys", action)); action = KStandardAction::preferences(this, SLOT(configureKaffeine()), collection); menu->addAction(collection->addAction("settings_kaffeine", action)); menuBar->addSeparator(); menuBar->addMenu(helpMenu()); // navigation bar - keep in sync with TabIndex enum! navigationBar = new KToolBar("navigation_bar", this, Qt::LeftToolBarArea); connect(navigationBar, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(navigationBarOrientationChanged(Qt::Orientation))); tabBar = new KTabBar(navigationBar); tabBar->addTab(KIcon("start-here-kde"), i18n("Start")); tabBar->addTab(KIcon("kaffeine"), i18n("Playback")); tabBar->addTab(KIcon("view-media-playlist"), i18n("Playlist")); #if HAVE_DVB == 1 tabBar->addTab(KIcon("video-television"), i18n("Television")); #endif /* HAVE_DVB == 1 */ tabBar->setShape(KTabBar::RoundedWest); tabBar->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(activateTab(int))); navigationBar->addWidget(tabBar); // control bar controlBar = new KToolBar("control_bar", this, Qt::BottomToolBarArea); controlBar->setToolButtonStyle(Qt::ToolButtonIconOnly); autoHideControlBar = false; cursorHideTimer = new QTimer(this); cursorHideTimer->setInterval(1500); cursorHideTimer->setSingleShot(true); connect(cursorHideTimer, SIGNAL(timeout()), this, SLOT(hideCursor())); // main area QWidget *widget = new QWidget(this); stackedLayout = new StackedLayout(widget); setCentralWidget(widget); mediaWidget = new MediaWidget(playerMenu, controlBar, collection, widget); connect(mediaWidget, SIGNAL(displayModeChanged()), this, SLOT(displayModeChanged())); connect(mediaWidget, SIGNAL(changeCaption(QString)), this, SLOT(setCaption(QString))); connect(mediaWidget, SIGNAL(resizeToVideo(int)), this, SLOT(resizeToVideo(int))); // tabs - keep in sync with TabIndex enum! TabBase *startTab = new StartTab(this); tabs.append(startTab); stackedLayout->addWidget(startTab); playerTab = new PlayerTab(mediaWidget); playerTab->activate(); tabs.append(playerTab); stackedLayout->addWidget(playerTab); playlistTab = new PlaylistTab(playlistMenu, collection, mediaWidget); tabs.append(playlistTab); stackedLayout->addWidget(playlistTab); #if HAVE_DVB == 1 dvbTab = new DvbTab(dvbMenu, collection, mediaWidget); connect(this, SIGNAL(mayCloseApplication(bool*,QWidget*)), dvbTab, SLOT(mayCloseApplication(bool*,QWidget*))); tabs.append(dvbTab); stackedLayout->addWidget(dvbTab); #endif /* HAVE_DVB == 1 */ currentTabIndex = StartTabId; // actions also have to work if the menu bar is hidden (fullscreen) collection->addAssociatedWidget(this); // restore custom key bindings collection->readSettings(); // let KMainWindow save / restore its settings setAutoSaveSettings(); // make sure that the bars are visible (fullscreen -> quit -> restore -> hidden) menuBar->show(); navigationBar->show(); controlBar->show(); // workaround setAutoSaveSettings() which doesn't accept "IconOnly" as initial state controlBar->setToolButtonStyle(Qt::ToolButtonIconOnly); KStatusNotifierItem *trayIcon = new KStatusNotifierItem(this); trayIcon->setIconByName("kaffeine"); trayIcon->setStatus(KStatusNotifierItem::Active); trayIcon->setToolTipIconByName("kaffeine"); trayIcon->setToolTipTitle(i18n("Kaffeine")); // initialize random number generator qsrand(QTime().msecsTo(QTime::currentTime())); // initialize dbus objects QDBusConnection::sessionBus().registerObject("/", new MprisRootObject(this), QDBusConnection::ExportAllContents); QDBusConnection::sessionBus().registerObject("/Player", new MprisPlayerObject(this, mediaWidget, playlistTab, this), QDBusConnection::ExportAllContents); QDBusConnection::sessionBus().registerObject("/TrackList", new MprisTrackListObject(playlistTab, this), QDBusConnection::ExportAllContents); #if HAVE_DVB == 1 QDBusConnection::sessionBus().registerObject("/Television", new DBusTelevisionObject(dvbTab, this), QDBusConnection::ExportAllContents); #endif /* HAVE_DVB == 1 */ QDBusConnection::sessionBus().registerService("org.mpris.kaffeine"); show(); // set display mode switch (ConfigurationDialog::getStartupDisplayMode()) { case ConfigurationDialog::StartupNormalMode: // nothing to do break; case ConfigurationDialog::StartupMinimalMode: mediaWidget->setDisplayMode(MediaWidget::MinimalMode); break; case ConfigurationDialog::StartupFullScreenMode: mediaWidget->setDisplayMode(MediaWidget::FullScreenMode); break; case ConfigurationDialog::StartupRememberLastSetting: { int value = KGlobal::config()->group("MainWindow").readEntry("DisplayMode", 0); switch (value) { case 0: // nothing to do break; case 1: mediaWidget->setDisplayMode(MediaWidget::MinimalMode); break; case 2: mediaWidget->setDisplayMode(MediaWidget::FullScreenMode); break; } break; } } } MainWindow::~MainWindow() { actionOpenRecent->saveEntries(KGlobal::config()->group("Recent Files")); if (!temporaryUrls.isEmpty()) { KIO::del(temporaryUrls); } int value = 0; switch (mediaWidget->getDisplayMode()) { case MediaWidget::NormalMode: value = 0; break; case MediaWidget::MinimalMode: value = 1; break; case MediaWidget::FullScreenMode: value = 2; break; } KGlobal::config()->group("MainWindow").writeEntry("DisplayMode", value); } KCmdLineOptions MainWindow::cmdLineOptions() { KCmdLineOptions options; options.add("f"); options.add("fullscreen", ki18n("Start in full screen mode")); options.add("audiocd", ki18n("Play Audio CD")); options.add("videocd", ki18n("Play Video CD")); options.add("dvd", ki18n("Play DVD")); options.add("tv ", ki18nc("command line option", "(deprecated option)")); options.add("channel ", ki18nc("command line option", "Play TV channel")); options.add("lastchannel", ki18nc("command line option", "Play last tuned TV channel")); options.add("dumpdvb", ki18nc("command line option", "Dump dvb data (debug option)")); options.add("+[file]", ki18n("Files or URLs to play")); return options; } void MainWindow::parseArgs() { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); if (args->isSet("fullscreen")) { mediaWidget->setDisplayMode(MediaWidget::FullScreenMode); } if (args->isSet("audiocd")) { if (args->count() > 0) { openAudioCd(args->arg(0)); } else { openAudioCd(); } args->clear(); return; } if (args->isSet("videocd")) { if (args->count() > 0) { openVideoCd(args->arg(0)); } else { openVideoCd(); } args->clear(); return; } if (args->isSet("dvd")) { if (args->count() > 0) { openDvd(args->arg(0)); } else { openDvd(); } args->clear(); return; } #if HAVE_DVB == 1 if (args->isSet("dumpdvb")) { dvbTab->enableDvbDump(); } QString channel = args->getOption("channel"); if (!channel.isEmpty()) { activateTab(DvbTabId); dvbTab->playChannel(channel); args->clear(); return; } channel = args->getOption("tv"); if (!channel.isEmpty()) { activateTab(DvbTabId); dvbTab->playChannel(channel); args->clear(); return; } if (args->isSet("lastchannel")) { activateTab(DvbTabId); dvbTab->playLastChannel(); args->clear(); return; } #endif /* HAVE_DVB == 1 */ if (args->count() > 0) { QList urls; for (int i = 0; i < args->count(); ++i) { KUrl url = args->url(i); if (url.isValid()) { urls.append(url); } } if (args->isTempFileSet()) { temporaryUrls.append(urls); } if (urls.size() >= 2) { activateTab(PlaylistTabId); playlistTab->appendToVisiblePlaylist(urls, true); } else if (!urls.isEmpty()) { openUrl(urls.at(0)); } } args->clear(); } void MainWindow::displayModeChanged() { if (mediaWidget->getDisplayMode() == MediaWidget::FullScreenMode) { setWindowState(windowState() | Qt::WindowFullScreen); } else { setWindowState(windowState() & (~Qt::WindowFullScreen)); } switch (mediaWidget->getDisplayMode()) { case MediaWidget::FullScreenMode: case MediaWidget::MinimalMode: menuBar()->hide(); navigationBar->hide(); controlBar->hide(); autoHideControlBar = true; cursorHideTimer->start(); stackedLayout->setCurrentIndex(PlayerTabId); playerTab->activate(); break; case MediaWidget::NormalMode: menuBar()->show(); navigationBar->show(); controlBar->show(); autoHideControlBar = false; cursorHideTimer->stop(); unsetCursor(); stackedLayout->setCurrentIndex(currentTabIndex); tabs.at(currentTabIndex)->activate(); break; } } void MainWindow::open() { QList urls = KFileDialog::getOpenUrls(KUrl(), MediaWidget::extensionFilter(), this); if (urls.size() >= 2) { activateTab(PlaylistTabId); playlistTab->appendToVisiblePlaylist(urls, true); } else if (!urls.isEmpty()) { openUrl(urls.at(0)); } } void MainWindow::openUrl() { openUrl(KInputDialog::getText(i18nc("@title:window", "Open URL"), i18n("Enter a URL:"))); } void MainWindow::openUrl(const KUrl &url) { if (!url.isValid()) { return; } // we need to copy "url" because addUrl() may invalidate it KUrl copy(url); actionOpenRecent->addUrl(copy); // moves the url to the top of the list if (currentTabIndex != PlaylistTabId) { activateTab(PlayerTabId); } playlistTab->appendToVisiblePlaylist(QList() << copy, true); } void MainWindow::openAudioCd(const QString &device) { activateTab(PlayerTabId); mediaWidget->playAudioCd(device); } void MainWindow::openVideoCd(const QString &device) { activateTab(PlayerTabId); mediaWidget->playVideoCd(device); } void MainWindow::openDvd(const QString &device) { activateTab(PlayerTabId); mediaWidget->playDvd(device); } void MainWindow::playDvdFolder() { QString folder = KFileDialog::getExistingDirectory(KUrl(), this); if (!folder.isEmpty()) { openDvd(folder); } } void MainWindow::playDvb() { activateTab(DvbTabId); dvbTab->playLastChannel(); } void MainWindow::resizeToVideo(int factor) { if (!isFullScreen() && !mediaWidget->sizeHint().isEmpty()) { if (isMaximized()) { setWindowState(windowState() & ~Qt::WindowMaximized); } resize(size() - centralWidget()->size() + factor * mediaWidget->sizeHint()); } } void MainWindow::configureKeys() { KShortcutsDialog::configure(collection); } void MainWindow::configureKaffeine() { KDialog *dialog = new ConfigurationDialog(mediaWidget, this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void MainWindow::navigationBarOrientationChanged(Qt::Orientation orientation) { if (orientation == Qt::Horizontal) { tabBar->setShape(KTabBar::RoundedNorth); } else { tabBar->setShape(KTabBar::RoundedWest); } } void MainWindow::activateTab(int tabIndex) { currentTabIndex = tabIndex; tabBar->setCurrentIndex(tabIndex); if (!autoHideControlBar) { stackedLayout->setCurrentIndex(currentTabIndex); tabs.at(currentTabIndex)->activate(); } } void MainWindow::hideCursor() { setCursor(Qt::BlankCursor); } void MainWindow::closeEvent(QCloseEvent *event) { bool ok = true; emit mayCloseApplication(&ok, this); if (!ok) { event->ignore(); } else { KMainWindow::closeEvent(event); } } bool MainWindow::event(QEvent *event) { bool retVal = KMainWindow::event(event); // this has to be done before calling setVisible() // FIXME we depend on QEvent::HoverMove (instead of QEvent::MouseMove) // but the latter depends on mouse tracking being enabled on this widget // and all its children (especially the phonon video widget) ... if ((event->type() == QEvent::HoverMove) && autoHideControlBar) { int y = reinterpret_cast (event)->pos().y(); if ((y < 0) || (y >= height())) { // QHoverEvent sometimes reports quite strange coordinates - ignore them return retVal; } cursorHideTimer->stop(); unsetCursor(); switch (toolBarArea(controlBar)) { case Qt::TopToolBarArea: controlBar->setVisible(y < 60); break; case Qt::BottomToolBarArea: controlBar->setVisible(y >= (height() - 60)); break; default: break; } if (controlBar->isHidden()) { cursorHideTimer->start(); } } return retVal; } void MainWindow::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) { mediaWidget->setDisplayMode(MediaWidget::NormalMode); } KMainWindow::keyPressEvent(event); } void MainWindow::leaveEvent(QEvent *event) { if (autoHideControlBar) { controlBar->setVisible(false); } KMainWindow::leaveEvent(event); } kaffeine-1.2.2/src/dvb/0000755000175000017500000000000011552636277014272 5ustar lxuserlxuserkaffeine-1.2.2/src/dvb/dvbchannel.cpp0000644000175000017500000004272011552636277017107 0ustar lxuserlxuser/* * dvbchannel.cpp * * Copyright (C) 2007-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbchannel.h" #include #include #include #include #include "../ensurenopendingoperation.h" #include "dvbsi.h" bool DvbChannel::validate() { if (!name.isEmpty() && (number >= 1) && !source.isEmpty() && transponder.isValid() && (networkId >= -1) && (networkId <= 0xffff) && (transportStreamId >= 0) && (transportStreamId <= 0xffff) && (pmtPid >= 0) && (pmtPid <= 0x1fff) && (audioPid >= -1) && (audioPid <= 0x1fff)) { if ((serviceId >= 0) && (serviceId <= 0xffff)) { if (pmtSectionData.size() < 5) { pmtSectionData = QByteArray(5, 0); } pmtSectionData[3] = (serviceId >> 8); pmtSectionData[4] = (serviceId & 0xff); return true; } else if (pmtSectionData.size() >= 5) { serviceId = ((static_cast(pmtSectionData.at(3)) << 8) | static_cast(pmtSectionData.at(4))); return true; } } return false; } bool DvbChannelId::operator==(const DvbChannelId &other) const { if ((channel->source != other.channel->source) || (channel->transponder.getTransmissionType() != other.channel->transponder.getTransmissionType()) || (channel->networkId != other.channel->networkId)) { return false; } switch (channel->transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: case DvbTransponderBase::DvbT: return ((channel->transportStreamId == other.channel->transportStreamId) && (channel->serviceId == other.channel->serviceId)); case DvbTransponderBase::Atsc: // source id has to be unique only within a transport stream // --> we need to check transponder as well return channel->transponder.corresponds(other.channel->transponder); } return false; } uint qHash(const DvbChannelId &channel) { uint hash = (qHash(channel.channel->source) ^ qHash(channel.channel->networkId)); switch (channel.channel->transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: case DvbTransponderBase::DvbT: hash ^= (qHash(channel.channel->transportStreamId) << 8); hash ^= (qHash(channel.channel->serviceId) << 16); break; case DvbTransponderBase::Atsc: break; } return hash; } DvbChannelModel::DvbChannelModel(QObject *parent) : QObject(parent), hasPendingOperation(false), isSqlModel(false) { } DvbChannelModel::~DvbChannelModel() { if (hasPendingOperation) { kWarning() << "illegal recursive call"; } if (isSqlModel) { sqlFlush(); } } DvbChannelModel *DvbChannelModel::createSqlModel(QObject *parent) { DvbChannelModel *channelModel = new DvbChannelModel(parent); channelModel->isSqlModel = true; channelModel->sqlInit("Channels", QStringList() << "Name" << "Number" << "Source" << "Transponder" << "NetworkId" << "TransportStreamId" << "PmtPid" << "PmtSection" << "AudioPid" << "Flags"); // compatibility code QFile file(KStandardDirs::locateLocal("appdata", "channels.dtv")); if (!file.exists()) { return channelModel; } if (!file.open(QIODevice::ReadOnly)) { kWarning() << "cannot open" << file.fileName(); return channelModel; } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); while (!stream.atEnd()) { DvbChannel channel; int type; stream >> type; stream >> channel.name; stream >> channel.number; stream >> channel.source; switch (type) { case DvbTransponderBase::DvbC: channel.transponder = DvbTransponder(DvbTransponderBase::DvbC); channel.transponder.as()->readTransponder(stream); break; case DvbTransponderBase::DvbS: channel.transponder = DvbTransponder(DvbTransponderBase::DvbS); channel.transponder.as()->readTransponder(stream); break; case DvbTransponderBase::DvbS2: channel.transponder = DvbTransponder(DvbTransponderBase::DvbS2); channel.transponder.as()->readTransponder(stream); break; case DvbTransponderBase::DvbT: channel.transponder = DvbTransponder(DvbTransponderBase::DvbT); channel.transponder.as()->readTransponder(stream); break; case DvbTransponderBase::Atsc: channel.transponder = DvbTransponder(DvbTransponderBase::Atsc); channel.transponder.as()->readTransponder(stream); break; default: stream.setStatus(QDataStream::ReadCorruptData); break; } stream >> channel.networkId; stream >> channel.transportStreamId; int serviceId; stream >> serviceId; stream >> channel.pmtPid; stream >> channel.pmtSectionData; int videoPid; stream >> videoPid; stream >> channel.audioPid; int flags; stream >> flags; channel.hasVideo = (videoPid >= 0); channel.isScrambled = (flags & 0x1) != 0; if (stream.status() != QDataStream::Ok) { kWarning() << "invalid channels in file" << file.fileName(); break; } channelModel->addChannel(channel); } if (!file.remove()) { kWarning() << "cannot remove" << file.fileName(); } return channelModel; } QMap DvbChannelModel::getChannels() const { return channelNumbers; } DvbSharedChannel DvbChannelModel::findChannelByName(const QString &channelName) const { return channelNames.value(channelName); } DvbSharedChannel DvbChannelModel::findChannelByNumber(int channelNumber) const { return channelNumbers.value(channelNumber); } DvbSharedChannel DvbChannelModel::findChannelById(const DvbChannel &channel) const { return channelIds.value(DvbChannelId(&channel)); } void DvbChannelModel::cloneFrom(DvbChannelModel *other) { if (!isSqlModel && other->isSqlModel && channelNumbers.isEmpty()) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); channelNames = other->channelNames; channelNumbers = other->channelNumbers; channelIds = other->channelIds; foreach (const DvbSharedChannel &channel, channelNumbers) { emit channelAdded(channel); } } else if (isSqlModel && !other->isSqlModel) { QMultiMap otherChannelKeys; foreach (const DvbSharedChannel &channel, other->getChannels()) { otherChannelKeys.insert(*channel, channel); } for (QMap::ConstIterator it = channels.constBegin(); it != channels.constEnd();) { const DvbSharedChannel &channel = *it; ++it; DvbSharedChannel otherChannel = otherChannelKeys.take(*channel); if (otherChannel.isValid()) { if (otherChannel != channel) { DvbChannel modifiedChannel(*otherChannel); updateChannel(channel, modifiedChannel); } } else { removeChannel(channel); } } foreach (const DvbSharedChannel &channel, otherChannelKeys) { DvbChannel newChannel(*channel); addChannel(newChannel); } } else { kWarning() << "illegal type of clone"; } } void DvbChannelModel::addChannel(DvbChannel &channel) { bool forceAdd; if (channel.number < 1) { channel.number = 1; forceAdd = false; } else { forceAdd = true; } if (!channel.validate()) { kWarning() << "invalid channel"; return; } if (forceAdd) { DvbSharedChannel existingChannel = channelNames.value(channel.name); if (existingChannel.isValid()) { DvbChannel updatedChannel = *existingChannel; updatedChannel.name = findNextFreeChannelName(updatedChannel.name); updateChannel(existingChannel, updatedChannel); } existingChannel = channelNumbers.value(channel.number); if (existingChannel.isValid()) { DvbChannel updatedChannel = *existingChannel; updatedChannel.number = findNextFreeChannelNumber(updatedChannel.number); updateChannel(existingChannel, updatedChannel); } } else { DvbSharedChannel existingChannel = channelIds.value(DvbChannelId(&channel)); if (existingChannel.isValid()) { if (channel.name == extractBaseName(existingChannel->name)) { channel.name = existingChannel->name; } else { channel.name = findNextFreeChannelName(channel.name); } channel.number = existingChannel->number; DvbPmtParser pmtParser(DvbPmtSection(channel.pmtSectionData)); for (int i = 0; i < pmtParser.audioPids.size(); ++i) { if (pmtParser.audioPids.at(i).first == existingChannel->audioPid) { channel.audioPid = existingChannel->audioPid; break; } } updateChannel(existingChannel, channel); return; } channel.name = findNextFreeChannelName(channel.name); channel.number = findNextFreeChannelNumber(channel.number); } if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (isSqlModel) { channel.setSqlKey(sqlFindFreeKey(channels)); } else { channel.setSqlKey(SqlKey()); } DvbSharedChannel newChannel(new DvbChannel(channel)); channelNames.insert(newChannel->name, newChannel); channelNumbers.insert(newChannel->number, newChannel); channelIds.insert(DvbChannelId(newChannel), newChannel); if (isSqlModel) { channels.insert(*newChannel, newChannel); sqlInsert(*newChannel); } emit channelAdded(newChannel); } void DvbChannelModel::updateChannel(DvbSharedChannel channel, DvbChannel &modifiedChannel) { if (!channel.isValid() || (channelNumbers.value(channel->number) != channel) || !modifiedChannel.validate()) { kWarning() << "invalid channel"; return; } if (channel->name != modifiedChannel.name) { DvbSharedChannel existingChannel = channelNames.value(modifiedChannel.name); if (existingChannel.isValid()) { DvbChannel updatedChannel = *existingChannel; updatedChannel.name = findNextFreeChannelName(updatedChannel.name); updateChannel(existingChannel, updatedChannel); } } if (channel->number != modifiedChannel.number) { DvbSharedChannel existingChannel = channelNumbers.value(modifiedChannel.number); if (existingChannel.isValid()) { DvbChannel updatedChannel = *existingChannel; updatedChannel.number = findNextFreeChannelNumber(updatedChannel.number); updateChannel(existingChannel, updatedChannel); } } if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); modifiedChannel.setSqlKey(*channel); bool channelNameChanged = (channel->name != modifiedChannel.name); bool channelNumberChanged = (channel->number != modifiedChannel.number); bool channelIdChanged = (DvbChannelId(channel) != DvbChannelId(&modifiedChannel)); emit channelAboutToBeUpdated(channel); if (channelNameChanged) { channelNames.remove(channel->name); } if (channelNumberChanged) { channelNumbers.remove(channel->number); } if (channelIdChanged) { channelIds.remove(DvbChannelId(channel), channel); } if (!isSqlModel && channel->isSqlKeyValid()) { DvbSharedChannel detachedChannel(new DvbChannel(modifiedChannel)); channelNames.insert(detachedChannel->name, detachedChannel); channelNumbers.insert(detachedChannel->number, detachedChannel); channelIds.insert(DvbChannelId(detachedChannel), detachedChannel); emit channelUpdated(detachedChannel); } else { *const_cast(channel.constData()) = modifiedChannel; if (channelNameChanged) { channelNames.insert(channel->name, channel); } if (channelNumberChanged) { channelNumbers.insert(channel->number, channel); } if (channelIdChanged) { channelIds.insert(DvbChannelId(channel), channel); } if (isSqlModel) { sqlUpdate(*channel); } emit channelUpdated(channel); } } void DvbChannelModel::removeChannel(DvbSharedChannel channel) { if (!channel.isValid() || (channelNumbers.value(channel->number) != channel)) { kWarning() << "invalid channel"; return; } if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); channelNames.remove(channel->name); channelNumbers.remove(channel->number); channelIds.remove(DvbChannelId(channel), channel); if (isSqlModel) { channels.remove(*channel); sqlRemove(*channel); } emit channelRemoved(channel); } void DvbChannelModel::dndMoveChannels(const QList &selectedChannels, int insertBeforeNumber) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); typedef QMap::ConstIterator ConstIterator; QList channelQueue; foreach (const DvbSharedChannel &channel, selectedChannels) { if (channel.isValid()) { ConstIterator it = channelNumbers.constFind(channel->number); if ((it != channelNumbers.constEnd()) && (*it == channel)) { channelNumbers.remove(channel->number); channelQueue.append(channel); } } } ConstIterator it = channelNumbers.constFind(insertBeforeNumber); int currentNumber = 1; if (it != channelNumbers.constBegin()) { currentNumber = ((it - 1).key() + 1); } while (!channelQueue.isEmpty()) { DvbSharedChannel channel = channelQueue.takeFirst(); if (channel->number != currentNumber) { emit channelAboutToBeUpdated(channel); DvbSharedChannel existingChannel = channelNumbers.take(currentNumber); if (existingChannel.isValid()) { channelQueue.append(existingChannel); } if (!isSqlModel && channel->isSqlKeyValid()) { DvbChannel *newChannel = new DvbChannel(*channel); newChannel->number = currentNumber; DvbSharedChannel detachedChannel(newChannel); channelNames.insert(detachedChannel->name, detachedChannel); channelNumbers.insert(detachedChannel->number, detachedChannel); channelIds.insert(DvbChannelId(detachedChannel), detachedChannel); emit channelUpdated(detachedChannel); } else { const_cast(channel.constData())->number = currentNumber; channelNumbers.insert(channel->number, channel); if (isSqlModel) { sqlUpdate(*channel); } emit channelUpdated(channel); } } else { channelNumbers.insert(channel->number, channel); } ++currentNumber; } } void DvbChannelModel::bindToSqlQuery(SqlKey sqlKey, QSqlQuery &query, int index) const { DvbSharedChannel channel = channels.value(sqlKey); if (!channel.isValid()) { kWarning() << "invalid channel"; return; } query.bindValue(index++, channel->name); query.bindValue(index++, channel->number); query.bindValue(index++, channel->source); query.bindValue(index++, channel->transponder.toString()); query.bindValue(index++, channel->networkId); query.bindValue(index++, channel->transportStreamId); query.bindValue(index++, channel->pmtPid); query.bindValue(index++, channel->pmtSectionData); query.bindValue(index++, channel->audioPid); query.bindValue(index++, (channel->hasVideo ? 0x01 : 0) | (channel->isScrambled ? 0x02 : 0)); } bool DvbChannelModel::insertFromSqlQuery(SqlKey sqlKey, const QSqlQuery &query, int index) { DvbChannel *channel = new DvbChannel(); DvbSharedChannel sharedChannel(channel); channel->setSqlKey(sqlKey); channel->name = query.value(index++).toString(); channel->number = query.value(index++).toInt(); channel->source = query.value(index++).toString(); channel->transponder = DvbTransponder::fromString(query.value(index++).toString()); channel->networkId = query.value(index++).toInt(); channel->transportStreamId = query.value(index++).toInt(); channel->pmtPid = query.value(index++).toInt(); channel->pmtSectionData = query.value(index++).toByteArray(); channel->audioPid = query.value(index++).toInt(); int flags = query.value(index++).toInt(); channel->hasVideo = ((flags & 0x01) != 0); channel->isScrambled = ((flags & 0x02) != 0); if (channel->validate() && !channelNames.contains(channel->name) && !channelNumbers.contains(channel->number)) { channelNames.insert(sharedChannel->name, sharedChannel); channelNumbers.insert(sharedChannel->number, sharedChannel); channelIds.insert(DvbChannelId(sharedChannel), sharedChannel); channels.insert(*sharedChannel, sharedChannel); return true; } return false; } QString DvbChannelModel::extractBaseName(const QString &name) const { QString baseName = name; int position = baseName.lastIndexOf('-'); if (position > 0) { QString suffix = baseName.mid(position + 1); if (suffix == QString::number(suffix.toInt())) { baseName.truncate(position); } } return baseName; } QString DvbChannelModel::findNextFreeChannelName(const QString &name) const { if (!channelNames.contains(name)) { return name; } QString baseName = extractBaseName(name); int suffix = 0; QString newName = baseName; while (channelNames.contains(newName)) { ++suffix; newName = baseName + '-' + QString::number(suffix); } return newName; } int DvbChannelModel::findNextFreeChannelNumber(int number) const { while (channelNumbers.contains(number)) { ++number; } return number; } kaffeine-1.2.2/src/dvb/dvbchanneldialog_p.h0000644000175000017500000000304611552636277020251 0ustar lxuserlxuser/* * dvbchanneldialog_p.h * * Copyright (C) 2007-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCHANNELDIALOG_P_H #define DVBCHANNELDIALOG_P_H #include #include "dvbchannel.h" class QCheckBox; class QSpinBox; class KComboBox; class KLineEdit; class DvbChannelTableModel; Q_DECLARE_METATYPE(QList) class DvbChannelEditor : public KDialog { public: DvbChannelEditor(DvbChannelTableModel *model_, const DvbSharedChannel &channel_, QWidget *parent); ~DvbChannelEditor(); private: void accept(); DvbChannelTableModel *model; DvbSharedChannel channel; KLineEdit *nameEdit; QSpinBox *numberBox; QSpinBox *networkIdBox; QSpinBox *transportStreamIdBox; QSpinBox *serviceIdBox; KComboBox *audioChannelBox; QList audioPids; QCheckBox *scrambledBox; }; #endif /* DVBCHANNELDIALOG_P_H */ kaffeine-1.2.2/src/dvb/dvbconfig.h0000644000175000017500000000416711552636277016414 0ustar lxuserlxuser/* * dvbconfig.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCONFIG_H #define DVBCONFIG_H #include #include class DvbConfigBase : public QSharedData { public: enum TransmissionType { DvbC = 0, DvbS = 1, DvbT = 2, Atsc = 3, TransmissionTypeMax = Atsc }; DvbConfigBase(TransmissionType transmissionType_) : transmissionType(transmissionType_) { } ~DvbConfigBase() { } TransmissionType getTransmissionType() const { return transmissionType; } QString name; QString scanSource; int timeout; // tuning timeout (ms) // only used for DVB-S enum Configuration { DiseqcSwitch = 0, UsalsRotor = 1, PositionsRotor = 2, ConfigurationMax = PositionsRotor }; Configuration configuration; int lnbNumber; // corresponds to diseqc switch position (0 = first sat etc) // or to rotor position (0 = first position etc) int lowBandFrequency; // kHz (C-band multipoint: horizontal) int switchFrequency; // kHz (0 == only low band or C-band multipoint) int highBandFrequency; // kHz (C-band multipoint: vertical) private: TransmissionType transmissionType; }; class DvbConfig : public QSharedDataPointer { public: explicit DvbConfig(DvbConfigBase *config = NULL) : QSharedDataPointer(config) { } ~DvbConfig() { } }; Q_DECLARE_TYPEINFO(DvbConfig, Q_MOVABLE_TYPE); #endif /* DVBCONFIG_H */ kaffeine-1.2.2/src/dvb/dvbmanager.h0000644000175000017500000001145511552636277016557 0ustar lxuserlxuser/* * dvbmanager.h * * Copyright (C) 2008-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBMANAGER_H #define DVBMANAGER_H #include #include #include #include #include "dvbtransponder.h" class QTreeView; class DvbBackendDevice; class DvbChannelModel; class DvbConfig; class DvbDevice; class DvbDeviceConfig; class DvbDeviceConfigUpdate; class DvbEpgModel; class DvbLiveView; class DvbRecordingModel; class DvbScanData; class MediaWidget; class DvbManager : public QObject { Q_OBJECT public: enum RequestType { Shared, Exclusive, // you can freely tune() and stop(), because the device isn't shared Prioritized // takes precedence over 'Shared' and 'Exclusive' }; enum TransmissionType { DvbC, DvbS, DvbS2, // includes DvbS DvbT, Atsc }; DvbManager(MediaWidget *mediaWidget_, QWidget *parent_); ~DvbManager(); QWidget *getParentWidget() const { return parent; } MediaWidget *getMediaWidget() const { return mediaWidget; } QStringList getSources() const { return sources; } DvbChannelModel *getChannelModel() const { return channelModel; } QTreeView *getChannelView() const { return channelView; } DvbEpgModel *getEpgModel() const { return epgModel; } DvbLiveView *getLiveView() const { return liveView; } DvbRecordingModel *getRecordingModel() const { return recordingModel; } void setChannelView(QTreeView *channelView_) { channelView = channelView_; } DvbDevice *requestDevice(const QString &source, const DvbTransponder &transponder, RequestType requestType); DvbDevice *requestExclusiveDevice(const QString &source); void releaseDevice(DvbDevice *device, RequestType requestType); QList getDeviceConfigs() const; void updateDeviceConfigs(const QList &configUpdates); QDate getScanDataDate(); QStringList getScanSources(TransmissionType type); QString getAutoScanSource(const QString &source) const; QList getTransponders(DvbDevice *device, const QString &source); bool updateScanData(const QByteArray &data); QString getRecordingFolder() const; QString getTimeShiftFolder() const; int getBeginMargin() const; // seconds int getEndMargin() const; // seconds bool override6937Charset() const; void setRecordingFolder(const QString &path); void setTimeShiftFolder(const QString &path); void setBeginMargin(int beginMargin); // seconds void setEndMargin(int endMargin); // seconds void setOverride6937Charset(bool override); static double getLatitude(); static double getLongitude(); void setLatitude(double value); void setLongitude(double value); void enableDvbDump(); private slots: void requestBuiltinDeviceManager(QObject *&builtinDeviceManager); void deviceAdded(DvbBackendDevice *backendDevice); void deviceRemoved(DvbBackendDevice *backendDevice); private: void loadDeviceManager(); void readDeviceConfigs(); void writeDeviceConfigs(); void updateSourceMapping(); void readScanData(); bool readScanSources(DvbScanData &data, const char *tag, TransmissionType type); QWidget *parent; MediaWidget *mediaWidget; DvbChannelModel *channelModel; QTreeView *channelView; DvbEpgModel *epgModel; DvbLiveView *liveView; DvbRecordingModel *recordingModel; QList deviceConfigs; bool dvbDumpEnabled; QMap > sourceMapping; QStringList sources; QDate scanDataDate; QMap scanSources; QMap, QList > scanData; }; class DvbDeviceConfig { public: DvbDeviceConfig(const QString &deviceId_, const QString &frontendName_, DvbDevice *device_); ~DvbDeviceConfig(); QString deviceId; QString frontendName; DvbDevice *device; QList configs; int useCount; // -1 means exclusive use int prioritizedUseCount; QString source; DvbTransponder transponder; }; class DvbDeviceConfigUpdate { public: explicit DvbDeviceConfigUpdate(const DvbDeviceConfig *deviceConfig_); ~DvbDeviceConfigUpdate(); const DvbDeviceConfig *deviceConfig; QList configs; }; #endif /* DVBMANAGER_H */ kaffeine-1.2.2/src/dvb/dvbrecordingdialog.h0000644000175000017500000000256311552636277020301 0ustar lxuserlxuser/* * dvbrecordingdialog.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBRECORDINGDIALOG_H #define DVBRECORDINGDIALOG_H #include class QTreeView; class DvbManager; class DvbRecordingTableModel; class DvbRecordingDialog : public KDialog { Q_OBJECT public: DvbRecordingDialog(DvbManager *manager_, QWidget *parent); ~DvbRecordingDialog(); static void showDialog(DvbManager *manager_, QWidget *parent); private slots: void newRecording(); void editRecording(); void removeRecording(); private: DvbManager *manager; DvbRecordingTableModel *model; QTreeView *treeView; }; #endif /* DVBRECORDINGDIALOG_H */ kaffeine-1.2.2/src/dvb/dvbliveview.h0000644000175000017500000000377111552636277017001 0ustar lxuserlxuser/* * dvbliveview.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBLIVEVIEW_H #define DVBLIVEVIEW_H #include #include "dvbchannel.h" class DvbDevice; class DvbLiveViewInternal; class DvbManager; class MediaWidget; class OsdWidget; class DvbLiveView : public QObject { Q_OBJECT public: DvbLiveView(DvbManager *manager_, QObject *parent); ~DvbLiveView(); const DvbSharedChannel &getChannel() const; DvbDevice *getDevice() const; void playChannel(const DvbSharedChannel &channel_); public slots: void toggleOsd(); private slots: void pmtSectionChanged(const QByteArray &pmtSectionData); void insertPatPmt(); void deviceStateChanged(); void changeAudioStream(int index); void changeSubtitle(int index); void prepareTimeShift(); void startTimeShift(); void showOsd(); void osdTimeout(); void liveStopped(); private: void startDevice(); void stopDevice(); void updatePids(bool forcePatPmtUpdate = false); DvbManager *manager; MediaWidget *mediaWidget; OsdWidget *osdWidget; DvbLiveViewInternal *internal; DvbSharedChannel channel; DvbDevice *device; QList pids; QTimer patPmtTimer; QTimer osdTimer; int videoPid; int audioPid; int subtitlePid; QList audioPids; QList subtitlePids; }; #endif /* DVBLIVEVIEW_H */ kaffeine-1.2.2/src/dvb/dvbscan.h0000644000175000017500000000637711552636277016100 0ustar lxuserlxuser/* * dvbscan.h * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBSCAN_H #define DVBSCAN_H #include "dvbchannel.h" class AtscVctSection; class DvbDescriptor; class DvbDevice; class DvbNitSection; class DvbPatEntry; class DvbPatSection; class DvbPmtSection; class DvbScanFilter; class DvbSdtEntry; class DvbSdtSection; class DvbPreviewChannel : public DvbChannel { public: DvbPreviewChannel() : snr(-1) { } ~DvbPreviewChannel() { } /* * assigned when reading PMT */ // QString source; // DvbTransponder transponder; // int transportStreamId; // int pmtPid; // QByteArray pmtSectionData; // int serviceId; // int audioPid; // may be -1 (not present) // bool hasVideo; int snr; // percent /* * assigned when reading SDT */ // QString name; // int networkId; // may be -1 (not present); ATSC meaning: source id // bool isScrambled; QString provider; /* * assigned when adding channel to the main list */ // int number; }; class DvbScan : public QObject { friend class DvbScanFilter; Q_OBJECT public: DvbScan(DvbDevice *device_, const QString &source_, const DvbTransponder &transponder_); DvbScan(DvbDevice *device_, const QString &source_, const QList &transponders_); DvbScan(DvbDevice *device_, const QString &source_, const QString &autoScanSource); ~DvbScan(); void start(); signals: void foundChannels(const QList &channels); void scanProgress(int percentage); void scanFinished(); private slots: void deviceStateChanged(); private: enum FilterType { PatFilter, PmtFilter, SdtFilter, VctFilter, NitFilter }; enum State { ScanPat, ScanNit, ScanSdt, ScanPmt, ScanTune, ScanTuning }; bool startFilter(int pid, FilterType type); void updateState(); void processPat(const DvbPatSection §ion); void processPmt(const DvbPmtSection §ion, int pid); void processSdt(const DvbSdtSection §ion); void processVct(const AtscVctSection §ion); void processNit(const DvbNitSection §ion); void processNitDescriptor(const DvbDescriptor &descriptor); void filterFinished(DvbScanFilter *filter); DvbDevice *device; QString source; DvbTransponder transponder; bool isLive; bool isAuto; // only used if isLive is false QList transponders; int transponderIndex; State state; QList patEntries; int patIndex; QList sdtEntries; QList channels; int snr; int transportStreamId; QList filters; int activeFilters; }; #endif /* DVBSCAN_H */ kaffeine-1.2.2/src/dvb/dvbepgdialog.h0000644000175000017500000000307711552636277017101 0ustar lxuserlxuser/* * dvbepgdialog.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBEPGDIALOG_H #define DVBEPGDIALOG_H #include #include "dvbchannel.h" class QLabel; class QModelIndex; class QTreeView; class DvbEpgChannelTableModel; class DvbEpgTableModel; class DvbManager; class DvbEpgDialog : public KDialog { Q_OBJECT public: DvbEpgDialog(DvbManager *manager_, QWidget *parent); ~DvbEpgDialog(); void setCurrentChannel(const DvbSharedChannel &channel); private slots: void channelActivated(const QModelIndex &index); void entryActivated(const QModelIndex &index); void checkEntry(); void scheduleProgram(); private: DvbManager *manager; DvbEpgChannelTableModel *epgChannelTableModel; DvbEpgTableModel *epgTableModel; QTreeView *channelView; QTreeView *epgView; QLabel *contentLabel; }; #endif /* DVBEPGDIALOG_H */ kaffeine-1.2.2/src/dvb/dvbepgdialog.cpp0000644000175000017500000002750711552636277017440 0ustar lxuserlxuser/* * dvbepgdialog.cpp * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbepgdialog.h" #include "dvbepgdialog_p.h" #include #include #include #include #include #include #include #include #include #include #include "dvbmanager.h" DvbEpgDialog::DvbEpgDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_) { setButtons(KDialog::Close); setCaption(i18nc("@title:window", "Program Guide")); QWidget *widget = new QWidget(this); QBoxLayout *mainLayout = new QHBoxLayout(widget); epgChannelTableModel = new DvbEpgChannelTableModel(this); epgChannelTableModel->setManager(manager); channelView = new QTreeView(widget); channelView->setMaximumWidth(30 * fontMetrics().averageCharWidth()); channelView->setModel(epgChannelTableModel); channelView->setRootIsDecorated(false); channelView->setUniformRowHeights(true); connect(channelView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(channelActivated(QModelIndex))); mainLayout->addWidget(channelView); QBoxLayout *rightLayout = new QVBoxLayout(); QBoxLayout *boxLayout = new QHBoxLayout(); KAction *scheduleAction = new KAction(KIcon("media-record"), i18nc("@action:inmenu tv show", "Record Show"), this); connect(scheduleAction, SIGNAL(triggered()), this, SLOT(scheduleProgram())); QPushButton *pushButton = new QPushButton(scheduleAction->icon(), scheduleAction->text(), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(scheduleProgram())); boxLayout->addWidget(pushButton); boxLayout->addWidget(new QLabel(i18nc("@label:textbox", "Search:"), widget)); epgTableModel = new DvbEpgTableModel(this); epgTableModel->setEpgModel(manager->getEpgModel()); connect(epgTableModel, SIGNAL(layoutChanged()), this, SLOT(checkEntry())); KLineEdit *lineEdit = new KLineEdit(widget); lineEdit->setClearButtonShown(true); connect(lineEdit, SIGNAL(textChanged(QString)), epgTableModel, SLOT(setContentFilter(QString))); boxLayout->addWidget(lineEdit); rightLayout->addLayout(boxLayout); epgView = new QTreeView(widget); epgView->addAction(scheduleAction); epgView->header()->setResizeMode(QHeaderView::ResizeToContents); epgView->setContextMenuPolicy(Qt::ActionsContextMenu); epgView->setMinimumWidth(75 * fontMetrics().averageCharWidth()); epgView->setModel(epgTableModel); epgView->setRootIsDecorated(false); epgView->setUniformRowHeights(true); connect(epgView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(entryActivated(QModelIndex))); rightLayout->addWidget(epgView); contentLabel = new QLabel(widget); contentLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop); contentLabel->setMargin(5); contentLabel->setWordWrap(true); QScrollArea *scrollArea = new QScrollArea(widget); scrollArea->setBackgroundRole(QPalette::Light); scrollArea->setMinimumHeight(12 * fontMetrics().height()); scrollArea->setWidget(contentLabel); scrollArea->setWidgetResizable(true); rightLayout->addWidget(scrollArea); mainLayout->addLayout(rightLayout); setMainWidget(widget); } DvbEpgDialog::~DvbEpgDialog() { } void DvbEpgDialog::setCurrentChannel(const DvbSharedChannel &channel) { channelView->setCurrentIndex(epgChannelTableModel->find(channel)); } void DvbEpgDialog::channelActivated(const QModelIndex &index) { if (!index.isValid()) { epgTableModel->setChannelFilter(DvbSharedChannel()); return; } epgTableModel->setChannelFilter(epgChannelTableModel->value(index)); epgView->setCurrentIndex(epgTableModel->index(0, 0)); } void DvbEpgDialog::entryActivated(const QModelIndex &index) { const DvbSharedEpgEntry &entry = epgTableModel->value(index.row()); if (!entry.isValid()) { contentLabel->setText(QString()); return; } QString text = i18nc("@info tv show title", "%1
", entry->title); if (!entry->subheading.isEmpty()) { text += i18nc("@info tv show subheading", "%1
", entry->subheading); } QDateTime begin = entry->begin.toLocalTime(); QTime end = entry->begin.addSecs(QTime().secsTo(entry->duration)).toLocalTime().time(); text += i18nc("@info tv show start, end", "%1 - %2

", KGlobal::locale()->formatDateTime(begin, KLocale::LongDate), KGlobal::locale()->formatTime(end)); text += entry->details; contentLabel->setText(text); } void DvbEpgDialog::checkEntry() { if (!epgView->currentIndex().isValid()) { // FIXME workaround --> file bug contentLabel->setText(QString()); } } void DvbEpgDialog::scheduleProgram() { const DvbSharedEpgEntry &entry = epgTableModel->value(epgView->currentIndex()); if (entry.isValid()) { manager->getEpgModel()->scheduleProgram(entry, manager->getBeginMargin(), manager->getEndMargin()); } } bool DvbEpgEntryLessThan::operator()(const DvbSharedEpgEntry &x, const DvbSharedEpgEntry &y) const { if (x->channel != y->channel) { return (x->channel->name.localeAwareCompare(y->channel->name) < 0); } if (x->begin != y->begin) { return (x->begin < y->begin); } if (x->duration != y->duration) { return (x->duration < y->duration); } if (x->title != y->title) { return (x->title < y->title); } if (x->subheading != y->subheading) { return (x->subheading < y->subheading); } if (x->details < y->details) { return (x->details < y->details); } return (x < y); } DvbEpgChannelTableModel::DvbEpgChannelTableModel(QObject *parent) : TableModel(parent) { } DvbEpgChannelTableModel::~DvbEpgChannelTableModel() { } void DvbEpgChannelTableModel::setManager(DvbManager *manager) { DvbEpgModel *epgModel = manager->getEpgModel(); connect(epgModel, SIGNAL(epgChannelAdded(DvbSharedChannel)), this, SLOT(epgChannelAdded(DvbSharedChannel))); connect(epgModel, SIGNAL(epgChannelRemoved(DvbSharedChannel)), this, SLOT(epgChannelRemoved(DvbSharedChannel))); // theoretically we should monitor the channel model for updated channels, // but it's very unlikely that this has practical relevance QHeaderView *headerView = manager->getChannelView()->header(); DvbChannelLessThan::SortOrder sortOrder; if (headerView->sortIndicatorOrder() == Qt::AscendingOrder) { if (headerView->sortIndicatorSection() == 0) { sortOrder = DvbChannelLessThan::ChannelNameAscending; } else { sortOrder = DvbChannelLessThan::ChannelNumberAscending; } } else { if (headerView->sortIndicatorSection() == 0) { sortOrder = DvbChannelLessThan::ChannelNameDescending; } else { sortOrder = DvbChannelLessThan::ChannelNumberDescending; } } internalSort(sortOrder); resetFromKeys(epgModel->getEpgChannels()); } QVariant DvbEpgChannelTableModel::data(const QModelIndex &index, int role) const { const DvbSharedChannel &channel = value(index); if (channel.isValid() && (role == Qt::DisplayRole) && (index.column() == 0)) { return channel->name; } return QVariant(); } QVariant DvbEpgChannelTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if ((section == 0) && (orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { return i18nc("@title:column tv show", "Channel"); } return QVariant(); } void DvbEpgChannelTableModel::epgChannelAdded(const DvbSharedChannel &channel) { insert(channel); } void DvbEpgChannelTableModel::epgChannelRemoved(const DvbSharedChannel &channel) { remove(channel); } bool DvbEpgTableModelHelper::filterAcceptsItem(const DvbSharedEpgEntry &entry) const { switch (filterType) { case ChannelFilter: return (entry->channel == channelFilter); case ContentFilter: return ((contentFilter.indexIn(entry->title) >= 0) || (contentFilter.indexIn(entry->subheading) >= 0) || (contentFilter.indexIn(entry->details) >= 0)); } return false; } DvbEpgTableModel::DvbEpgTableModel(QObject *parent) : TableModel(parent), epgModel(NULL), contentFilterEventPending(false) { helper.contentFilter.setCaseSensitivity(Qt::CaseInsensitive); } DvbEpgTableModel::~DvbEpgTableModel() { } void DvbEpgTableModel::setEpgModel(DvbEpgModel *epgModel_) { if (epgModel != NULL) { kWarning() << "epg model already set"; return; } epgModel = epgModel_; connect(epgModel, SIGNAL(entryAdded(DvbSharedEpgEntry)), this, SLOT(entryAdded(DvbSharedEpgEntry))); connect(epgModel, SIGNAL(entryAboutToBeUpdated(DvbSharedEpgEntry)), this, SLOT(entryAboutToBeUpdated(DvbSharedEpgEntry))); connect(epgModel, SIGNAL(entryUpdated(DvbSharedEpgEntry)), this, SLOT(entryUpdated(DvbSharedEpgEntry))); connect(epgModel, SIGNAL(entryRemoved(DvbSharedEpgEntry)), this, SLOT(entryRemoved(DvbSharedEpgEntry))); } void DvbEpgTableModel::setChannelFilter(const DvbSharedChannel &channel) { helper.channelFilter = channel; helper.contentFilter.setPattern(QString()); helper.filterType = DvbEpgTableModelHelper::ChannelFilter; reset(epgModel->getEntries()); } QVariant DvbEpgTableModel::data(const QModelIndex &index, int role) const { const DvbSharedEpgEntry &entry = value(index); if (entry.isValid()) { switch (role) { case Qt::DecorationRole: if ((index.column() == 2) && entry->recording.isValid()) { return KIcon("media-record"); } break; case Qt::DisplayRole: switch (index.column()) { case 0: return KGlobal::locale()->formatDateTime( entry->begin.toLocalTime()); case 1: return KGlobal::locale()->formatTime(entry->duration, false, true); case 2: return entry->title; case 3: return entry->channel->name; } break; } } return QVariant(); } QVariant DvbEpgTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if ((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { switch (section) { case 0: return i18nc("@title:column tv show", "Start"); case 1: return i18nc("@title:column tv show", "Duration"); case 2: return i18nc("@title:column tv show", "Title"); case 3: return i18nc("@title:column tv show", "Channel"); } } return QVariant(); } void DvbEpgTableModel::setContentFilter(const QString &pattern) { helper.channelFilter = DvbSharedChannel(); helper.contentFilter.setPattern(pattern); if (!pattern.isEmpty()) { helper.filterType = DvbEpgTableModelHelper::ContentFilter; if (!contentFilterEventPending) { contentFilterEventPending = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User), Qt::LowEventPriority); } } else { // use channel filter so that content won't be unnecessarily filtered helper.filterType = DvbEpgTableModelHelper::ChannelFilter; reset(QMap()); } } void DvbEpgTableModel::entryAdded(const DvbSharedEpgEntry &entry) { insert(entry); } void DvbEpgTableModel::entryAboutToBeUpdated(const DvbSharedEpgEntry &entry) { aboutToUpdate(entry); } void DvbEpgTableModel::entryUpdated(const DvbSharedEpgEntry &entry) { update(entry); } void DvbEpgTableModel::entryRemoved(const DvbSharedEpgEntry &entry) { remove(entry); } void DvbEpgTableModel::customEvent(QEvent *event) { Q_UNUSED(event) contentFilterEventPending = false; if (helper.filterType == DvbEpgTableModelHelper::ContentFilter) { reset(epgModel->getEntries()); } } kaffeine-1.2.2/src/dvb/dvbtransponder.cpp0000644000175000017500000003540611552636277020041 0ustar lxuserlxuser/* * dvbtransponder.cpp * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbtransponder.h" #include #include static const char *enumToLinuxtv(DvbTransponderBase::FecRate fecRate) { switch (fecRate) { case DvbTransponderBase::FecNone: return "NONE"; case DvbTransponderBase::Fec1_2: return "1/2"; case DvbTransponderBase::Fec1_3: return "1/3"; case DvbTransponderBase::Fec1_4: return "1/4"; case DvbTransponderBase::Fec2_3: return "2/3"; case DvbTransponderBase::Fec2_5: return "2/5"; case DvbTransponderBase::Fec3_4: return "3/4"; case DvbTransponderBase::Fec3_5: return "3/5"; case DvbTransponderBase::Fec4_5: return "4/5"; case DvbTransponderBase::Fec5_6: return "5/6"; case DvbTransponderBase::Fec6_7: return "6/7"; case DvbTransponderBase::Fec7_8: return "7/8"; case DvbTransponderBase::Fec8_9: return "8/9"; case DvbTransponderBase::Fec9_10: return "9/10"; case DvbTransponderBase::FecAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbCTransponder::Modulation modulation) { switch (modulation) { case DvbCTransponder::Qam16: return "QAM16"; case DvbCTransponder::Qam32: return "QAM32"; case DvbCTransponder::Qam64: return "QAM64"; case DvbCTransponder::Qam128: return "QAM128"; case DvbCTransponder::Qam256: return "QAM256"; case DvbCTransponder::ModulationAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbSTransponder::Polarization polarization) { switch (polarization) { case DvbSTransponder::Horizontal: return "H"; case DvbSTransponder::Vertical: return "V"; case DvbSTransponder::CircularLeft: return "L"; case DvbSTransponder::CircularRight: return "R"; } return NULL; } static const char *enumToLinuxtv(DvbS2Transponder::Modulation modulation) { switch (modulation) { case DvbS2Transponder::Qpsk: return "QPSK"; case DvbS2Transponder::Psk8: return "8PSK"; case DvbS2Transponder::Apsk16: return "16APSK"; case DvbS2Transponder::Apsk32: return "32APSK"; case DvbS2Transponder::ModulationAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbS2Transponder::RollOff rollOff) { switch (rollOff) { case DvbS2Transponder::RollOff20: return "20"; case DvbS2Transponder::RollOff25: return "25"; case DvbS2Transponder::RollOff35: return "35"; case DvbS2Transponder::RollOffAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbTTransponder::Bandwidth bandwidth) { switch (bandwidth) { case DvbTTransponder::Bandwidth6MHz: return "6MHz"; case DvbTTransponder::Bandwidth7MHz: return "7MHz"; case DvbTTransponder::Bandwidth8MHz: return "8MHz"; case DvbTTransponder::BandwidthAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbTTransponder::Modulation modulation) { switch (modulation) { case DvbTTransponder::Qpsk: return "QPSK"; case DvbTTransponder::Qam16: return "QAM16"; case DvbTTransponder::Qam64: return "QAM64"; case DvbTTransponder::ModulationAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbTTransponder::TransmissionMode transmissionMode) { switch (transmissionMode) { case DvbTTransponder::TransmissionMode2k: return "2k"; case DvbTTransponder::TransmissionMode4k: return "4k"; case DvbTTransponder::TransmissionMode8k: return "8k"; case DvbTTransponder::TransmissionModeAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbTTransponder::GuardInterval guardInterval) { switch (guardInterval) { case DvbTTransponder::GuardInterval1_4: return "1/4"; case DvbTTransponder::GuardInterval1_8: return "1/8"; case DvbTTransponder::GuardInterval1_16: return "1/16"; case DvbTTransponder::GuardInterval1_32: return "1/32"; case DvbTTransponder::GuardIntervalAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(DvbTTransponder::Hierarchy hierarchy) { switch (hierarchy) { case DvbTTransponder::HierarchyNone: return "NONE"; case DvbTTransponder::Hierarchy1: return "1"; case DvbTTransponder::Hierarchy2: return "2"; case DvbTTransponder::Hierarchy4: return "4"; case DvbTTransponder::HierarchyAuto: return "AUTO"; } return NULL; } static const char *enumToLinuxtv(AtscTransponder::Modulation modulation) { switch (modulation) { case AtscTransponder::Qam64: return "QAM64"; case AtscTransponder::Qam256: return "QAM256"; case AtscTransponder::Vsb8: return "8VSB"; case AtscTransponder::Vsb16: return "16VSB"; case AtscTransponder::ModulationAuto: return "AUTO"; } return NULL; } template static T readEnum(QDataStream &stream) { int intValue; stream >> intValue; T value = static_cast(intValue); if ((value != intValue) || (enumToLinuxtv(value) == NULL)) { stream.setStatus(QDataStream::ReadCorruptData); } return value; } class DvbChannelStringReader { public: explicit DvbChannelStringReader(const QString &string_) : string(string_) { stream.setString(&string); stream.setIntegerBase(10); } ~DvbChannelStringReader() { } bool isValid() const { return (stream.status() == QTextStream::Ok); } void readInt(int &value) { stream >> value; } template T readEnum() { QString string; stream >> string; for (int i = 0;; ++i) { T value = static_cast(i); if (value != i) { break; } const char *entry = enumToLinuxtv(value); if (entry == NULL) { break; } if (string == entry) { return value; } } stream.setStatus(QTextStream::ReadCorruptData); return T(); } void checkChar(const QChar &value) { QString string; stream >> string; if (string != value) { stream.setStatus(QTextStream::ReadCorruptData); } } void checkString(const QString &value) { QString string; stream >> string; if (string != value) { stream.setStatus(QTextStream::ReadCorruptData); } } private: QString string; QTextStream stream; }; class DvbChannelStringWriter { public: DvbChannelStringWriter() { stream.setString(&string); } ~DvbChannelStringWriter() { } QString getString() { string.chop(1); return string; } void writeInt(int value) { stream << value << ' '; } template void writeEnum(T value) { stream << enumToLinuxtv(value) << ' '; } void writeChar(const QChar &value) { stream << value << ' '; } void writeString(const QString &value) { stream << value << ' '; } private: QString string; QTextStream stream; }; void DvbCTransponder::readTransponder(QDataStream &stream) { stream >> frequency; stream >> symbolRate; modulation = readEnum(stream); fecRate = readEnum(stream); } bool DvbCTransponder::fromString(const QString &string) { DvbChannelStringReader reader(string); reader.checkChar('C'); reader.readInt(frequency); reader.readInt(symbolRate); fecRate = reader.readEnum(); modulation = reader.readEnum(); return reader.isValid(); } QString DvbCTransponder::toString() const { DvbChannelStringWriter writer; writer.writeChar('C'); writer.writeInt(frequency); writer.writeInt(symbolRate); writer.writeEnum(fecRate); writer.writeEnum(modulation); return writer.getString(); } bool DvbCTransponder::corresponds(const DvbTransponder &transponder) const { const DvbCTransponder *dvbCTransponder = transponder.as(); return ((dvbCTransponder != NULL) && (qAbs(dvbCTransponder->frequency - frequency) <= 2000000)); } void DvbSTransponder::readTransponder(QDataStream &stream) { polarization = readEnum(stream); stream >> frequency; stream >> symbolRate; fecRate = readEnum(stream); } bool DvbSTransponder::fromString(const QString &string) { DvbChannelStringReader reader(string); reader.checkChar('S'); reader.readInt(frequency); polarization = reader.readEnum(); reader.readInt(symbolRate); fecRate = reader.readEnum(); return reader.isValid(); } QString DvbSTransponder::toString() const { DvbChannelStringWriter writer; writer.writeChar('S'); writer.writeInt(frequency); writer.writeEnum(polarization); writer.writeInt(symbolRate); writer.writeEnum(fecRate); return writer.getString(); } bool DvbSTransponder::corresponds(const DvbTransponder &transponder) const { const DvbSTransponder *dvbSTransponder = transponder.as(); return ((dvbSTransponder != NULL) && (dvbSTransponder->polarization == polarization) && (qAbs(dvbSTransponder->frequency - frequency) <= 2000)); } void DvbS2Transponder::readTransponder(QDataStream &stream) { polarization = readEnum(stream); stream >> frequency; stream >> symbolRate; fecRate = readEnum(stream); modulation = readEnum(stream); rollOff = readEnum(stream); } bool DvbS2Transponder::fromString(const QString &string) { DvbChannelStringReader reader(string); reader.checkString("S2"); reader.readInt(frequency); polarization = reader.readEnum(); reader.readInt(symbolRate); fecRate = reader.readEnum(); rollOff = reader.readEnum(); modulation = reader.readEnum(); return reader.isValid(); } QString DvbS2Transponder::toString() const { DvbChannelStringWriter writer; writer.writeString("S2"); writer.writeInt(frequency); writer.writeEnum(polarization); writer.writeInt(symbolRate); writer.writeEnum(fecRate); writer.writeEnum(rollOff); writer.writeEnum(modulation); return writer.getString(); } bool DvbS2Transponder::corresponds(const DvbTransponder &transponder) const { const DvbS2Transponder *dvbS2Transponder = transponder.as(); return ((dvbS2Transponder != NULL) && (dvbS2Transponder->polarization == polarization) && (qAbs(dvbS2Transponder->frequency - frequency) <= 2000)); } void DvbTTransponder::readTransponder(QDataStream &stream) { stream >> frequency; bandwidth = readEnum(stream); modulation = readEnum(stream); fecRateHigh = readEnum(stream); fecRateLow = readEnum(stream); transmissionMode = readEnum(stream); guardInterval = readEnum(stream); hierarchy = readEnum(stream); } bool DvbTTransponder::fromString(const QString &string) { DvbChannelStringReader reader(string); reader.checkChar('T'); reader.readInt(frequency); bandwidth = reader.readEnum(); fecRateHigh = reader.readEnum(); fecRateLow = reader.readEnum(); modulation = reader.readEnum(); transmissionMode = reader.readEnum(); guardInterval = reader.readEnum(); hierarchy = reader.readEnum(); return reader.isValid(); } QString DvbTTransponder::toString() const { DvbChannelStringWriter writer; writer.writeChar('T'); writer.writeInt(frequency); writer.writeEnum(bandwidth); writer.writeEnum(fecRateHigh); writer.writeEnum(fecRateLow); writer.writeEnum(modulation); writer.writeEnum(transmissionMode); writer.writeEnum(guardInterval); writer.writeEnum(hierarchy); return writer.getString(); } bool DvbTTransponder::corresponds(const DvbTransponder &transponder) const { const DvbTTransponder *dvbTTransponder = transponder.as(); return ((dvbTTransponder != NULL) && (qAbs(dvbTTransponder->frequency - frequency) <= 2000000)); } void AtscTransponder::readTransponder(QDataStream &stream) { stream >> frequency; modulation = readEnum(stream); } bool AtscTransponder::fromString(const QString &string) { DvbChannelStringReader reader(string); reader.checkChar('A'); reader.readInt(frequency); modulation = reader.readEnum(); return reader.isValid(); } QString AtscTransponder::toString() const { DvbChannelStringWriter writer; writer.writeChar('A'); writer.writeInt(frequency); writer.writeEnum(modulation); return writer.getString(); } bool AtscTransponder::corresponds(const DvbTransponder &transponder) const { const AtscTransponder *atscTransponder = transponder.as(); return ((atscTransponder != NULL) && (qAbs(atscTransponder->frequency - frequency) <= 2000000)); } bool DvbTransponder::corresponds(const DvbTransponder &transponder) const { switch (data.transmissionType) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: return as()->corresponds(transponder); case DvbTransponderBase::DvbS: return as()->corresponds(transponder); case DvbTransponderBase::DvbS2: return as()->corresponds(transponder); case DvbTransponderBase::DvbT: return as()->corresponds(transponder); case DvbTransponderBase::Atsc: return as()->corresponds(transponder); } return false; } QString DvbTransponder::toString() const { switch (data.transmissionType) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: return as()->toString(); case DvbTransponderBase::DvbS: return as()->toString(); case DvbTransponderBase::DvbS2: return as()->toString(); case DvbTransponderBase::DvbT: return as()->toString(); case DvbTransponderBase::Atsc: return as()->toString(); } return QString(); } DvbTransponder DvbTransponder::fromString(const QString &string) { if (string.size() >= 2) { switch (string.at(0).unicode()) { case 'C': { DvbTransponder transponder(DvbTransponderBase::DvbC); if (transponder.as()->fromString(string)) { return transponder; } break; } case 'S': if (string.at(1) != '2') { DvbTransponder transponder(DvbTransponderBase::DvbS); if (transponder.as()->fromString(string)) { return transponder; } } else { DvbTransponder transponder(DvbTransponderBase::DvbS2); if (transponder.as()->fromString(string)) { return transponder; } } break; case 'T': { DvbTransponder transponder(DvbTransponderBase::DvbT); if (transponder.as()->fromString(string)) { return transponder; } break; } case 'A': { DvbTransponder transponder(DvbTransponderBase::Atsc); if (transponder.as()->fromString(string)) { return transponder; } break; } } } return DvbTransponder(); } kaffeine-1.2.2/src/dvb/dvbsi.cpp0000644000175000017500000015016411552636277016114 0ustar lxuserlxuser/* * dvbsi.cpp * * Copyright (C) 2008-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbsi.h" #include #include void DvbSection::initSection(const char *data, int size) { if (size < 3) { initSectionData(); return; } int sectionLength = ((((static_cast(data[1]) & 0xf) << 8) | static_cast(data[2])) + 3); if (sectionLength > size) { kDebug() << "adjusting length"; sectionLength = size; } initSectionData(data, sectionLength, size); } int DvbStandardSection::verifyCrc32(const char *data, int size) { unsigned int crc32 = 0xffffffff; for (int i = 0; i < size; ++i) { crc32 = ((crc32 << 8) ^ crc32Table[(crc32 >> 24) ^ static_cast(data[i])]); } return crc32; } /* * unsigned int crc32TableValue(int index) * { * unsigned int value = 0; * * for (int i = 8; i >= 0; --i) { * if (((value & 0x80000000) != 0) ^ ((index & (1 << i)) != 0)) { * value = (value << 1) ^ 0x04c11db7; * } else { * value <<= 1; * } * } * * return value; * } */ const unsigned int DvbStandardSection::crc32Table[] = { 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 }; void DvbStandardSection::initStandardSection(const char *data, int size) { if (size < 12) { initSectionData(); return; } initSection(data, size); } class Iso6937Codec : public QTextCodec { public: Iso6937Codec() { } ~Iso6937Codec() { } QByteArray name() const { return "ISO 6937"; // actually a superset of ISO 6937 } int mibEnum() const { return 14; } QByteArray convertFromUnicode(const QChar *, int, QTextCodec::ConverterState *) const { return QByteArray(); } QString convertToUnicode(const char *input, int size, QTextCodec::ConverterState *) const { QString result; unsigned short diacriticalMark = 0; for (; size > 0; ++input, --size) { unsigned short value = table[static_cast(*input)]; if (value == 0xffff) { continue; } if ((value & 0xff00) == 0x0300) { // diacritical mark diacriticalMark = value; continue; } result.append(value); if (diacriticalMark != 0) { result.append(diacriticalMark); diacriticalMark = 0; } } return result.normalized(QString::NormalizationForm_C); } private: static const unsigned short table[]; }; const unsigned short Iso6937Codec::table[] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0xffff, 0x00a7, 0x00a4, 0x2018, 0x201c, 0x00ab, 0x2190, 0x2191, 0x2192, 0x2193, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00d7, 0x00b5, 0x00b6, 0x00b7, 0x00f7, 0x2019, 0x201d, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0xffff, 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0306, 0x0307, 0x0308, 0xffff, 0x030a, 0x0327, 0xffff, 0x030b, 0x0328, 0x030c, 0x2015, 0x00b9, 0x00ae, 0x00a9, 0x2122, 0x266a, 0x00ac, 0x00a6, 0xffff, 0xffff, 0xffff, 0xffff, 0x215b, 0x215c, 0x215d, 0x215e, 0x2126, 0x00c6, 0x0110, 0x00aa, 0x0126, 0xffff, 0x0132, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0x0149, 0x0138, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x00ad }; QString DvbSiText::convertText(const char *data, int size) { if (size < 1) { return QString(); } // determine encoding TextEncoding encoding = (override6937 ? Iso8859_1 : Iso6937); if (static_cast(data[0]) < 0x20) { switch (data[0]) { case 0x01: encoding = Iso8859_5; break; case 0x02: encoding = Iso8859_6; break; case 0x03: encoding = Iso8859_7; break; case 0x04: encoding = Iso8859_8; break; case 0x05: encoding = Iso8859_9; break; case 0x06: encoding = Iso8859_10; break; case 0x07: encoding = Iso8859_11; break; case 0x09: encoding = Iso8859_13; break; case 0x0a: encoding = Iso8859_14; break; case 0x0b: encoding = Iso8859_15; break; case 0x13: encoding = Gb2312; break; case 0x14: encoding = Big5; break; case 0x15: encoding = Utf_8; break; case 0x10: { if (size < 3) { return QString(); } if (data[1] != 0) { return QString(); } switch (data[2]) { case 0x01: encoding = Iso8859_1; break; case 0x02: encoding = Iso8859_2; break; case 0x03: encoding = Iso8859_3; break; case 0x04: encoding = Iso8859_4; break; case 0x05: encoding = Iso8859_5; break; case 0x06: encoding = Iso8859_6; break; case 0x07: encoding = Iso8859_7; break; case 0x08: encoding = Iso8859_8; break; case 0x09: encoding = Iso8859_9; break; case 0x0a: encoding = Iso8859_10; break; case 0x0b: encoding = Iso8859_11; break; case 0x0d: encoding = Iso8859_13; break; case 0x0e: encoding = Iso8859_14; break; case 0x0f: encoding = Iso8859_15; break; default: return QString(); } data += 2; size -= 2; break; } default: return QString(); } data++; size--; } if (codecTable[encoding] == NULL) { QTextCodec *codec = NULL; switch (encoding) { case Iso6937: codec = new Iso6937Codec(); break; case Iso8859_1: codec = QTextCodec::codecForName("ISO 8859-1"); break; case Iso8859_2: codec = QTextCodec::codecForName("ISO 8859-2"); break; case Iso8859_3: codec = QTextCodec::codecForName("ISO 8859-3"); break; case Iso8859_4: codec = QTextCodec::codecForName("ISO 8859-4"); break; case Iso8859_5: codec = QTextCodec::codecForName("ISO 8859-5"); break; case Iso8859_6: codec = QTextCodec::codecForName("ISO 8859-6"); break; case Iso8859_7: codec = QTextCodec::codecForName("ISO 8859-7"); break; case Iso8859_8: codec = QTextCodec::codecForName("ISO 8859-8"); break; case Iso8859_9: codec = QTextCodec::codecForName("ISO 8859-9"); break; case Iso8859_10: codec = QTextCodec::codecForName("ISO 8859-10"); break; case Iso8859_11: codec = QTextCodec::codecForName("ISO 8859-11"); break; case Iso8859_13: codec = QTextCodec::codecForName("ISO 8859-13"); break; case Iso8859_14: codec = QTextCodec::codecForName("ISO 8859-14"); break; case Iso8859_15: codec = QTextCodec::codecForName("ISO 8859-15"); break; case Gb2312: codec = QTextCodec::codecForName("GB2312"); break; case Big5: codec = QTextCodec::codecForName("BIG5"); break; case Utf_8: codec = QTextCodec::codecForName("UTF-8"); break; } Q_ASSERT(codec != NULL); codecTable[encoding] = codec; } if (encoding <= Iso8859_15) { // only strip control codes for one-byte character tables char *dest = new char[size]; char *destIt = dest; for (const char *it = data; it != (data + size); ++it) { unsigned char value = *it; if ((value < 0x80) || (value > 0x9f)) { *(destIt++) = value; } } QString result = codecTable[encoding]->toUnicode(dest, destIt - dest); delete[] dest; return result; } return codecTable[encoding]->toUnicode(data, size); } void DvbSiText::setOverride6937(bool override) { override6937 = override; } QTextCodec *DvbSiText::codecTable[EncodingTypeMax + 1] = { NULL }; bool DvbSiText::override6937 = false; void DvbDescriptor::initDescriptor(const char *data, int size) { if (size < 2) { if (size != 0) { kDebug() << "invalid descriptor"; } initSectionData(); return; } int descriptorLength = (static_cast(data[1]) + 2); if (descriptorLength > size) { kDebug() << "adjusting length"; descriptorLength = size; } initSectionData(data, descriptorLength, size); } QString AtscPsipText::interpretTextData(const char *data, unsigned int len, unsigned int mode) { // Based on the "mode" values in A/65C Table 6.41, convert // the data into a string QString result; if ((mode <= 0x06) || (mode >= 0x09 && mode <= 0x10) || (mode >= 0x20 && mode <= 0x27) || (mode >= 0x30 && mode <= 0x33)) { // Select UNICODE Code range based on mode as leading octet for (unsigned int i = 0; i < len; i++) { QChar val = (data[i] | (mode << 8)); result += val; } } else if (mode == 0x3f) { // UTF-16 for (unsigned int i = 0; i < len; i += 2) { QChar val = ((data[i] << 8)| data[i+1]); result += val; } } else { // We currently don't support the following: // 0x3e Standard Compression Scheme for UNICODE (SCSU) // 0x40/0x41 Taiwan // 0x48 South Korea kWarning() << "Unsupported ATSC Text mode:" << mode; } return result; } QString AtscPsipText::convertText(const char *data, int size) { QString result; if (size < 1) { return QString(); } unsigned int num_strings = static_cast(data[0]); if (num_strings == 0) { return result; } // Note that for now we are only supporting the first string sent. If // multiple languages are sent, we only grab the first one provided int offset = 1; // First three bytes are the ISO 639 language code offset += 3; if (offset > size) { kDebug() << "adjusting length"; return result; } int num_segments = static_cast(data[offset++]); for (int j = 0; j < num_segments; j++) { if ((offset + 3) > size) { kDebug() << "adjusting length"; return result; } int comp_type = static_cast(data[offset++]); int mode = static_cast(data[offset++]); int num_bytes = static_cast(data[offset++]); if ((offset + num_bytes) > size) { kDebug() << "adjusting length"; return result; } const char *comp_string = (data + offset); if (comp_type == 0x00) { // Uncompressed result += interpretTextData(comp_string, num_bytes, mode); } else if ((comp_type == 0x01 || comp_type == 0x02) && mode == 0x00) { // Huffman Compression // As per the spec, only mode 0x00 supports Huffman coding result += AtscHuffmanString::convertText(comp_string, num_bytes, comp_type); } else { kWarning() << "Unsupported compression / mode:" << comp_type << mode; } offset += num_bytes; } return result; } QString AtscHuffmanString::convertText(const char *data_, int length, int table) { AtscHuffmanString huffmanstring(data_, length, table); huffmanstring.decompress(); return huffmanstring.result; } AtscHuffmanString::AtscHuffmanString(const char *data_, int length, int table) : data(data_), bitsLeft(8 * length) { if (table == 1) { offsets = Huffman1Offsets; tableBase = Huffman1Tables; } else { offsets = Huffman2Offsets; tableBase = Huffman2Tables; } } AtscHuffmanString::~AtscHuffmanString() { } bool AtscHuffmanString::hasBits() { return bitsLeft > 0; } unsigned char AtscHuffmanString::getBit() { if (bitsLeft >= 1) { int shift = (--bitsLeft % 8); unsigned char value = (data[0] >> shift) & 0x1; if (shift == 0) { data++; } return value; } return 0; } unsigned char AtscHuffmanString::getByte() { if (bitsLeft >= 8) { int shift = ((bitsLeft - 1) % 8); // Note this takes advantage of the fact that there is always // at least one byte remaining (to avoid a read-past end // condition) unsigned char value = ((((data[0] << 8) | ((unsigned char) data[1])) >> (shift + 1)) & 0xff); bitsLeft -= 8; data++; return value; } return 0; } void AtscHuffmanString::decompress() { const unsigned char *table = tableBase; while (hasBits()) { int index = 0; do { index = table[2 * index + getBit()]; } while (index < 128); index &= 0x7f; if (index == 27) { // escape --> uncompressed character(s) while (true) { index = getByte(); if (index < 128) { break; } result += QChar(index); } } if (index == 0) { // end break; } result += QChar(index); table = tableBase + offsets[index]; } } const unsigned short AtscHuffmanString::Huffman1Offsets[128] = { 0x0000, 0x003a, 0x003c, 0x003e, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004a, 0x004c, 0x004e, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005a, 0x005c, 0x005e, 0x0060, 0x0062, 0x0064, 0x0066, 0x0068, 0x006a, 0x006c, 0x006e, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x00ce, 0x00d2, 0x00d4, 0x00d6, 0x00d8, 0x00da, 0x00dc, 0x00e6, 0x00e8, 0x00ea, 0x00f0, 0x00f2, 0x00f4, 0x0106, 0x0112, 0x0114, 0x011c, 0x0128, 0x0130, 0x0134, 0x0136, 0x0138, 0x013a, 0x013c, 0x013e, 0x0146, 0x0148, 0x014a, 0x014c, 0x014e, 0x0150, 0x0152, 0x0154, 0x017e, 0x0192, 0x01ac, 0x01ba, 0x01d2, 0x01e4, 0x01fa, 0x0206, 0x021e, 0x0226, 0x0232, 0x023e, 0x0252, 0x0264, 0x027a, 0x0294, 0x0298, 0x02a4, 0x02c8, 0x02de, 0x02e6, 0x02f4, 0x0304, 0x0306, 0x030c, 0x0310, 0x0312, 0x0314, 0x0316, 0x0318, 0x031a, 0x031c, 0x0352, 0x036a, 0x038e, 0x03ae, 0x03ee, 0x0406, 0x0428, 0x0444, 0x0472, 0x0476, 0x0490, 0x04be, 0x04d6, 0x050a, 0x0544, 0x0564, 0x0566, 0x059a, 0x05d0, 0x05fc, 0x0622, 0x062c, 0x0646, 0x0654, 0x067c, 0x068a, 0x068c, 0x068e, 0x0690, 0x0692 }; const unsigned char AtscHuffmanString::Huffman1Tables[] = { 0x1b, 0x1c, 0xb4, 0xa4, 0xb2, 0xb7, 0xda, 0x01, 0xd1, 0x02, 0x03, 0x9b, 0x04, 0xd5, 0xd9, 0x05, 0xcb, 0xd6, 0x06, 0xcf, 0x07, 0x08, 0xca, 0x09, 0xc9, 0xc5, 0xc6, 0x0a, 0xd2, 0xc4, 0xc7, 0xcc, 0xd0, 0xc8, 0xd7, 0xce, 0x0b, 0xc1, 0x0c, 0xc2, 0xcd, 0xc3, 0x0d, 0x0e, 0x0f, 0x10, 0xd3, 0x11, 0xd4, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x29, 0x2a, 0xd8, 0xe5, 0xb9, 0x01, 0xa7, 0xb1, 0xec, 0xd1, 0x02, 0xad, 0xb2, 0xda, 0xe3, 0xb3, 0x03, 0xe4, 0xe6, 0x04, 0x9b, 0xe2, 0x05, 0x06, 0x07, 0x08, 0x09, 0xd5, 0x0a, 0xd6, 0x0b, 0xd9, 0x0c, 0xa6, 0xe9, 0xcb, 0xc5, 0xcf, 0x0d, 0x0e, 0xca, 0xc9, 0x0f, 0xc7, 0x10, 0x11, 0xe1, 0x12, 0x13, 0xc6, 0xd2, 0xc8, 0xce, 0xc1, 0xc4, 0xd0, 0xcc, 0x14, 0x15, 0xef, 0xc2, 0xd7, 0x16, 0xcd, 0x17, 0xf4, 0xd4, 0x18, 0x19, 0x1a, 0xc3, 0xd3, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x01, 0x80, 0xa0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xb1, 0x9b, 0x9b, 0x9b, 0x9b, 0xa0, 0x04, 0xf3, 0xe4, 0xb9, 0x01, 0xf4, 0xa0, 0x9b, 0x02, 0x03, 0x9b, 0x9b, 0x9b, 0x9b, 0x01, 0x02, 0x9b, 0xc1, 0xc8, 0xd3, 0x9b, 0x9b, 0x9b, 0xa0, 0x07, 0x08, 0xb1, 0xd2, 0xd3, 0xd4, 0xd5, 0xad, 0xcd, 0xc1, 0x01, 0x02, 0x03, 0xa0, 0x04, 0x9b, 0x05, 0x06, 0xa0, 0x05, 0xc9, 0xd7, 0xd3, 0x01, 0x02, 0x9b, 0xae, 0x80, 0x03, 0x04, 0x9b, 0x9b, 0x02, 0x03, 0xad, 0x9b, 0x01, 0x80, 0xa0, 0xb0, 0x04, 0x05, 0x80, 0x9b, 0xb1, 0xb2, 0xa0, 0xb0, 0xb9, 0x01, 0x02, 0x03, 0x02, 0x03, 0xb1, 0xba, 0x01, 0xb0, 0x9b, 0x80, 0x80, 0x01, 0xb0, 0x9b, 0x9b, 0xb8, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xb0, 0x9b, 0xa0, 0x02, 0x03, 0xb1, 0xb3, 0xb9, 0xb0, 0x01, 0x9b, 0x9b, 0xa0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x80, 0x9b, 0x9b, 0x13, 0x14, 0xaa, 0xad, 0xae, 0xf6, 0xe7, 0xf4, 0xe2, 0xe9, 0x01, 0x02, 0xc2, 0xf0, 0x9b, 0xf3, 0xe3, 0xe6, 0xf7, 0x03, 0xf5, 0x04, 0x05, 0x06, 0xf2, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0xe4, 0xa0, 0x0d, 0xec, 0xee, 0x0e, 0xed, 0x0f, 0x10, 0x11, 0x12, 0x08, 0x09, 0xc1, 0xd3, 0x9b, 0x01, 0xc3, 0x02, 0xe9, 0xec, 0x03, 0xf2, 0xf5, 0x04, 0xef, 0xe1, 0x05, 0xe5, 0x06, 0x07, 0x0b, 0x0c, 0xc1, 0xf9, 0x01, 0xc2, 0xcf, 0xe5, 0xf5, 0x9b, 0xe9, 0x02, 0xa0, 0x03, 0x04, 0x05, 0xf2, 0x06, 0xec, 0x07, 0xe1, 0x08, 0x09, 0xe8, 0x0a, 0xef, 0x05, 0x06, 0xf9, 0x9b, 0x01, 0xf5, 0x02, 0xf2, 0xe9, 0xe5, 0xef, 0x03, 0xe1, 0x04, 0x0a, 0x0b, 0xf1, 0xf5, 0xf3, 0x01, 0xed, 0xf9, 0xc3, 0x02, 0xec, 0xee, 0xe4, 0xf8, 0x03, 0x9b, 0xf6, 0x04, 0x05, 0xe1, 0x06, 0x07, 0x08, 0x09, 0x07, 0x08, 0xa0, 0x9b, 0xcc, 0x01, 0xe5, 0x02, 0xec, 0xf5, 0xef, 0x03, 0xe9, 0xf2, 0x04, 0x05, 0xe1, 0x06, 0x09, 0x0a, 0xae, 0xec, 0xf9, 0xc1, 0xe8, 0x01, 0x9b, 0x02, 0x03, 0x04, 0xe1, 0xf5, 0xe9, 0x05, 0xe5, 0x06, 0xf2, 0xef, 0x07, 0x08, 0xef, 0x05, 0x80, 0x9b, 0xf5, 0x01, 0x02, 0xe9, 0xe1, 0x03, 0xe5, 0x04, 0xee, 0x0b, 0xba, 0xd4, 0xae, 0xf2, 0xe3, 0x01, 0xa0, 0x02, 0x80, 0x9b, 0xed, 0x03, 0xc9, 0xf3, 0xf4, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x02, 0x03, 0x9b, 0xf5, 0x01, 0xe1, 0xef, 0xe5, 0x05, 0xe9, 0xe1, 0xef, 0xf5, 0xee, 0x9b, 0xe5, 0x01, 0x02, 0x03, 0x04, 0x04, 0x05, 0xa0, 0x9b, 0x01, 0xf5, 0x02, 0xe5, 0xef, 0x03, 0xe1, 0xe9, 0x08, 0x09, 0xaa, 0xd4, 0x01, 0x9b, 0xe3, 0x02, 0xf2, 0x03, 0xe5, 0x04, 0xf5, 0xf9, 0xe9, 0x05, 0xef, 0x06, 0x07, 0xe1, 0xe5, 0x08, 0xce, 0xa0, 0xc6, 0xf5, 0x01, 0x02, 0x9b, 0xc2, 0x03, 0xe1, 0x04, 0xef, 0x05, 0xe9, 0x06, 0x07, 0x09, 0x0a, 0xe4, 0xf3, 0xe6, 0xf6, 0xf7, 0xf0, 0xf2, 0x01, 0xec, 0x02, 0x03, 0xa0, 0x9b, 0x04, 0x05, 0xf5, 0x06, 0x07, 0xee, 0x08, 0x0b, 0x0c, 0xa0, 0xf3, 0xf9, 0xae, 0xd2, 0xc7, 0x01, 0x9b, 0x02, 0xf5, 0x03, 0x04, 0x05, 0xe9, 0xec, 0x06, 0xe5, 0x07, 0xef, 0x08, 0xe1, 0x09, 0xf2, 0x0a, 0x01, 0xf5, 0x9b, 0xd6, 0x04, 0x05, 0xe8, 0x9b, 0x01, 0xf5, 0x02, 0xe1, 0xe9, 0xef, 0x03, 0xe5, 0x10, 0x11, 0xaa, 0xec, 0xf1, 0xae, 0xa0, 0xf7, 0xed, 0xee, 0x01, 0x02, 0x9b, 0xeb, 0x03, 0x04, 0x05, 0x06, 0xe3, 0x07, 0xef, 0x08, 0xe9, 0xf5, 0x09, 0xe1, 0xe5, 0xf0, 0xe8, 0x0a, 0x0b, 0x0c, 0x0d, 0xf4, 0x0e, 0x0f, 0xe8, 0x0a, 0xad, 0xce, 0x9b, 0x01, 0xd6, 0x02, 0xf5, 0xf7, 0x03, 0x04, 0xe1, 0xe5, 0xe9, 0x05, 0xf2, 0x06, 0xef, 0x07, 0x08, 0x09, 0xee, 0x03, 0xec, 0xae, 0x01, 0x9b, 0x02, 0xf0, 0x06, 0xe9, 0xa0, 0xc3, 0xef, 0x9b, 0xe5, 0x01, 0x80, 0x02, 0x03, 0xe1, 0x04, 0x05, 0x06, 0x07, 0xc6, 0xd7, 0x01, 0x9b, 0xf2, 0x02, 0x03, 0xe8, 0xe5, 0xe1, 0x04, 0xe9, 0xef, 0x05, 0x9b, 0x9b, 0x02, 0xef, 0xe1, 0x9b, 0x01, 0xe5, 0x01, 0xef, 0x9b, 0xe1, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x19, 0x1a, 0x9b, 0xba, 0xe5, 0xea, 0xf8, 0x01, 0x02, 0xe6, 0xa7, 0x03, 0xfa, 0xe8, 0x04, 0xf7, 0x05, 0xf5, 0xe2, 0x06, 0xeb, 0x07, 0xf0, 0x08, 0x80, 0xf6, 0xe7, 0x09, 0xe4, 0x0a, 0xa0, 0xe9, 0x0b, 0xe3, 0xf9, 0x0c, 0x0d, 0xed, 0x0e, 0x0f, 0xf3, 0x10, 0x11, 0xec, 0x12, 0xf4, 0xf2, 0x13, 0xee, 0x14, 0x15, 0x16, 0x17, 0x18, 0x0a, 0x0b, 0xf3, 0x9b, 0xf5, 0xe2, 0x01, 0x80, 0xa0, 0x02, 0xe5, 0xf2, 0xe9, 0x03, 0xec, 0x04, 0xf9, 0x05, 0xef, 0x06, 0xe1, 0x07, 0x08, 0x09, 0x10, 0x11, 0xc3, 0xcc, 0xc7, 0x9b, 0xe3, 0x01, 0x80, 0xec, 0xf9, 0x02, 0xf3, 0x03, 0xf5, 0x04, 0x05, 0xf2, 0x06, 0xe9, 0xa0, 0x07, 0x08, 0xef, 0xf4, 0x09, 0x0a, 0xe1, 0x0b, 0xe8, 0xeb, 0xe5, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f, 0xae, 0xf5, 0xf7, 0x01, 0xec, 0x02, 0xe4, 0xe7, 0xf2, 0x03, 0x9b, 0xef, 0x04, 0xf6, 0x05, 0x06, 0xf9, 0xf3, 0x07, 0xe9, 0xe1, 0x08, 0x09, 0x80, 0x0a, 0x0b, 0xe5, 0x0c, 0x0d, 0xa0, 0x1e, 0x1f, 0x9b, 0xa1, 0xad, 0xe8, 0xea, 0xf1, 0xf5, 0xfa, 0x01, 0x02, 0x03, 0x04, 0xba, 0xf8, 0xa7, 0xe2, 0xe9, 0x05, 0x06, 0x07, 0xe6, 0xed, 0xe7, 0xeb, 0x08, 0x09, 0xf6, 0xf0, 0x0a, 0xef, 0x0b, 0xe3, 0x0c, 0x0d, 0x0e, 0xf9, 0x0f, 0xe4, 0xec, 0x10, 0xe5, 0x11, 0xf4, 0xf7, 0x12, 0x13, 0xe1, 0x14, 0x15, 0x16, 0xee, 0xf3, 0x17, 0x80, 0x18, 0x19, 0xf2, 0x1a, 0x1b, 0xa0, 0x1c, 0x1d, 0xa0, 0x0b, 0xf5, 0x9b, 0x01, 0xec, 0xf3, 0xf2, 0x80, 0xe1, 0x02, 0x03, 0xf4, 0xe9, 0xef, 0xe6, 0x04, 0x05, 0x06, 0x07, 0xe5, 0x08, 0x09, 0x0a, 0x0f, 0x10, 0xba, 0xf9, 0xa7, 0xf4, 0x9b, 0x01, 0xe7, 0xec, 0x02, 0xee, 0x03, 0xef, 0xf5, 0x04, 0xf2, 0x05, 0x06, 0xe9, 0x07, 0xf3, 0xe1, 0x08, 0x09, 0x0a, 0x0b, 0xe5, 0x80, 0x0c, 0xe8, 0xa0, 0x0d, 0x0e, 0xe5, 0x0d, 0xe2, 0xf5, 0xf7, 0x9b, 0xec, 0x01, 0xf9, 0xee, 0x02, 0x03, 0x04, 0xf2, 0x05, 0x80, 0x06, 0xa0, 0xe1, 0xef, 0x07, 0xf4, 0xe9, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x15, 0x16, 0xa1, 0xf8, 0xe9, 0xeb, 0x01, 0x80, 0x9b, 0xfa, 0xe2, 0x02, 0x03, 0x04, 0xa0, 0xf0, 0x05, 0x06, 0x07, 0xe1, 0x08, 0xe6, 0xf2, 0xed, 0xf6, 0x09, 0xe4, 0x0a, 0xef, 0xf4, 0xec, 0xf3, 0xe7, 0xe5, 0x0b, 0xe3, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0xee, 0x14, 0xef, 0x01, 0x9b, 0xe1, 0x0b, 0x0c, 0xd4, 0xef, 0xe6, 0xec, 0xf7, 0xe1, 0x01, 0xba, 0x02, 0x9b, 0xf9, 0x03, 0x04, 0x05, 0xf3, 0x06, 0x07, 0x08, 0xe9, 0xa0, 0x09, 0x80, 0xe5, 0x0a, 0x15, 0x16, 0xa7, 0xba, 0xe3, 0xf7, 0xf2, 0xad, 0xe2, 0x01, 0x02, 0x9b, 0xe6, 0x03, 0xed, 0xf6, 0x04, 0xeb, 0x05, 0xf4, 0x06, 0x07, 0x08, 0xf3, 0x09, 0xf5, 0x0a, 0xef, 0x0b, 0x0c, 0x80, 0xf9, 0xe1, 0x0d, 0xe4, 0xe9, 0xa0, 0x0e, 0x0f, 0xec, 0xe5, 0x10, 0x11, 0x12, 0x13, 0x14, 0x0a, 0x0b, 0xf9, 0x9b, 0xf5, 0xf3, 0x01, 0x02, 0xe2, 0xed, 0x80, 0x03, 0xf0, 0xef, 0x04, 0xa0, 0x05, 0xe9, 0x06, 0xe1, 0x07, 0x08, 0x09, 0xe5, 0x18, 0x19, 0xe2, 0xea, 0xf2, 0xe8, 0xec, 0xed, 0xfa, 0x9b, 0x01, 0xf5, 0x02, 0x03, 0xf6, 0x04, 0xba, 0xe6, 0x05, 0x06, 0xeb, 0xef, 0x07, 0xa7, 0xf9, 0x08, 0x09, 0x0a, 0x0b, 0xe3, 0x0c, 0xee, 0xe1, 0x0d, 0xf3, 0x0e, 0xe9, 0x0f, 0x10, 0xf4, 0x80, 0xe4, 0xe5, 0x11, 0x12, 0xe7, 0xa0, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1b, 0x1c, 0xae, 0xfa, 0xbf, 0x01, 0xa7, 0x9b, 0x02, 0xe9, 0xf8, 0xf9, 0x03, 0xe5, 0xe8, 0x04, 0xe1, 0xeb, 0x05, 0xe2, 0x06, 0x07, 0xe3, 0x08, 0xe7, 0xf4, 0x09, 0x80, 0xf6, 0xf0, 0x0a, 0xe4, 0x0b, 0xf3, 0xf7, 0x0c, 0x0d, 0xef, 0xec, 0xa0, 0x0e, 0x0f, 0xed, 0xe6, 0x10, 0xf5, 0x11, 0x12, 0x13, 0x14, 0x15, 0xf2, 0x16, 0xee, 0x17, 0x18, 0x19, 0x1a, 0x0e, 0x0f, 0xed, 0xa7, 0x9b, 0xe4, 0x01, 0xf9, 0xf3, 0xf2, 0xf4, 0x02, 0xe8, 0x03, 0xec, 0xf0, 0x04, 0xe1, 0xe9, 0x05, 0x06, 0x80, 0xa0, 0x07, 0x08, 0x09, 0x0a, 0xe5, 0xef, 0x0b, 0x0c, 0x0d, 0x9b, 0xf5, 0x18, 0x19, 0xba, 0xac, 0xf6, 0x9b, 0xf0, 0xe2, 0x01, 0xe6, 0x02, 0xa7, 0xae, 0xe7, 0x03, 0xe3, 0xf5, 0x04, 0xed, 0x05, 0x06, 0x07, 0xeb, 0x08, 0x09, 0xee, 0xf2, 0x0a, 0xe4, 0x0b, 0xf9, 0xec, 0x0c, 0x0d, 0xf4, 0x80, 0x0e, 0xef, 0xf3, 0xa0, 0xe1, 0x0f, 0xe9, 0x10, 0x11, 0xe5, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x19, 0x1a, 0xa7, 0xac, 0xbf, 0xc3, 0xc8, 0xe4, 0xe6, 0xed, 0xf2, 0xae, 0xec, 0xee, 0xf9, 0x01, 0x02, 0x03, 0x04, 0xba, 0x05, 0x9b, 0xf5, 0x06, 0x07, 0x08, 0x09, 0xeb, 0xf0, 0x0a, 0x0b, 0x0c, 0xe1, 0xe3, 0x0d, 0xe8, 0x0e, 0x0f, 0xef, 0x10, 0x11, 0xf3, 0x12, 0xe9, 0x13, 0xe5, 0x14, 0x15, 0xf4, 0x16, 0x17, 0xa0, 0x18, 0x80, 0x14, 0x15, 0xba, 0xbf, 0xe4, 0xf7, 0x9b, 0xa7, 0x01, 0xee, 0x02, 0x03, 0x04, 0xe3, 0xe2, 0xed, 0x05, 0xf9, 0x06, 0xf4, 0x07, 0xec, 0x08, 0xf5, 0xf2, 0x09, 0xe1, 0xf3, 0x0a, 0xef, 0x0b, 0x0c, 0x0d, 0xe9, 0x80, 0xe5, 0x0e, 0xa0, 0x0f, 0xe8, 0x10, 0x11, 0x12, 0x13, 0x11, 0x12, 0xeb, 0xfa, 0x80, 0xe6, 0x9b, 0x01, 0xa0, 0x02, 0x03, 0xe9, 0xe1, 0x04, 0xe4, 0xf0, 0xed, 0xe2, 0xe3, 0xe7, 0xec, 0x05, 0xe5, 0x06, 0x07, 0x08, 0x09, 0xf4, 0x0a, 0x0b, 0x0c, 0xf3, 0xee, 0x0d, 0x0e, 0xf2, 0x0f, 0x10, 0x04, 0xe5, 0xf3, 0xef, 0x9b, 0x01, 0xe1, 0x02, 0x03, 0xe9, 0x0b, 0x0c, 0xa7, 0xe2, 0xec, 0xe3, 0xf2, 0x01, 0x9b, 0x02, 0x03, 0x04, 0xe9, 0xef, 0xee, 0xe5, 0xe1, 0x80, 0x05, 0xa0, 0x06, 0x07, 0x08, 0x09, 0xf3, 0x0a, 0x05, 0x06, 0x9b, 0xa0, 0xe1, 0xe5, 0xe9, 0x01, 0x80, 0xf0, 0x02, 0xf4, 0x03, 0x04, 0xa0, 0x13, 0xe3, 0xad, 0xe4, 0xe9, 0xee, 0xef, 0xf0, 0xf4, 0xf6, 0xa1, 0xe1, 0xed, 0x01, 0xe2, 0x02, 0x03, 0x04, 0xa7, 0x05, 0x06, 0xf7, 0x07, 0x9b, 0xec, 0x08, 0xe5, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0xf3, 0x0f, 0x10, 0x11, 0x80, 0x12, 0x05, 0x06, 0xe5, 0xfa, 0xa0, 0xf9, 0x9b, 0x01, 0x80, 0xe9, 0x02, 0xe1, 0x03, 0x04, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b }; const unsigned short AtscHuffmanString::Huffman2Offsets[128] = { 0x0000, 0x002c, 0x002e, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038, 0x003a, 0x003c, 0x003e, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004a, 0x004c, 0x004e, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005a, 0x005c, 0x005e, 0x0060, 0x0062, 0x0064, 0x0066, 0x0068, 0x006a, 0x00de, 0x00e0, 0x00ea, 0x00ec, 0x00ee, 0x00f0, 0x00f2, 0x00f8, 0x00fa, 0x00fc, 0x00fe, 0x0100, 0x0104, 0x0116, 0x0120, 0x0122, 0x012c, 0x0132, 0x0138, 0x013c, 0x0140, 0x0144, 0x0146, 0x014a, 0x014c, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160, 0x0162, 0x0176, 0x0184, 0x0194, 0x01a2, 0x01b2, 0x01ba, 0x01c8, 0x01d2, 0x01de, 0x01ea, 0x01f2, 0x01fc, 0x0208, 0x0210, 0x021a, 0x0228, 0x022a, 0x0234, 0x024a, 0x025a, 0x025e, 0x0264, 0x026e, 0x0270, 0x0272, 0x0274, 0x0276, 0x0278, 0x027a, 0x027c, 0x027e, 0x0280, 0x02b4, 0x02ce, 0x02f0, 0x031a, 0x0358, 0x036e, 0x038e, 0x03ac, 0x03d8, 0x03e0, 0x03f4, 0x0424, 0x0440, 0x0476, 0x04ae, 0x04ce, 0x04d0, 0x0506, 0x0534, 0x0560, 0x0586, 0x0592, 0x05aa, 0x05b8, 0x05dc, 0x05ec, 0x05ee, 0x05f0, 0x05f2, 0x05f4 }; const unsigned char AtscHuffmanString::Huffman2Tables[] = { 0x14, 0x15, 0x9b, 0xd6, 0xc9, 0xcf, 0xd7, 0xc7, 0x01, 0xa2, 0xce, 0xcb, 0x02, 0x03, 0xc5, 0xcc, 0xc6, 0xc8, 0x04, 0xc4, 0x05, 0xc2, 0x06, 0xc3, 0xd2, 0x07, 0xd3, 0x08, 0xca, 0xd4, 0x09, 0xcd, 0xd0, 0x0a, 0xc1, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x38, 0x39, 0xad, 0xaf, 0xb7, 0xda, 0xa8, 0xb3, 0xb5, 0x01, 0x02, 0x9b, 0xb4, 0xf1, 0xa2, 0xd5, 0xd6, 0xd9, 0x03, 0x04, 0x05, 0xcf, 0x06, 0xc9, 0xf9, 0xea, 0xeb, 0xf5, 0xf6, 0x07, 0x08, 0x09, 0xb2, 0xc5, 0xc6, 0xb1, 0x0a, 0xee, 0xcb, 0x0b, 0xd4, 0x0c, 0xc4, 0xc8, 0xd2, 0x0d, 0x0e, 0x0f, 0xc7, 0xca, 0xce, 0xd0, 0xd7, 0x10, 0xc2, 0x11, 0xcc, 0xec, 0xe5, 0xe7, 0x12, 0xcd, 0x13, 0x14, 0xc3, 0x15, 0x16, 0x17, 0xed, 0x18, 0x19, 0xf2, 0x1a, 0xd3, 0x1b, 0x1c, 0xe4, 0x1d, 0xc1, 0xe3, 0x1e, 0xe9, 0xf0, 0xe2, 0xf7, 0x1f, 0xf3, 0xe6, 0x20, 0x21, 0x22, 0xe8, 0xef, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0xf4, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0xe1, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x9b, 0x9b, 0x03, 0x04, 0x80, 0xae, 0xc8, 0xd4, 0x01, 0x02, 0x9b, 0xa0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x02, 0xf3, 0xa0, 0xf4, 0x9b, 0x01, 0x9b, 0x9b, 0xac, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x01, 0xa0, 0x9b, 0xa2, 0x07, 0x08, 0xe2, 0xe4, 0xe5, 0xe6, 0xa0, 0xf2, 0xe1, 0x01, 0x02, 0xf3, 0xe3, 0x03, 0x04, 0x05, 0x9b, 0x06, 0x04, 0x80, 0xca, 0xd3, 0xa2, 0x01, 0x9b, 0x02, 0x03, 0xa0, 0x9b, 0xa0, 0x03, 0x04, 0x9b, 0xb7, 0xf4, 0xa0, 0xb0, 0xf3, 0x01, 0x02, 0xb9, 0x02, 0xb8, 0x9b, 0xa0, 0x01, 0xae, 0x02, 0xb6, 0x9b, 0x01, 0xa0, 0xa0, 0x01, 0x9b, 0xb0, 0xae, 0x01, 0x9b, 0xa0, 0xae, 0x01, 0xa0, 0x9b, 0x9b, 0x9b, 0x9b, 0x01, 0xac, 0xae, 0x9b, 0x9b, 0x02, 0x03, 0x9b, 0xa0, 0xb5, 0xb6, 0xb8, 0x01, 0x9b, 0xa0, 0x9b, 0xa0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xa0, 0x9b, 0x9b, 0x08, 0x09, 0xe6, 0xf5, 0xf3, 0xf4, 0x9b, 0xe4, 0x01, 0xed, 0x02, 0x03, 0x04, 0xf2, 0x05, 0x06, 0xec, 0xee, 0x07, 0xa0, 0x05, 0x06, 0x9b, 0xec, 0xf5, 0x01, 0x02, 0xe1, 0xef, 0xe5, 0xe9, 0xf2, 0x03, 0x04, 0x06, 0x07, 0x9b, 0xe9, 0xf9, 0xf2, 0xf5, 0x01, 0x02, 0x03, 0xec, 0xef, 0xe1, 0x04, 0xe8, 0x05, 0x05, 0x06, 0xf9, 0xf2, 0xf5, 0x9b, 0xe5, 0xef, 0x01, 0x02, 0xe9, 0xe1, 0x03, 0x04, 0x06, 0x07, 0xe1, 0xe9, 0xee, 0xf6, 0xe4, 0xec, 0xf3, 0x01, 0x02, 0xf2, 0x03, 0x04, 0x9b, 0x05, 0x02, 0x03, 0xe5, 0xec, 0x9b, 0xef, 0x01, 0xf2, 0x05, 0x06, 0xf5, 0xef, 0x9b, 0xec, 0xe9, 0x01, 0xe1, 0xf2, 0x02, 0xe5, 0x03, 0x04, 0x03, 0x04, 0x9b, 0xe5, 0xe9, 0xf5, 0xe1, 0x01, 0xef, 0x02, 0x04, 0x05, 0xa0, 0xc9, 0xf3, 0x9b, 0xae, 0xf2, 0x01, 0x02, 0x03, 0xee, 0xef, 0x05, 0x9b, 0xae, 0xe9, 0xe5, 0x01, 0xf5, 0x02, 0xe1, 0x03, 0x04, 0xe5, 0x03, 0xe1, 0xe9, 0xf2, 0x9b, 0x01, 0x02, 0x03, 0x04, 0x9b, 0xe9, 0xf5, 0x01, 0xe5, 0x02, 0xef, 0xe1, 0xe1, 0x05, 0x9b, 0xe3, 0xef, 0x01, 0xf5, 0xe5, 0x02, 0x03, 0xe9, 0x04, 0xe5, 0x03, 0x9b, 0xe9, 0x01, 0xe1, 0xef, 0x02, 0x03, 0x04, 0xa7, 0xee, 0xec, 0xf2, 0xf3, 0x01, 0x9b, 0x02, 0xe1, 0x06, 0x9b, 0xe8, 0xe9, 0x01, 0xf2, 0xec, 0x02, 0xef, 0x03, 0xe5, 0x04, 0x05, 0x9b, 0x9b, 0x03, 0x04, 0x9b, 0xae, 0x01, 0xe9, 0x02, 0xe1, 0xe5, 0xef, 0x09, 0x0a, 0xf6, 0xf9, 0x01, 0xae, 0xe3, 0xe9, 0xf5, 0x9b, 0xe5, 0xef, 0x02, 0x03, 0xe1, 0x04, 0xe8, 0x05, 0x06, 0xf4, 0x07, 0x08, 0xe8, 0x07, 0xe5, 0xf7, 0xd6, 0xe1, 0x9b, 0xe9, 0xf2, 0x01, 0x02, 0x03, 0x04, 0xef, 0x05, 0x06, 0xae, 0x01, 0x9b, 0xee, 0xe9, 0x02, 0xe5, 0x9b, 0xa0, 0x01, 0x03, 0x04, 0x9b, 0xe8, 0xe5, 0xe1, 0xef, 0x01, 0xe9, 0x02, 0x9b, 0x9b, 0x9b, 0xef, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x18, 0x19, 0xe8, 0xef, 0xf8, 0x9b, 0xa7, 0xf7, 0xfa, 0x01, 0x02, 0x03, 0x04, 0xe5, 0xae, 0x05, 0xe6, 0xe2, 0x06, 0xf6, 0xeb, 0xf5, 0xe9, 0x07, 0xf0, 0xf9, 0xe7, 0x08, 0x09, 0xe4, 0x0a, 0xe3, 0x0b, 0xed, 0x0c, 0xf3, 0x0d, 0x0e, 0x0f, 0xec, 0x10, 0xf4, 0x11, 0x12, 0xf2, 0xa0, 0x13, 0x14, 0x15, 0xee, 0x16, 0x17, 0x0b, 0x0c, 0xe4, 0xf3, 0x9b, 0xae, 0xe2, 0x01, 0x02, 0x03, 0xec, 0xa0, 0x04, 0xe9, 0xf2, 0xf5, 0x05, 0xf9, 0xe1, 0x06, 0xef, 0x07, 0xe5, 0x08, 0x09, 0x0a, 0x0f, 0x10, 0xf1, 0xae, 0xc4, 0xf9, 0xac, 0x01, 0xe3, 0x02, 0x9b, 0xf2, 0x03, 0x04, 0xa0, 0xec, 0xf5, 0x05, 0x06, 0xe9, 0x07, 0xeb, 0x08, 0xf4, 0x09, 0xe5, 0x0a, 0xef, 0xe1, 0xe8, 0x0b, 0x0c, 0x0d, 0x0e, 0x13, 0x14, 0xa7, 0xbb, 0xe6, 0xed, 0xf7, 0xe7, 0xf6, 0x01, 0x02, 0x9b, 0xee, 0x03, 0x04, 0xec, 0x05, 0xf5, 0x06, 0xac, 0xe4, 0xf9, 0xf2, 0x07, 0x08, 0x09, 0xae, 0x0a, 0xef, 0x0b, 0xe1, 0xf3, 0x0c, 0xe9, 0x0d, 0x0e, 0x0f, 0x10, 0xe5, 0x11, 0x12, 0xa0, 0x1d, 0x1e, 0xa9, 0xe8, 0xf5, 0x9b, 0x01, 0xad, 0xbb, 0xeb, 0xfa, 0x02, 0xa7, 0xe6, 0xe2, 0xe7, 0x03, 0x04, 0x05, 0x06, 0xe9, 0xf8, 0x07, 0xac, 0xef, 0xf0, 0x08, 0xed, 0xf6, 0xf9, 0x09, 0xf7, 0x0a, 0x0b, 0xae, 0x0c, 0xe3, 0x0d, 0xe5, 0xf4, 0x0e, 0x0f, 0xe4, 0x10, 0xec, 0x11, 0xe1, 0x12, 0x13, 0x14, 0x15, 0x16, 0xee, 0xf3, 0x17, 0x18, 0xf2, 0xa0, 0x19, 0x1a, 0x1b, 0x1c, 0x09, 0x0a, 0xae, 0x9b, 0xec, 0x01, 0xf5, 0x02, 0xf4, 0xe6, 0x03, 0xe1, 0xe5, 0xe9, 0x04, 0xf2, 0xef, 0x05, 0x06, 0x07, 0xa0, 0x08, 0x0e, 0x0f, 0xad, 0xe7, 0x9b, 0xa7, 0xf9, 0x01, 0xec, 0x02, 0xac, 0xf2, 0x03, 0xae, 0xf3, 0xf5, 0x04, 0x05, 0xef, 0x06, 0x07, 0xe9, 0xe1, 0x08, 0x09, 0xe8, 0x0a, 0x0b, 0xe5, 0x0c, 0xa0, 0x0d, 0x0d, 0x0e, 0xa7, 0xac, 0xf3, 0xad, 0x01, 0x02, 0x9b, 0xf9, 0xf5, 0xae, 0x03, 0xee, 0x04, 0xf2, 0x05, 0x06, 0xf4, 0x07, 0x08, 0x09, 0xef, 0xe1, 0xa0, 0x0a, 0xe9, 0x0b, 0x0c, 0xe5, 0x14, 0x15, 0xac, 0xe2, 0xf8, 0x9b, 0xae, 0xfa, 0x01, 0xeb, 0x02, 0xa0, 0x03, 0x04, 0xf0, 0x05, 0x06, 0xe6, 0xf6, 0x07, 0xe4, 0xed, 0xe7, 0x08, 0xe1, 0xef, 0xf2, 0x09, 0x0a, 0x0b, 0xec, 0x0c, 0xe5, 0xe3, 0x0d, 0xf4, 0x0e, 0xf3, 0x0f, 0x10, 0x11, 0xee, 0x12, 0x13, 0x03, 0xef, 0x9b, 0xe1, 0xe5, 0xf5, 0x01, 0x02, 0x08, 0x09, 0xec, 0xf9, 0xa7, 0xee, 0x01, 0xac, 0x9b, 0xae, 0x02, 0x03, 0x04, 0xf3, 0x05, 0xe9, 0x06, 0xa0, 0x07, 0xe5, 0x16, 0x17, 0xa7, 0xad, 0xee, 0xe3, 0xeb, 0xf2, 0x9b, 0xe2, 0x01, 0x02, 0xf5, 0x03, 0xf4, 0xac, 0x04, 0x05, 0xe6, 0xed, 0xf6, 0x06, 0xae, 0xf0, 0x07, 0x08, 0xf3, 0x09, 0x0a, 0xe4, 0x0b, 0x0c, 0xf9, 0x0d, 0xef, 0x0e, 0xe1, 0x0f, 0x10, 0xe9, 0xec, 0x11, 0xa0, 0xe5, 0x12, 0x13, 0x14, 0x15, 0x0c, 0x0d, 0xa7, 0xbb, 0x9b, 0x01, 0xf9, 0xae, 0xe2, 0x02, 0xed, 0xf3, 0x03, 0xf5, 0xef, 0xf0, 0x04, 0x05, 0xe9, 0x06, 0x07, 0x08, 0x09, 0xa0, 0xe1, 0xe5, 0x0a, 0x0b, 0x19, 0x1a, 0xad, 0xbb, 0xe2, 0xea, 0xed, 0xf2, 0xfa, 0xe6, 0xec, 0x01, 0x02, 0x03, 0x9b, 0xf5, 0x04, 0xa7, 0xf6, 0xf9, 0x05, 0x06, 0xeb, 0xef, 0x07, 0x08, 0x09, 0x0a, 0xac, 0x0b, 0x0c, 0xe3, 0xae, 0x0d, 0xee, 0xe9, 0x0e, 0xe1, 0x0f, 0xf3, 0x10, 0x11, 0xf4, 0x12, 0xe7, 0xe5, 0x13, 0x14, 0xe4, 0x15, 0x16, 0x17, 0xa0, 0x18, 0x1a, 0x1b, 0xc2, 0x9b, 0xad, 0xac, 0xf8, 0x01, 0xae, 0x02, 0x03, 0xe5, 0xe7, 0xe8, 0xf9, 0xe9, 0xeb, 0x04, 0xe3, 0xe1, 0x05, 0xf6, 0x06, 0xe4, 0x07, 0xe2, 0xf0, 0x08, 0x09, 0xf3, 0xf4, 0xf7, 0xef, 0x0a, 0x0b, 0x0c, 0x0d, 0xec, 0x0e, 0x0f, 0x10, 0xf5, 0xed, 0x11, 0xe6, 0xa0, 0x12, 0xf2, 0x13, 0x14, 0x15, 0xee, 0x16, 0x17, 0x18, 0x19, 0x0e, 0x0f, 0xad, 0xed, 0xf9, 0x9b, 0xae, 0x01, 0xf3, 0x02, 0x03, 0xf5, 0xf4, 0xf0, 0x04, 0xef, 0x05, 0xe9, 0x06, 0xe8, 0xa0, 0xe1, 0xec, 0x07, 0xf2, 0x08, 0xe5, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x9b, 0xf5, 0x19, 0x1a, 0xa9, 0xbb, 0xf6, 0xe6, 0x01, 0x9b, 0xad, 0xe2, 0xf0, 0x02, 0xa7, 0x03, 0x04, 0x05, 0xf5, 0xe3, 0xac, 0xe7, 0xf2, 0x06, 0xeb, 0x07, 0xec, 0xed, 0xee, 0xf9, 0x08, 0xae, 0x09, 0x0a, 0xe4, 0x0b, 0x0c, 0xf4, 0x0d, 0xf3, 0x0e, 0x0f, 0x10, 0xe1, 0xef, 0x11, 0xe9, 0x12, 0x13, 0xe5, 0x14, 0xa0, 0x15, 0x16, 0x17, 0x18, 0xa0, 0x16, 0xa2, 0xa7, 0xe2, 0xeb, 0xed, 0xee, 0x9b, 0xf7, 0x01, 0x02, 0x03, 0xbb, 0xf9, 0xf0, 0x04, 0x05, 0xec, 0x06, 0x07, 0x08, 0xf5, 0xe1, 0x09, 0xac, 0xe3, 0x0a, 0xe8, 0x0b, 0xe9, 0x0c, 0xef, 0xf3, 0xae, 0x0d, 0x0e, 0xe5, 0x0f, 0x10, 0x11, 0xf4, 0x12, 0x13, 0x14, 0x15, 0x14, 0x15, 0xbb, 0xe2, 0xad, 0xed, 0x01, 0x9b, 0xa7, 0xe3, 0xac, 0xec, 0xee, 0x02, 0xf7, 0x03, 0x04, 0xf9, 0x05, 0x06, 0x07, 0x08, 0xf4, 0xae, 0xf5, 0x09, 0x0a, 0xf2, 0xe1, 0xf3, 0x0b, 0x0c, 0x0d, 0xe9, 0x0e, 0x0f, 0xef, 0xe5, 0x10, 0xa0, 0xe8, 0x11, 0x12, 0x13, 0x11, 0x12, 0xef, 0xf6, 0x9b, 0xeb, 0xf9, 0x01, 0xa0, 0xe2, 0x02, 0xe1, 0x03, 0xed, 0x04, 0xe3, 0xe9, 0x05, 0xe4, 0xe5, 0xe7, 0x06, 0xec, 0xf0, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xf3, 0x0c, 0xf4, 0xee, 0x0d, 0xf2, 0x0e, 0x0f, 0x10, 0x05, 0xe5, 0xf3, 0xf9, 0x9b, 0x01, 0xef, 0x02, 0x03, 0xe1, 0x04, 0xe9, 0x0a, 0x0b, 0xae, 0x9b, 0xec, 0xed, 0x01, 0x02, 0xf3, 0xee, 0xf2, 0x03, 0xe5, 0x04, 0xe8, 0xa0, 0xe1, 0x05, 0xef, 0x06, 0x07, 0x08, 0xe9, 0x09, 0x05, 0x06, 0xa0, 0xac, 0xad, 0xf4, 0xe9, 0x01, 0x02, 0xe1, 0xe5, 0x03, 0x9b, 0x04, 0x11, 0xa0, 0xbf, 0xe1, 0xe2, 0xe6, 0xed, 0xe4, 0xe9, 0xf7, 0xa7, 0x01, 0x02, 0xbb, 0x03, 0x04, 0xec, 0x05, 0x9b, 0xee, 0x06, 0xef, 0x07, 0xac, 0xe5, 0xf3, 0x08, 0x09, 0x0a, 0xae, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x06, 0x07, 0xa0, 0xae, 0xe1, 0xe5, 0xec, 0xfa, 0x9b, 0xef, 0xe9, 0x01, 0x02, 0x03, 0x04, 0x05, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b }; void DvbPmtFilter::processSection(const char *data, int size) { unsigned char tableId = data[0]; if (tableId != 0x02) { return; } DvbPmtSection pmtSection(data, size); if (!pmtSection.isValid() || (pmtSection.programNumber() != programNumber)) { return; } if ((size == lastPmtSectionData.size()) && (memcmp(data, lastPmtSectionData.constData(), size) == 0)) { return; } lastPmtSectionData = pmtSection.toByteArray(); emit pmtSectionChanged(lastPmtSectionData); } void DvbSectionGenerator::initPat(int transportStreamId, int programNumber, int pmtPid) { Q_ASSERT((pmtPid >= 0) && (pmtPid <= 0x1fff)); char *data = startSection(16); data[0] = 0x00; data[3] = transportStreamId >> 8; data[4] = transportStreamId; data[8] = programNumber >> 8; data[9] = programNumber; data[10] = 0xe0 | (pmtPid >> 8); data[11] = pmtPid; endSection(16, 0x00); } void DvbSectionGenerator::initPmt(int pmtPid, const DvbPmtSection §ion, const QList &pids) { Q_ASSERT(section.isValid()); char *data = startSection(section.getSectionLength()); DvbPmtSectionEntry entry = section.entries(); memcpy(data, section.getData(), entry.getData() - section.getData()); int size = entry.getData() - section.getData(); while (entry.isValid()) { if (pids.contains(entry.pid())) { memcpy(data + size, entry.getData(), entry.getLength()); size += entry.getLength(); } entry.advance(); } endSection(size + 4, pmtPid); } QByteArray DvbSectionGenerator::generatePackets() { char *data = packets.data(); for (int i = 3; i < packets.size(); i += 188) { data[i] = (data[i] & 0xf0) | continuityCounter; continuityCounter = (continuityCounter + 1) & 0x0f; } return packets; } char *DvbSectionGenerator::startSection(int sectionLength) { Q_ASSERT((sectionLength >= 4) && (sectionLength <= 0x1002)); packets.resize(((sectionLength / 184) + 1) * 188); return packets.data() + 5; } void DvbSectionGenerator::endSection(int sectionLength, int pid) { Q_ASSERT((sectionLength >= 4) && (sectionLength <= 0x1002)); Q_ASSERT((pid >= 0) && (pid <= 0x1fff)); packets.resize(((sectionLength / 184) + 1) * 188); char *data = packets.data(); data[0] = 0x47; data[1] = 0x40 | (pid >> 8); data[2] = pid; data[3] = 0x10; data[4] = 0x00; data[6] = 0xb0 | ((sectionLength - 3) >> 8); data[7] = sectionLength - 3; data[10] = 0xc1 | (versionNumber << 1); data[11] = 0x00; data[12] = 0x00; int size = sectionLength + 5; unsigned int crc32 = 0xffffffff; for (int i = 5; i < (size - 4); ++i) { unsigned char byte = data[i]; crc32 = (crc32 << 8) ^ DvbStandardSection::crc32Table[(crc32 >> 24) ^ byte]; } data[size - 4] = crc32 >> 24; data[size - 3] = crc32 >> 16; data[size - 2] = crc32 >> 8; data[size - 1] = crc32; for (int i = 188; i < size; i += 188) { // split the section into multiple packets if necessary memmove(data + i + 4, data + i, size - i); data[i] = 0x47; data[i + 1] = pid >> 8; data[i + 2] = pid; data[i + 3] = 0x10; // continuity counter is filled out in generatePackets() size += 4; } // pad the unused bytes memset(data + size, 0xff, packets.size() - size); // increment version number versionNumber = (versionNumber + 1) & 0x1f; } DvbPmtParser::DvbPmtParser(const DvbPmtSection §ion) : videoPid(-1), teletextPid(-1) { for (DvbPmtSectionEntry entry = section.entries(); entry.isValid(); entry.advance()) { QString streamLanguage; QString subtitleLanguage; bool teletextPresent = false; bool ac3Present = false; for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { switch (descriptor.descriptorTag()) { case 0x0a: { DvbLanguageDescriptor languageDescriptor(descriptor); if (!languageDescriptor.isValid()) { break; } // ISO 8859-1 equals to unicode range 0x0000 - 0x00ff streamLanguage.clear(); streamLanguage.append(QChar(languageDescriptor.languageCode1())); streamLanguage.append(QChar(languageDescriptor.languageCode2())); streamLanguage.append(QChar(languageDescriptor.languageCode3())); break; } case 0x56: teletextPresent = true; break; case 0x59: { DvbSubtitleDescriptor subtitleDescriptor(descriptor); if (!subtitleDescriptor.isValid()) { break; } if ((subtitleDescriptor.subtitleType() >= 0x01) && (subtitleDescriptor.subtitleType() <= 0x03)) { // FIXME how to deal with vbi and teletext subtitles? kDebug() << "special subtitle found"; } // ISO 8859-1 equals to unicode range 0x0000 - 0x00ff subtitleLanguage.clear(); subtitleLanguage.append(QChar(subtitleDescriptor.languageCode1())); subtitleLanguage.append(QChar(subtitleDescriptor.languageCode2())); subtitleLanguage.append(QChar(subtitleDescriptor.languageCode3())); break; } case 0x6a: case 0x7a: ac3Present = true; break; } } switch (entry.streamType()) { case 0x01: // MPEG1 video case 0x02: // MPEG2 video case 0x10: // MPEG4 video case 0x1b: // H264 video if (videoPid < 0) { videoPid = entry.pid(); } else { kDebug() << "more than one video pid"; } break; case 0x03: // MPEG1 audio case 0x04: // MPEG2 audio case 0x0f: // AAC audio case 0x11: // AAC / LATM audio case 0x81: // AC-3 audio (ATSC specific) case 0x87: // enhanced AC-3 audio (ATSC specific) audioPids.append(qMakePair(entry.pid(), streamLanguage)); break; case 0x06: // private data - can be teletext, subtitle, ac3 or something else if (teletextPresent) { if (teletextPid < 0) { teletextPid = entry.pid(); } else { kDebug() << "more than one teletext pid"; } } if (!subtitleLanguage.isEmpty()) { subtitlePids.append(qMakePair(entry.pid(), subtitleLanguage)); if (teletextPresent) { kDebug() << "subtitle and teletext on the same pid"; } } if (ac3Present) { audioPids.append(qMakePair(entry.pid(), streamLanguage)); } break; default: if (!subtitleLanguage.isEmpty()) { kDebug() << "subtitle with unexpected stream type found"; } if (teletextPresent) { kDebug() << "teletext with unexpected stream type found"; } break; } } } void AtscEitSectionEntry::initEitSectionEntry(const char *data, int size) { if (size < 12) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } titleLength = static_cast(data[9]); if (titleLength > (size - 12)) { kDebug() << "adjusting length"; titleLength = (size - 12); } // too ugly to be automatically generated int entryLength = ((((static_cast(data[10 + titleLength]) & 0xf) << 8) | static_cast(data[11 + titleLength])) + 12 + titleLength); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } // everything below this line is automatically generated DvbLanguageDescriptor::DvbLanguageDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 6) { kDebug() << "invalid descriptor"; initSectionData(); return; } } DvbSubtitleDescriptor::DvbSubtitleDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 10) { kDebug() << "invalid descriptor"; initSectionData(); return; } } DvbServiceDescriptor::DvbServiceDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 5) { kDebug() << "invalid descriptor"; initSectionData(); return; } providerNameLength = at(3); if (providerNameLength > (getLength() - 5)) { kDebug() << "adjusting length"; providerNameLength = (getLength() - 5); } serviceNameLength = at(4 + providerNameLength); if (serviceNameLength > (getLength() - (5 + providerNameLength))) { kDebug() << "adjusting length"; serviceNameLength = (getLength() - (5 + providerNameLength)); } } DvbShortEventDescriptor::DvbShortEventDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 7) { kDebug() << "invalid descriptor"; initSectionData(); return; } eventNameLength = at(5); if (eventNameLength > (getLength() - 7)) { kDebug() << "adjusting length"; eventNameLength = (getLength() - 7); } textLength = at(6 + eventNameLength); if (textLength > (getLength() - (7 + eventNameLength))) { kDebug() << "adjusting length"; textLength = (getLength() - (7 + eventNameLength)); } } DvbExtendedEventDescriptor::DvbExtendedEventDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 8) { kDebug() << "invalid descriptor"; initSectionData(); return; } itemsLength = at(6); if (itemsLength > (getLength() - 8)) { kDebug() << "adjusting length"; itemsLength = (getLength() - 8); } textLength = at(7 + itemsLength); if (textLength > (getLength() - (8 + itemsLength))) { kDebug() << "adjusting length"; textLength = (getLength() - (8 + itemsLength)); } } DvbCableDescriptor::DvbCableDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 13) { kDebug() << "invalid descriptor"; initSectionData(); return; } } DvbSatelliteDescriptor::DvbSatelliteDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 13) { kDebug() << "invalid descriptor"; initSectionData(); return; } } DvbTerrestrialDescriptor::DvbTerrestrialDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 13) { kDebug() << "invalid descriptor"; initSectionData(); return; } } AtscChannelNameDescriptor::AtscChannelNameDescriptor(const DvbDescriptor &descriptor) : DvbDescriptor(descriptor) { if (getLength() < 2) { kDebug() << "invalid descriptor"; initSectionData(); return; } } void DvbPatSectionEntry::initPatSectionEntry(const char *data, int size) { if (size < 4) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } initSectionData(data, 4, size); } void DvbPmtSectionEntry::initPmtSectionEntry(const char *data, int size) { if (size < 5) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[3]) & 0xf) << 8) | static_cast(data[4])) + 5); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void DvbSdtSectionEntry::initSdtSectionEntry(const char *data, int size) { if (size < 5) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[3]) & 0xf) << 8) | static_cast(data[4])) + 5); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void DvbEitSectionEntry::initEitSectionEntry(const char *data, int size) { if (size < 12) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[10]) & 0xf) << 8) | static_cast(data[11])) + 12); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void DvbNitSectionEntry::initNitSectionEntry(const char *data, int size) { if (size < 6) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[4]) & 0xf) << 8) | static_cast(data[5])) + 6); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void AtscMgtSectionEntry::initMgtSectionEntry(const char *data, int size) { if (size < 11) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[9]) & 0xf) << 8) | static_cast(data[10])) + 11); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void AtscVctSectionEntry::initVctSectionEntry(const char *data, int size) { if (size < 32) { if (size != 0) { kDebug() << "invalid entry"; } initSectionData(); return; } int entryLength = ((((static_cast(data[30]) & 0x3) << 8) | static_cast(data[31])) + 32); if (entryLength > size) { kDebug() << "adjusting length"; entryLength = size; } initSectionData(data, entryLength, size); } void DvbPatSection::initPatSection(const char *data, int size) { if (size < 12) { initSectionData(); return; } initStandardSection(data, size); } void DvbPmtSection::initPmtSection(const char *data, int size) { if (size < 16) { initSectionData(); return; } initStandardSection(data, size); descriptorsLength = ((at(10) & 0xf) << 8) | at(11); if (descriptorsLength > (getLength() - 16)) { kDebug() << "adjusting length"; descriptorsLength = (getLength() - 16); } } void DvbSdtSection::initSdtSection(const char *data, int size) { if (size < 15) { initSectionData(); return; } initStandardSection(data, size); } void DvbEitSection::initEitSection(const char *data, int size) { if (size < 18) { initSectionData(); return; } initStandardSection(data, size); } void DvbNitSection::initNitSection(const char *data, int size) { if (size < 16) { initSectionData(); return; } initStandardSection(data, size); descriptorsLength = ((at(8) & 0xf) << 8) | at(9); if (descriptorsLength > (getLength() - 16)) { kDebug() << "adjusting length"; descriptorsLength = (getLength() - 16); } entriesLength = ((at(10 + descriptorsLength) & 0xf) << 8) | at(11 + descriptorsLength); if (entriesLength > (getLength() - (16 + descriptorsLength))) { kDebug() << "adjusting length"; entriesLength = (getLength() - (16 + descriptorsLength)); } } void AtscMgtSection::initMgtSection(const char *data, int size) { if (size < 15) { initSectionData(); return; } initStandardSection(data, size); } void AtscVctSection::initVctSection(const char *data, int size) { if (size < 14) { initSectionData(); return; } initStandardSection(data, size); } void AtscEitSection::initEitSection(const char *data, int size) { if (size < 14) { initSectionData(); return; } initStandardSection(data, size); } void AtscEttSection::initEttSection(const char *data, int size) { if (size < 17) { initSectionData(); return; } initStandardSection(data, size); } kaffeine-1.2.2/src/dvb/dvbepg.cpp0000644000175000017500000004563011552636277016255 0ustar lxuserlxuser/* * dvbepg.cpp * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbepg.h" #include "dvbepg_p.h" #include #include #include #include "../ensurenopendingoperation.h" #include "dvbdevice.h" #include "dvbmanager.h" #include "dvbsi.h" bool DvbEpgEntry::validate() const { if (channel.isValid() && begin.isValid() && (begin.timeSpec() == Qt::UTC) && duration.isValid()) { return true; } return false; } bool DvbEpgEntryId::operator<(const DvbEpgEntryId &other) const { if (entry->channel != other.entry->channel) { return (entry->channel < other.entry->channel); } if (entry->begin != other.entry->begin) { return (entry->begin < other.entry->begin); } if (entry->duration != other.entry->duration) { return (entry->duration < other.entry->duration); } if (entry->title != other.entry->title) { return (entry->title < other.entry->title); } if (entry->subheading != other.entry->subheading) { return (entry->subheading < other.entry->subheading); } if (!entry->details.isEmpty() && !other.entry->details.isEmpty()) { return (entry->details < other.entry->details); } return false; } DvbEpgModel::DvbEpgModel(DvbManager *manager_, QObject *parent) : QObject(parent), manager(manager_), hasPendingOperation(false) { currentDateTimeUtc = QDateTime::currentDateTime().toUTC(); startTimer(54000); DvbChannelModel *channelModel = manager->getChannelModel(); connect(channelModel, SIGNAL(channelAboutToBeUpdated(DvbSharedChannel)), this, SLOT(channelAboutToBeUpdated(DvbSharedChannel))); connect(channelModel, SIGNAL(channelUpdated(DvbSharedChannel)), this, SLOT(channelUpdated(DvbSharedChannel))); connect(channelModel, SIGNAL(channelRemoved(DvbSharedChannel)), this, SLOT(channelRemoved(DvbSharedChannel))); connect(manager->getRecordingModel(), SIGNAL(recordingRemoved(DvbSharedRecording)), this, SLOT(recordingRemoved(DvbSharedRecording))); // TODO use SQL to store epg data QFile file(KStandardDirs::locateLocal("appdata", "epgdata.dvb")); if (!file.open(QIODevice::ReadOnly)) { kWarning() << "cannot open" << file.fileName(); return; } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); DvbRecordingModel *recordingModel = manager->getRecordingModel(); bool hasRecordingKey = true; int version; stream >> version; if (version == 0x1ce0eca7) { hasRecordingKey = false; } else if (version != 0x79cffd36) { kWarning() << "wrong version" << file.fileName(); return; } while (!stream.atEnd()) { DvbEpgEntry entry; QString channelName; stream >> channelName; entry.channel = channelModel->findChannelByName(channelName); stream >> entry.begin; entry.begin = entry.begin.toUTC(); stream >> entry.duration; stream >> entry.title; stream >> entry.subheading; stream >> entry.details; if (hasRecordingKey) { SqlKey recordingKey; stream >> recordingKey.sqlKey; if (recordingKey.isSqlKeyValid()) { entry.recording = recordingModel->findRecordingByKey(recordingKey); } } if (stream.status() != QDataStream::Ok) { kWarning() << "corrupt data" << file.fileName(); break; } addEntry(entry); } } DvbEpgModel::~DvbEpgModel() { if (hasPendingOperation) { kWarning() << "illegal recursive call"; } if (!dvbEpgFilters.isEmpty() || !atscEpgFilters.isEmpty()) { kWarning() << "filter list not empty"; } QFile file(KStandardDirs::locateLocal("appdata", "epgdata.dvb")); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "cannot open" << file.fileName(); return; } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); int version = 0x79cffd36; stream << version; foreach (const DvbSharedEpgEntry &entry, entries) { SqlKey recordingKey; if (entry->recording.isValid()) { recordingKey = *entry->recording; } stream << entry->channel->name; stream << entry->begin; stream << entry->duration; stream << entry->title; stream << entry->subheading; stream << entry->details; stream << recordingKey.sqlKey; } } QMap DvbEpgModel::getEntries() const { return entries; } QHash DvbEpgModel::getEpgChannels() const { return epgChannels; } QList DvbEpgModel::getCurrentNext(const DvbSharedChannel &channel) const { QList result; DvbEpgEntry fakeEntry(channel); for (ConstIterator it = entries.lowerBound(DvbEpgEntryId(&fakeEntry)); it != entries.constEnd(); ++it) { const DvbSharedEpgEntry &entry = *it; if (entry->channel != channel) { break; } result.append(entry); if (result.size() == 2) { break; } } return result; } DvbSharedEpgEntry DvbEpgModel::addEntry(const DvbEpgEntry &entry) { if (!entry.validate()) { kWarning() << "invalid entry"; return DvbSharedEpgEntry(); } if (hasPendingOperation) { kWarning() << "illegal recursive call"; return DvbSharedEpgEntry(); } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (entry.begin.addSecs(QTime().secsTo(entry.duration)) > currentDateTimeUtc) { DvbSharedEpgEntry existingEntry = entries.value(DvbEpgEntryId(&entry)); if (existingEntry.isValid()) { if (existingEntry->details.isEmpty() && !entry.details.isEmpty()) { // needed for atsc emit entryAboutToBeUpdated(existingEntry); const_cast(existingEntry.constData())->details = entry.details; emit entryUpdated(existingEntry); } return existingEntry; } DvbSharedEpgEntry newEntry(new DvbEpgEntry(entry)); entries.insert(DvbEpgEntryId(newEntry), newEntry); if (newEntry->recording.isValid()) { recordings.insert(newEntry->recording, newEntry); } if (++epgChannels[newEntry->channel] == 1) { emit epgChannelAdded(newEntry->channel); } emit entryAdded(newEntry); return newEntry; } return DvbSharedEpgEntry(); } void DvbEpgModel::scheduleProgram(const DvbSharedEpgEntry &entry, int extraSecondsBefore, int extraSecondsAfter) { if (!entry.isValid() || (entries.value(DvbEpgEntryId(entry)) != entry)) { kWarning() << "invalid entry"; return; } if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); emit entryAboutToBeUpdated(entry); DvbSharedRecording oldRecording; if (!entry->recording.isValid()) { DvbRecording recording; recording.name = entry->title; recording.channel = entry->channel; recording.begin = entry->begin.addSecs(-extraSecondsBefore); recording.duration = entry->duration.addSecs(extraSecondsBefore + extraSecondsAfter); const_cast(entry.constData())->recording = manager->getRecordingModel()->addRecording(recording); recordings.insert(entry->recording, entry); } else { oldRecording = entry->recording; recordings.remove(entry->recording); const_cast(entry.constData())->recording = DvbSharedRecording(); } emit entryUpdated(entry); if (oldRecording.isValid()) { // recordingRemoved() will be called hasPendingOperation = false; manager->getRecordingModel()->removeRecording(oldRecording); } } void DvbEpgModel::startEventFilter(DvbDevice *device, const DvbSharedChannel &channel) { switch (channel->transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: case DvbTransponderBase::DvbT: dvbEpgFilters.append(QExplicitlySharedDataPointer( new DvbEpgFilter(manager, device, channel))); break; case DvbTransponderBase::Atsc: atscEpgFilters.append(QExplicitlySharedDataPointer( new AtscEpgFilter(manager, device, channel))); break; } } void DvbEpgModel::stopEventFilter(DvbDevice *device, const DvbSharedChannel &channel) { switch (channel->transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: case DvbTransponderBase::DvbT: for (int i = 0; i < dvbEpgFilters.size(); ++i) { const DvbEpgFilter *epgFilter = dvbEpgFilters.at(i).constData(); if ((epgFilter->device == device) && (epgFilter->source == channel->source) && (epgFilter->transponder.corresponds(channel->transponder))) { dvbEpgFilters.removeAt(i); break; } } break; case DvbTransponderBase::Atsc: for (int i = 0; i < atscEpgFilters.size(); ++i) { const AtscEpgFilter *epgFilter = atscEpgFilters.at(i).constData(); if ((epgFilter->device == device) && (epgFilter->source == channel->source) && (epgFilter->transponder.corresponds(channel->transponder))) { atscEpgFilters.removeAt(i); break; } } break; } } void DvbEpgModel::channelAboutToBeUpdated(const DvbSharedChannel &channel) { updatingChannel = *channel; } void DvbEpgModel::channelUpdated(const DvbSharedChannel &channel) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (DvbChannelId(channel) != DvbChannelId(&updatingChannel)) { DvbEpgEntry fakeEntry(channel); Iterator it = entries.lowerBound(DvbEpgEntryId(&fakeEntry)); while ((ConstIterator(it) != entries.constEnd()) && ((*it)->channel == channel)) { it = removeEntry(it); } } } void DvbEpgModel::channelRemoved(const DvbSharedChannel &channel) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); DvbEpgEntry fakeEntry(channel); Iterator it = entries.lowerBound(DvbEpgEntryId(&fakeEntry)); while ((ConstIterator(it) != entries.constEnd()) && ((*it)->channel == channel)) { it = removeEntry(it); } } void DvbEpgModel::recordingRemoved(const DvbSharedRecording &recording) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); DvbSharedEpgEntry entry = recordings.take(recording); if (entry.isValid()) { emit entryAboutToBeUpdated(entry); const_cast(entry.constData())->recording = DvbSharedRecording(); emit entryUpdated(entry); } } void DvbEpgModel::timerEvent(QTimerEvent *event) { Q_UNUSED(event) if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); currentDateTimeUtc = QDateTime::currentDateTime().toUTC(); Iterator it = entries.begin(); while (ConstIterator(it) != entries.constEnd()) { const DvbSharedEpgEntry &entry = *it; if (entry->begin.addSecs(QTime().secsTo(entry->duration)) > currentDateTimeUtc) { ++it; } else { it = removeEntry(it); } } } DvbEpgModel::Iterator DvbEpgModel::removeEntry(Iterator it) { const DvbSharedEpgEntry &entry = *it; if (entry->recording.isValid()) { recordings.remove(entry->recording); } if (--epgChannels[entry->channel] == 0) { epgChannels.remove(entry->channel); emit epgChannelRemoved(entry->channel); } emit entryRemoved(entry); return entries.erase(it); } DvbEpgFilter::DvbEpgFilter(DvbManager *manager, DvbDevice *device_, const DvbSharedChannel &channel) : device(device_) { source = channel->source; transponder = channel->transponder; device->addSectionFilter(0x12, this); channelModel = manager->getChannelModel(); epgModel = manager->getEpgModel(); } DvbEpgFilter::~DvbEpgFilter() { device->removeSectionFilter(0x12, this); } QTime DvbEpgFilter::bcdToTime(int bcd) { return QTime(((bcd >> 20) & 0x0f) * 10 + ((bcd >> 16) & 0x0f), ((bcd >> 12) & 0x0f) * 10 + ((bcd >> 8) & 0x0f), ((bcd >> 4) & 0x0f) * 10 + (bcd & 0x0f)); } void DvbEpgFilter::processSection(const char *data, int size) { unsigned char tableId = data[0]; if ((tableId < 0x4e) || (tableId > 0x6f)) { return; } DvbEitSection eitSection(data, size); if (!eitSection.isValid()) { return; } DvbChannel fakeChannel; fakeChannel.source = source; fakeChannel.transponder = transponder; fakeChannel.networkId = eitSection.originalNetworkId(); fakeChannel.transportStreamId = eitSection.transportStreamId(); fakeChannel.serviceId = eitSection.serviceId(); DvbSharedChannel channel = channelModel->findChannelById(fakeChannel); if (!channel.isValid()) { fakeChannel.networkId = -1; channel = channelModel->findChannelById(fakeChannel); } if (!channel.isValid()) { return; } for (DvbEitSectionEntry entry = eitSection.entries(); entry.isValid(); entry.advance()) { DvbEpgEntry epgEntry; epgEntry.channel = channel; epgEntry.begin = QDateTime(QDate::fromJulianDay(entry.startDate() + 2400001), bcdToTime(entry.startTime()), Qt::UTC); epgEntry.duration = bcdToTime(entry.duration()); for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { switch (descriptor.descriptorTag()) { case 0x4d: { DvbShortEventDescriptor eventDescriptor(descriptor); if (!eventDescriptor.isValid()) { break; } epgEntry.title = eventDescriptor.eventName(); epgEntry.subheading = eventDescriptor.text(); break; } case 0x4e: { DvbExtendedEventDescriptor eventDescriptor(descriptor); if (!eventDescriptor.isValid()) { break; } epgEntry.details += eventDescriptor.text(); break; } } } epgModel->addEntry(epgEntry); } } void AtscEpgMgtFilter::processSection(const char *data, int size) { epgFilter->processMgtSection(data, size); } void AtscEpgEitFilter::processSection(const char *data, int size) { epgFilter->processEitSection(data, size); } void AtscEpgEttFilter::processSection(const char *data, int size) { epgFilter->processEttSection(data, size); } AtscEpgFilter::AtscEpgFilter(DvbManager *manager, DvbDevice *device_, const DvbSharedChannel &channel) : device(device_), mgtFilter(this), eitFilter(this), ettFilter(this) { source = channel->source; transponder = channel->transponder; device->addSectionFilter(0x1ffb, &mgtFilter); channelModel = manager->getChannelModel(); epgModel = manager->getEpgModel(); } AtscEpgFilter::~AtscEpgFilter() { foreach (int pid, eitPids) { device->removeSectionFilter(pid, &eitFilter); } foreach (int pid, ettPids) { device->removeSectionFilter(pid, &ettFilter); } device->removeSectionFilter(0x1ffb, &mgtFilter); } void AtscEpgFilter::processMgtSection(const char *data, int size) { unsigned char tableId = data[0]; if (tableId != 0xc7) { return; } AtscMgtSection mgtSection(data, size); if (!mgtSection.isValid()) { return; } int entryCount = mgtSection.entryCount(); QList newEitPids; QList newEttPids; for (AtscMgtSectionEntry entry = mgtSection.entries(); (entryCount > 0) && entry.isValid(); --entryCount, entry.advance()) { int tableType = entry.tableType(); if ((tableType >= 0x0100) && (tableType <= 0x017f)) { int pid = entry.pid(); int index = (qLowerBound(newEitPids, pid) - newEitPids.constBegin()); if ((index >= newEitPids.size()) || (newEitPids.at(index) != pid)) { newEitPids.insert(index, pid); } } if ((tableType >= 0x0200) && (tableType <= 0x027f)) { int pid = entry.pid(); int index = (qLowerBound(newEttPids, pid) - newEttPids.constBegin()); if ((index >= newEttPids.size()) || (newEttPids.at(index) != pid)) { newEttPids.insert(index, pid); } } } for (int i = 0; i < eitPids.size(); ++i) { int pid = eitPids.at(i); int index = (qBinaryFind(newEitPids, pid) - newEitPids.constBegin()); if (index < newEitPids.size()) { newEitPids.removeAt(index); } else { device->removeSectionFilter(pid, &eitFilter); eitPids.removeAt(i); --i; } } for (int i = 0; i < ettPids.size(); ++i) { int pid = ettPids.at(i); int index = (qBinaryFind(newEttPids, pid) - newEttPids.constBegin()); if (index < newEttPids.size()) { newEttPids.removeAt(index); } else { device->removeSectionFilter(pid, &ettFilter); ettPids.removeAt(i); --i; } } for (int i = 0; i < newEitPids.size(); ++i) { int pid = newEitPids.at(i); eitPids.append(pid); device->addSectionFilter(pid, &eitFilter); } for (int i = 0; i < newEttPids.size(); ++i) { int pid = newEttPids.at(i); ettPids.append(pid); device->addSectionFilter(pid, &ettFilter); } } void AtscEpgFilter::processEitSection(const char *data, int size) { unsigned char tableId = data[0]; if (tableId != 0xcb) { return; } AtscEitSection eitSection(data, size); if (!eitSection.isValid()) { return; } DvbChannel fakeChannel; fakeChannel.source = source; fakeChannel.transponder = transponder; fakeChannel.networkId = eitSection.sourceId(); DvbSharedChannel channel = channelModel->findChannelById(fakeChannel); if (!channel.isValid()) { return; } int entryCount = eitSection.entryCount(); // 1980-01-06T000000 minus 15 secs (= UTC - GPS in 2011) QDateTime baseDateTime = QDateTime(QDate(1980, 1, 5), QTime(23, 59, 45), Qt::UTC); for (AtscEitSectionEntry entry = eitSection.entries(); (entryCount > 0) && entry.isValid(); --entryCount, entry.advance()) { DvbEpgEntry epgEntry; epgEntry.channel = channel; epgEntry.begin = baseDateTime.addSecs(entry.startTime()); epgEntry.duration = QTime().addSecs(entry.duration()); epgEntry.title = entry.title(); quint32 id = ((quint32(fakeChannel.networkId) << 16) | quint32(entry.eventId())); DvbSharedEpgEntry entry = epgEntries.value(id); if (entry.isValid() && (entry->channel == epgEntry.channel) && (entry->begin == epgEntry.begin) && (entry->duration == epgEntry.duration) && (entry->title == epgEntry.title)) { continue; } entry = epgModel->addEntry(epgEntry); epgEntries.insert(id, entry); } } void AtscEpgFilter::processEttSection(const char *data, int size) { unsigned char tableId = data[0]; if (tableId != 0xcc) { return; } AtscEttSection ettSection(data, size); if (!ettSection.isValid() || (ettSection.messageType() != 0x02)) { return; } quint32 id = ((quint32(ettSection.sourceId()) << 16) | quint32(ettSection.eventId())); DvbSharedEpgEntry entry = epgEntries.value(id); if (entry.isValid()) { QString details = ettSection.text(); if (entry->details != details) { DvbEpgEntry modifiedEntry = *entry; modifiedEntry.details = details; entry = epgModel->addEntry(modifiedEntry); epgEntries.insert(id, entry); } } } kaffeine-1.2.2/src/dvb/dvbliveview_p.h0000644000175000017500000000344611552636277017317 0ustar lxuserlxuser/* * dvbliveview_p.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBLIVEVIEW_P_H #define DVBLIVEVIEW_P_H #include #include "../osdwidget.h" #include "dvbepg.h" #include "dvbsi.h" class MediaWidget; class DvbOsd : public OsdObject { public: enum OsdLevel { Off, ShortOsd, LongOsd }; DvbOsd() : level(Off) { } ~DvbOsd() { } void init(OsdLevel level_, const QString &channelName_, const QList &epgEntries); OsdLevel level; private: QPixmap paintOsd(QRect &rect, const QFont &font, Qt::LayoutDirection direction); QString channelName; DvbEpgEntry firstEntry; DvbEpgEntry secondEntry; }; class DvbLiveViewInternal : public DvbPidFilter { public: DvbLiveViewInternal() : mediaWidget(NULL) { } ~DvbLiveViewInternal() { } MediaWidget *mediaWidget; DvbPmtFilter pmtFilter; QByteArray pmtSectionData; DvbSectionGenerator patGenerator; DvbSectionGenerator pmtGenerator; QByteArray buffer; QFile timeShiftFile; DvbOsd dvbOsd; private: void processData(const char data[188]); }; #endif /* DVBLIVEVIEW_P_H */ kaffeine-1.2.2/src/dvb/dvbscandialog.h0000644000175000017500000000447211552636277017252 0ustar lxuserlxuser/* * dvbscandialog.h * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBSCANDIALOG_H #define DVBSCANDIALOG_H #include #include #include class QCheckBox; class QProgressBar; class QTreeView; class KComboBox; class KLed; class DvbChannelModel; class DvbDevice; class DvbGradProgress; class DvbManager; class DvbPreviewChannel; class DvbPreviewChannelTableModel; class DvbScan; class DvbScanDialog : public KDialog { Q_OBJECT public: DvbScanDialog(DvbManager *manager_, QWidget *parent); ~DvbScanDialog(); private slots: void scanButtonClicked(bool checked); void dialogAccepted(); void foundChannels(const QList &channels); void scanFinished(); void updateStatus(); void addSelectedChannels(); void addFilteredChannels(); private: void setDevice(DvbDevice *newDevice); DvbManager *manager; DvbChannelModel *channelModel; KComboBox *sourceBox; QPushButton *scanButton; QProgressBar *progressBar; DvbGradProgress *signalWidget; DvbGradProgress *snrWidget; KLed *tunedLed; QCheckBox *ftaCheckBox; QCheckBox *radioCheckBox; QCheckBox *tvCheckBox; QCheckBox *providerCheckBox; QStringList providers; KComboBox *providerBox; DvbPreviewChannelTableModel *previewModel; QTreeView *scanResultsView; DvbDevice *device; QTimer statusTimer; bool isLive; DvbScan *internal; }; class DvbGradProgress : public QLabel { public: explicit DvbGradProgress(QWidget *parent); ~DvbGradProgress(); void setValue(int value_); protected: void paintEvent(QPaintEvent *event); private: int value; }; #endif /* DVBSCANDIALOG_H */ kaffeine-1.2.2/src/dvb/dvbbackenddevice.h0000644000175000017500000001021011552636277017700 0ustar lxuserlxuser/* * dvbbackenddevice.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBBACKENDDEVICE_H #define DVBBACKENDDEVICE_H #include class DvbTransponder; class DvbDeviceBase { public: enum TransmissionType { DvbC = (1 << 0), DvbS = (1 << 1), DvbS2 = (1 << 4), DvbT = (1 << 2), Atsc = (1 << 3) }; Q_DECLARE_FLAGS(TransmissionTypes, TransmissionType) enum Capability { DvbTModulationAuto = (1 << 0), DvbTFecAuto = (1 << 1), DvbTTransmissionModeAuto = (1 << 2), DvbTGuardIntervalAuto = (1 << 3) }; Q_DECLARE_FLAGS(Capabilities, Capability) enum SecTone { ToneOff = 0, ToneOn = 1 }; enum SecVoltage { Voltage13V = 0, Voltage18V = 1 }; enum SecBurst { BurstMiniA = 0, BurstMiniB = 1 }; protected: DvbDeviceBase() { } virtual ~DvbDeviceBase() { } }; class DvbDataBuffer { public: DvbDataBuffer(char *data_, int bufferSize_) : data(data_), bufferSize(bufferSize_) { } ~DvbDataBuffer() { } char *data; int dataSize; // must be a multiple of 188 int bufferSize; // must be a multiple of 188 }; class DvbPidFilter { public: virtual void processData(const char data[188]) = 0; protected: DvbPidFilter() { } virtual ~DvbPidFilter() { } }; class DvbSectionFilter { public: // the crc is either valid or has appeared at least twice virtual void processSection(const char *data, int size) = 0; protected: DvbSectionFilter() { } virtual ~DvbSectionFilter() { } }; class DvbFrontendDevice : public DvbDeviceBase { public: virtual bool addPidFilter(int pid, DvbPidFilter *filter) = 0; virtual bool addSectionFilter(int pid, DvbSectionFilter *filter) = 0; virtual void removePidFilter(int pid, DvbPidFilter *filter) = 0; virtual void removeSectionFilter(int pid, DvbSectionFilter *filter) = 0; // these two functions are thread-safe virtual DvbDataBuffer getBuffer() = 0; virtual void writeBuffer(const DvbDataBuffer &dataBuffer) = 0; protected: DvbFrontendDevice() { } virtual ~DvbFrontendDevice() { } }; class DvbBackendDevice : public DvbDeviceBase { public: virtual QString getDeviceId() = 0; virtual QString getFrontendName() = 0; virtual TransmissionTypes getTransmissionTypes() = 0; virtual Capabilities getCapabilities() = 0; virtual void setFrontendDevice(DvbFrontendDevice *frontend) = 0; virtual void setDeviceEnabled(bool enabled) = 0; virtual bool acquire() = 0; virtual bool setTone(SecTone tone) = 0; virtual bool setVoltage(SecVoltage voltage) = 0; virtual bool sendMessage(const char *message, int length) = 0; virtual bool sendBurst(SecBurst burst) = 0; virtual bool tune(const DvbTransponder &transponder) = 0; // discards obsolete data virtual bool isTuned() = 0; virtual int getSignal() = 0; // 0 - 100 [%] or -1 = not supported virtual int getSnr() = 0; // 0 - 100 [%] or -1 = not supported virtual bool addPidFilter(int pid) = 0; virtual void removePidFilter(int pid) = 0; virtual void startDescrambling(const QByteArray &pmtSectionData) = 0; virtual void stopDescrambling(int serviceId) = 0; virtual void release() = 0; protected: DvbBackendDevice() { } virtual ~DvbBackendDevice() { } }; /* class DvbXXXDeviceManager : public QObject { Q_OBJECT public: DvbXXXDeviceManager(); ~DvbXXXDeviceManager(); public slots: void doColdPlug(); signals: void requestBuiltinDeviceManager(QObject *&builtinDeviceManager); void deviceAdded(DvbBackendDevice *device); void deviceRemoved(DvbBackendDevice *device); }; */ #endif /* DVBBACKENDDEVICE_H */ kaffeine-1.2.2/src/dvb/dvbrecordingdialog_p.h0000644000175000017500000000672511552636277020624 0ustar lxuserlxuser/* * dvbrecordingdialog_p.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBRECORDINGDIALOG_P_H #define DVBRECORDINGDIALOG_P_H #include #include "../tablemodel.h" #include "dvbrecording.h" class QCheckBox; class KComboBox; class KLineEdit; class DateTimeEdit; class DurationEdit; class DvbRecordingLessThan { public: DvbRecordingLessThan() { // specify each column exactly once sortOrder[0] = BeginAscending; sortOrder[1] = ChannelAscending; sortOrder[2] = NameAscending; sortOrder[3] = DurationAscending; } ~DvbRecordingLessThan() { } enum SortOrder { NameAscending = 0, NameDescending = 1, ChannelAscending = 2, ChannelDescending = 3, BeginAscending = 4, BeginDescending = 5, DurationAscending = 6, DurationDescending = 7 }; SortOrder getSortOrder() const { return sortOrder[0]; } void setSortOrder(SortOrder sortOrder_); bool operator()(const DvbSharedRecording &x, const DvbSharedRecording &y) const; private: SortOrder sortOrder[4]; }; class DvbRecordingTableModelHelper { public: DvbRecordingTableModelHelper() { } ~DvbRecordingTableModelHelper() { } typedef DvbSharedRecording ItemType; typedef DvbRecordingLessThan LessThanType; int columnCount() const { return 4; } bool filterAcceptsItem(const DvbSharedRecording &recording) const { Q_UNUSED(recording) return true; } }; class DvbRecordingTableModel : public TableModel { Q_OBJECT public: explicit DvbRecordingTableModel(QObject *parent); ~DvbRecordingTableModel(); void setRecordingModel(DvbRecordingModel *recordingModel_); QVariant headerData(int section, Qt::Orientation orientation, int role) const; QVariant data(const QModelIndex &index, int role) const; void sort(int column, Qt::SortOrder order); private slots: void recordingAdded(const DvbSharedRecording &recording); void recordingAboutToBeUpdated(const DvbSharedRecording &recording); void recordingUpdated(const DvbSharedRecording &recording); void recordingRemoved(const DvbSharedRecording &recording); private: DvbRecordingModel *recordingModel; }; class DvbRecordingEditor : public KDialog { Q_OBJECT public: DvbRecordingEditor(DvbManager *manager_, const DvbSharedRecording &recording_, QWidget *parent); ~DvbRecordingEditor(); private slots: void beginChanged(const QDateTime &begin); void durationChanged(const QTime &duration); void endChanged(const QDateTime &end); void repeatNever(); void repeatDaily(); void checkValidity(); private: void accept(); DvbManager *manager; DvbSharedRecording recording; KLineEdit *nameEdit; KComboBox *channelBox; DateTimeEdit *beginEdit; DurationEdit *durationEdit; DateTimeEdit *endEdit; QCheckBox *dayCheckBoxes[7]; }; #endif /* DVBRECORDINGDIALOG_P_H */ kaffeine-1.2.2/src/dvb/dvbepg_p.h0000644000175000017500000000567311552636277016244 0ustar lxuserlxuser/* * dvbepg_p.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBEPG_P_H #define DVBEPG_P_H #include "dvbbackenddevice.h" #include "dvbepg.h" class DvbEpgFilter : public QSharedData, public DvbSectionFilter { public: DvbEpgFilter(DvbManager *manager, DvbDevice *device_, const DvbSharedChannel &channel); ~DvbEpgFilter(); DvbDevice *device; QString source; DvbTransponder transponder; private: Q_DISABLE_COPY(DvbEpgFilter) static QTime bcdToTime(int bcd); void processSection(const char *data, int size); DvbChannelModel *channelModel; DvbEpgModel *epgModel; }; class AtscEpgMgtFilter : public DvbSectionFilter { public: explicit AtscEpgMgtFilter(AtscEpgFilter *epgFilter_) : epgFilter(epgFilter_) { } ~AtscEpgMgtFilter() { } private: Q_DISABLE_COPY(AtscEpgMgtFilter) void processSection(const char *data, int size); AtscEpgFilter *epgFilter; }; class AtscEpgEitFilter : public DvbSectionFilter { public: explicit AtscEpgEitFilter(AtscEpgFilter *epgFilter_) : epgFilter(epgFilter_) { } ~AtscEpgEitFilter() { } private: Q_DISABLE_COPY(AtscEpgEitFilter) void processSection(const char *data, int size); AtscEpgFilter *epgFilter; }; class AtscEpgEttFilter : public DvbSectionFilter { public: explicit AtscEpgEttFilter(AtscEpgFilter *epgFilter_) : epgFilter(epgFilter_) { } ~AtscEpgEttFilter() { } private: Q_DISABLE_COPY(AtscEpgEttFilter) void processSection(const char *data, int size); AtscEpgFilter *epgFilter; }; class AtscEpgFilter : public QSharedData { friend class AtscEpgMgtFilter; friend class AtscEpgEitFilter; friend class AtscEpgEttFilter; public: AtscEpgFilter(DvbManager *manager, DvbDevice *device_, const DvbSharedChannel &channel); ~AtscEpgFilter(); DvbDevice *device; QString source; DvbTransponder transponder; private: Q_DISABLE_COPY(AtscEpgFilter) void processMgtSection(const char *data, int size); void processEitSection(const char *data, int size); void processEttSection(const char *data, int size); DvbChannelModel *channelModel; DvbEpgModel *epgModel; AtscEpgMgtFilter mgtFilter; AtscEpgEitFilter eitFilter; AtscEpgEttFilter ettFilter; QList eitPids; QList ettPids; QMap epgEntries; }; #endif /* DVBEPG_P_H */ kaffeine-1.2.2/src/dvb/dvbchanneldialog.h0000644000175000017500000000732311552636277017734 0ustar lxuserlxuser/* * dvbchanneldialog.h * * Copyright (C) 2007-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCHANNELDIALOG_H #define DVBCHANNELDIALOG_H #include #include "../tablemodel.h" #include "dvbchannel.h" class KAction; class DvbChannelLessThan { public: DvbChannelLessThan() : sortOrder(ChannelNameAscending) { } ~DvbChannelLessThan() { } enum SortOrder { ChannelNameAscending, ChannelNameDescending, ChannelNumberAscending, ChannelNumberDescending }; SortOrder getSortOrder() const { return sortOrder; } void setSortOrder(SortOrder sortOrder_) { sortOrder = sortOrder_; } bool operator()(const DvbSharedChannel &x, const DvbSharedChannel &y) const; private: SortOrder sortOrder; }; class DvbChannelTableModelHelper { public: DvbChannelTableModelHelper() { } ~DvbChannelTableModelHelper() { } typedef DvbSharedChannel ItemType; typedef DvbChannelLessThan LessThanType; int columnCount() const { return 2; } bool filterAcceptsItem(const DvbSharedChannel &channel) const { // Qt::CaseSensitive == no filtering return ((filter.caseSensitivity() == Qt::CaseSensitive) || (filter.indexIn(channel->name) >= 0)); } QStringMatcher filter; private: Q_DISABLE_COPY(DvbChannelTableModelHelper) }; class DvbChannelTableModel : public TableModel { Q_OBJECT public: explicit DvbChannelTableModel(QObject *parent); ~DvbChannelTableModel(); void setChannelModel(DvbChannelModel *channelModel_); DvbChannelModel *getChannelModel() const { return channelModel; } QVariant headerData(int section, Qt::Orientation orientation, int role) const; QVariant data(const QModelIndex &index, int role) const; void sort(int column, Qt::SortOrder order); Qt::ItemFlags flags(const QModelIndex &index) const; QMimeData *mimeData(const QModelIndexList &indexes) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); public slots: void setFilter(const QString &filter); signals: void checkChannelDragAndDrop(bool *ok); private slots: void channelAdded(const DvbSharedChannel &channel); void channelAboutToBeUpdated(const DvbSharedChannel &channel); void channelUpdated(const DvbSharedChannel &channel); void channelRemoved(const DvbSharedChannel &channel); private: void customEvent(QEvent *event); DvbChannelModel *channelModel; QList dndSelectedChannels; int dndInsertBeforeNumber; bool dndEventPosted; }; class DvbChannelView : public QTreeView { Q_OBJECT public: explicit DvbChannelView(QWidget *parent); ~DvbChannelView(); KAction *addEditAction(); KAction *addRemoveAction(); void setModel(DvbChannelTableModel *tableModel_); public slots: void checkChannelDragAndDrop(bool *ok); void editChannel(); void removeChannel(); void removeAllChannels(); private: void setModel(QAbstractItemModel *) { } DvbChannelTableModel *tableModel; }; #endif /* DVBCHANNELDIALOG_H */ kaffeine-1.2.2/src/dvb/dvbrecording.cpp0000644000175000017500000003434111552636277017453 0ustar lxuserlxuser/* * dvbrecording.cpp * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbrecording.h" #include "dvbrecording_p.h" #include #include #include #include #include "../ensurenopendingoperation.h" #include "dvbdevice.h" #include "dvbmanager.h" bool DvbRecording::validate() { if (!name.isEmpty() && channel.isValid() && begin.isValid() && (begin.timeSpec() == Qt::UTC) && duration.isValid()) { // the seconds and milliseconds aren't visible --> set them to zero begin = begin.addMSecs(-(QTime().msecsTo(begin.time()) % 60000)); end = begin.addSecs(QTime().secsTo(duration)); repeat &= ((1 << 7) - 1); return true; } return false; } DvbRecordingModel::DvbRecordingModel(DvbManager *manager_, QObject *parent) : QObject(parent), manager(manager_), hasPendingOperation(false) { sqlInit("RecordingSchedule", QStringList() << "Name" << "Channel" << "Begin" << "Duration" << "Repeat"); // we regularly recheck the status of the recordings // this way we can keep retrying if the device was busy / tuning failed startTimer(5000); // compatibility code QFile file(KStandardDirs::locateLocal("appdata", "recordings.dvb")); if (!file.exists()) { return; } if (!file.open(QIODevice::ReadOnly)) { kWarning() << "cannot open file" << file.fileName(); return; } DvbChannelModel *channelModel = manager->getChannelModel(); QDataStream stream(&file); stream.setVersion(QDataStream::Qt_4_4); int version; stream >> version; if (version != 0x4d848730) { // the older version didn't store a magic number ... file.seek(0); version = 0; } while (!stream.atEnd()) { DvbRecording recording; QString channelName; stream >> channelName; recording.channel = channelModel->findChannelByName(channelName); stream >> recording.begin; recording.begin = recording.begin.toUTC(); stream >> recording.duration; QDateTime end; stream >> end; if (version != 0) { stream >> recording.repeat; } if (stream.status() != QDataStream::Ok) { kWarning() << "invalid recordings in file" << file.fileName(); break; } addRecording(recording); } if (!file.remove()) { kWarning() << "cannot remove file" << file.fileName(); } } DvbRecordingModel::~DvbRecordingModel() { if (hasPendingOperation) { kWarning() << "illegal recursive call"; } sqlFlush(); } bool DvbRecordingModel::hasRecordings() const { return !recordings.isEmpty(); } bool DvbRecordingModel::hasActiveRecordings() const { return !recordingFiles.isEmpty(); } DvbSharedRecording DvbRecordingModel::findRecordingByKey(const SqlKey &sqlKey) const { return recordings.value(sqlKey); } QMap DvbRecordingModel::getRecordings() const { return recordings; } DvbSharedRecording DvbRecordingModel::addRecording(DvbRecording &recording) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return DvbSharedRecording(); } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (!recording.validate()) { kWarning() << "invalid recording"; return DvbSharedRecording(); } recording.setSqlKey(sqlFindFreeKey(recordings)); if (!updateStatus(recording)) { return DvbSharedRecording(); } DvbSharedRecording newRecording(new DvbRecording(recording)); recordings.insert(*newRecording, newRecording); sqlInsert(*newRecording); emit recordingAdded(newRecording); return newRecording; } void DvbRecordingModel::updateRecording(DvbSharedRecording recording, DvbRecording &modifiedRecording) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (!recording.isValid() || (recordings.value(*recording) != recording) || !modifiedRecording.validate()) { kWarning() << "invalid recording"; return; } modifiedRecording.setSqlKey(*recording); if (!updateStatus(modifiedRecording)) { recordings.remove(*recording); recordingFiles.remove(*recording); sqlRemove(*recording); emit recordingRemoved(recording); return; } emit recordingAboutToBeUpdated(recording); *const_cast(recording.constData()) = modifiedRecording; sqlUpdate(*recording); emit recordingUpdated(recording); } void DvbRecordingModel::removeRecording(DvbSharedRecording recording) { if (hasPendingOperation) { kWarning() << "illegal recursive call"; return; } EnsureNoPendingOperation ensureNoPendingOperation(hasPendingOperation); if (!recording.isValid() || (recordings.value(*recording) != recording)) { kWarning() << "invalid recording"; return; } recordings.remove(*recording); recordingFiles.remove(*recording); sqlRemove(*recording); emit recordingRemoved(recording); } void DvbRecordingModel::timerEvent(QTimerEvent *event) { Q_UNUSED(event) QDateTime currentDateTime = QDateTime::currentDateTime().toUTC(); foreach (const DvbSharedRecording &recording, recordings) { if (recording->end <= currentDateTime) { DvbRecording modifiedRecording = *recording; updateRecording(recording, modifiedRecording); } } foreach (const DvbSharedRecording &recording, recordings) { if ((recording->status != DvbRecording::Recording) && (recording->begin <= currentDateTime)) { DvbRecording modifiedRecording = *recording; updateRecording(recording, modifiedRecording); } } } void DvbRecordingModel::bindToSqlQuery(SqlKey sqlKey, QSqlQuery &query, int index) const { DvbSharedRecording recording = recordings.value(sqlKey); if (!recording.isValid()) { kError() << "invalid recording"; return; } query.bindValue(index++, recording->name); query.bindValue(index++, recording->channel->name); query.bindValue(index++, recording->begin.toString(Qt::ISODate) + 'Z'); query.bindValue(index++, recording->duration.toString(Qt::ISODate)); query.bindValue(index++, recording->repeat); } bool DvbRecordingModel::insertFromSqlQuery(SqlKey sqlKey, const QSqlQuery &query, int index) { DvbRecording *recording = new DvbRecording(); DvbSharedRecording newRecording(recording); recording->name = query.value(index++).toString(); recording->channel = manager->getChannelModel()->findChannelByName(query.value(index++).toString()); recording->begin = QDateTime::fromString(query.value(index++).toString(), Qt::ISODate).toUTC(); recording->duration = QTime::fromString(query.value(index++).toString(), Qt::ISODate); recording->repeat = query.value(index++).toInt(); if (recording->validate()) { recording->setSqlKey(sqlKey); recordings.insert(*newRecording, newRecording); return true; } return false; } bool DvbRecordingModel::updateStatus(DvbRecording &recording) { QDateTime currentDateTimeLocal = QDateTime::currentDateTime(); QDateTime currentDateTime = currentDateTimeLocal.toUTC(); if (recording.end <= currentDateTime) { if (recording.repeat == 0) { return false; } recordingFiles.remove(recording); // take care of DST switches QDateTime beginLocal = recording.begin.toLocalTime(); QDateTime endLocal = recording.end.toLocalTime(); int days = endLocal.daysTo(currentDateTimeLocal); if (endLocal.addDays(days) <= currentDateTimeLocal) { ++days; } // QDate::dayOfWeek() and our dayOfWeek differ by one int dayOfWeek = (beginLocal.date().dayOfWeek() - 1 + days); for (int j = 0; j < 7; ++j) { if ((recording.repeat & (1 << (dayOfWeek % 7))) != 0) { break; } ++days; ++dayOfWeek; } recording.begin = recording.begin.addDays(days); recording.end = recording.end.addDays(days); } if (recording.begin <= currentDateTime) { QExplicitlySharedDataPointer recordingFile = recordingFiles.value(recording); if (recordingFile.constData() == NULL) { recordingFile = new DvbRecordingFile(manager); recordingFiles.insert(recording, recordingFile); } if (recordingFile->start(recording)) { recording.status = DvbRecording::Recording; } else { recording.status = DvbRecording::Error; } } else { recording.status = DvbRecording::Inactive; recordingFiles.remove(recording); } return true; } DvbRecordingFile::DvbRecordingFile(DvbManager *manager_) : manager(manager_), device(NULL), pmtValid(false) { connect(&pmtFilter, SIGNAL(pmtSectionChanged(QByteArray)), this, SLOT(pmtSectionChanged(QByteArray))); connect(&patPmtTimer, SIGNAL(timeout()), this, SLOT(insertPatPmt())); } DvbRecordingFile::~DvbRecordingFile() { stop(); } bool DvbRecordingFile::start(const DvbRecording &recording) { if (!file.isOpen()) { QString folder = manager->getRecordingFolder(); QString path = folder + '/' + QString(recording.name).replace('/', '_'); for (int attempt = 0; attempt < 100; ++attempt) { if (attempt == 0) { file.setFileName(path + ".m2t"); } else { file.setFileName(path + '-' + QString::number(attempt) + ".m2t"); } if (file.exists()) { continue; } if (file.open(QIODevice::WriteOnly)) { break; } else { kWarning() << "cannot open file" << file.fileName(); } if ((attempt == 0) && !QDir(folder).exists()) { if (QDir().mkpath(folder)) { attempt = -1; continue; } else { kWarning() << "cannot create folder" << folder; } } if (folder != QDir::homePath()) { folder = QDir::homePath(); path = folder + '/' + QString(recording.name).replace('/', '_'); attempt = -1; continue; } break; } if (!file.isOpen()) { kWarning() << "cannot open file" << file.fileName(); return false; } } if (device == NULL) { channel = recording.channel; device = manager->requestDevice(channel->source, channel->transponder, DvbManager::Prioritized); if (device == NULL) { kWarning() << "cannot find a suitable device"; return false; } connect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); pmtFilter.setProgramNumber(channel->serviceId); device->addSectionFilter(channel->pmtPid, &pmtFilter); pmtSectionData = channel->pmtSectionData; patGenerator.initPat(channel->transportStreamId, channel->serviceId, channel->pmtPid); if (channel->isScrambled && !pmtSectionData.isEmpty()) { device->startDescrambling(pmtSectionData, this); } } return true; } void DvbRecordingFile::stop() { if (device != NULL) { if (channel->isScrambled && !pmtSectionData.isEmpty()) { device->stopDescrambling(pmtSectionData, this); } foreach (int pid, pids) { device->removePidFilter(pid, this); } device->removeSectionFilter(channel->pmtPid, &pmtFilter); disconnect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); manager->releaseDevice(device, DvbManager::Prioritized); device = NULL; } pmtValid = false; patPmtTimer.stop(); patGenerator.reset(); pmtGenerator.reset(); pmtSectionData.clear(); pids.clear(); buffers.clear(); file.close(); channel = DvbSharedChannel(); } void DvbRecordingFile::deviceStateChanged() { if (device->getDeviceState() == DvbDevice::DeviceReleased) { foreach (int pid, pids) { device->removePidFilter(pid, this); } device->removeSectionFilter(channel->pmtPid, &pmtFilter); disconnect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); if (channel->isScrambled && !pmtSectionData.isEmpty()) { device->stopDescrambling(pmtSectionData, this); } device = manager->requestDevice(channel->source, channel->transponder, DvbManager::Prioritized); if (device != NULL) { connect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); device->addSectionFilter(channel->pmtPid, &pmtFilter); foreach (int pid, pids) { device->addPidFilter(pid, this); } if (channel->isScrambled && !pmtSectionData.isEmpty()) { device->startDescrambling(pmtSectionData, this); } } else { stop(); } } } void DvbRecordingFile::pmtSectionChanged(const QByteArray &pmtSectionData_) { pmtSectionData = pmtSectionData_; DvbPmtSection pmtSection(pmtSectionData); DvbPmtParser pmtParser(pmtSection); QSet newPids; if (pmtParser.videoPid != -1) { newPids.insert(pmtParser.videoPid); } for (int i = 0; i < pmtParser.audioPids.size(); ++i) { newPids.insert(pmtParser.audioPids.at(i).first); } for (int i = 0; i < pmtParser.subtitlePids.size(); ++i) { newPids.insert(pmtParser.subtitlePids.at(i).first); } if (pmtParser.teletextPid != -1) { newPids.insert(pmtParser.teletextPid); } for (int i = 0; i < pids.size(); ++i) { int pid = pids.at(i); if (!newPids.remove(pid)) { device->removePidFilter(pid, this); pids.removeAt(i); --i; } } foreach (int pid, newPids) { device->addPidFilter(pid, this); pids.append(pid); } pmtGenerator.initPmt(channel->pmtPid, pmtSection, pids); if (!pmtValid) { pmtValid = true; file.write(patGenerator.generatePackets()); file.write(pmtGenerator.generatePackets()); foreach (const QByteArray &buffer, buffers) { file.write(buffer); } buffers.clear(); patPmtTimer.start(500); } insertPatPmt(); if (channel->isScrambled) { device->startDescrambling(pmtSectionData, this); } } void DvbRecordingFile::insertPatPmt() { if (!pmtValid) { pmtSectionChanged(channel->pmtSectionData); return; } file.write(patGenerator.generatePackets()); file.write(pmtGenerator.generatePackets()); } void DvbRecordingFile::processData(const char data[188]) { if (!pmtValid) { if (!patPmtTimer.isActive()) { patPmtTimer.start(1000); QByteArray nextBuffer; nextBuffer.reserve(348 * 188); buffers.append(nextBuffer); } QByteArray &buffer = buffers.last(); buffer.append(data, 188); if (buffer.size() >= (348 * 188)) { QByteArray nextBuffer; nextBuffer.reserve(348 * 188); buffers.append(nextBuffer); } return; } file.write(data, 188); } kaffeine-1.2.2/src/dvb/dvbchannel.h0000644000175000017500000001035511552636277016553 0ustar lxuserlxuser/* * dvbchannel.h * * Copyright (C) 2007-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCHANNEL_H #define DVBCHANNEL_H #include #include "../shareddata.h" #include "../sqlinterface.h" #include "dvbtransponder.h" class DvbChannel : public SharedData, public SqlKey { public: DvbChannel() : number(-1), networkId(-1), transportStreamId(-1), pmtPid(-1), serviceId(-1), audioPid(-1), hasVideo(false), isScrambled(false) { } ~DvbChannel() { } // checks that all variables are ok // updates 'pmtSectionData' if 'serviceId' is valid // (else updates 'serviceId' if 'pmtSectionData' is valid) // 'sqlKey' is ignored bool validate(); QString name; int number; QString source; DvbTransponder transponder; int networkId; // may be -1 (not present), atsc meaning: source id int transportStreamId; int pmtPid; QByteArray pmtSectionData; int serviceId; int audioPid; // may be -1 (not present), doesn't have to be present in the pmt section bool hasVideo; bool isScrambled; }; typedef ExplicitlySharedDataPointer DvbSharedChannel; Q_DECLARE_TYPEINFO(DvbSharedChannel, Q_MOVABLE_TYPE); class DvbChannelId { public: explicit DvbChannelId(const DvbChannel *channel_) : channel(channel_) { } explicit DvbChannelId(const DvbSharedChannel &channel_) : channel(channel_.constData()) { } ~DvbChannelId() { } // compares channels by transmission type and // ( dvb) 'source', 'networkId', 'transportStreamId', 'serviceId' // (atsc) 'source', 'transponder', 'networkId' bool operator==(const DvbChannelId &other) const; bool operator!=(const DvbChannelId &other) const { return !(*this == other); } friend uint qHash(const DvbChannelId &channel); private: const DvbChannel *channel; }; class DvbChannelModel : public QObject, private SqlInterface { Q_OBJECT public: explicit DvbChannelModel(QObject *parent); ~DvbChannelModel(); static DvbChannelModel *createSqlModel(QObject *parent); // channel names and numbers are guaranteed to be unique within this model QMap getChannels() const; DvbSharedChannel findChannelByName(const QString &channelName) const; DvbSharedChannel findChannelByNumber(int channelNumber) const; DvbSharedChannel findChannelById(const DvbChannel &channel) const; void cloneFrom(DvbChannelModel *other); void addChannel(DvbChannel &channel); void updateChannel(DvbSharedChannel channel, DvbChannel &modifiedChannel); void removeChannel(DvbSharedChannel channel); void dndMoveChannels(const QList &selectedChannels, int insertBeforeNumber); signals: void channelAdded(const DvbSharedChannel &channel); // if this is the main model, updating doesn't change the channel pointer // (modifies existing content); otherwise the channel pointer may be updated void channelAboutToBeUpdated(const DvbSharedChannel &channel); void channelUpdated(const DvbSharedChannel &channel); void channelRemoved(const DvbSharedChannel &channel); private: void bindToSqlQuery(SqlKey sqlKey, QSqlQuery &query, int index) const; bool insertFromSqlQuery(SqlKey sqlKey, const QSqlQuery &query, int index); QString extractBaseName(const QString &name) const; QString findNextFreeChannelName(const QString &name) const; int findNextFreeChannelNumber(int number) const; QMap channelNames; QMap channelNumbers; QMultiHash channelIds; QMap channels; // only used for the sql model bool hasPendingOperation; bool isSqlModel; }; #endif /* DVBCHANNEL_H */ kaffeine-1.2.2/src/dvb/dvbliveview.cpp0000644000175000017500000003302511552636277017327 0ustar lxuserlxuser/* * dvbliveview.cpp * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbliveview.h" #include "dvbliveview_p.h" #include #include #include #include #include #include "../mediawidget.h" #include "dvbdevice.h" #include "dvbmanager.h" void DvbOsd::init(OsdLevel level_, const QString &channelName_, const QList &epgEntries) { level = level_; channelName = channelName_; if (epgEntries.size() >= 1) { firstEntry = *epgEntries.at(0); } if (epgEntries.size() >= 2) { secondEntry = *epgEntries.at(1); } } QPixmap DvbOsd::paintOsd(QRect &rect, const QFont &font, Qt::LayoutDirection) { QFont osdFont = font; osdFont.setPointSize(20); QString timeString = KGlobal::locale()->formatTime(QTime::currentTime()); QString entryString; int elapsedTime = 0; int totalTime = 0; if (firstEntry.channel.isValid()) { entryString = KGlobal::locale()->formatTime(firstEntry.begin.toLocalTime().time()) + ' ' + firstEntry.title; elapsedTime = firstEntry.begin.secsTo(QDateTime::currentDateTime()); totalTime = QTime().secsTo(firstEntry.duration); } if ((level == ShortOsd) && secondEntry.channel.isValid()) { entryString = entryString + '\n' + KGlobal::locale()->formatTime(secondEntry.begin.toLocalTime().time()) + ' ' + secondEntry.title; } int lineHeight = QFontMetrics(osdFont).height(); QRect headerRect(5, 0, rect.width() - 10, lineHeight); QRect entryRect; if (level == ShortOsd) { entryRect = QRect(5, lineHeight + 9, rect.width() - 10, 2 * lineHeight); rect.setHeight(entryRect.bottom() + 1); } else { entryRect = QRect(5, lineHeight + 9, rect.width() - 10, lineHeight); } QPixmap pixmap(rect.size()); { QPainter painter(&pixmap); painter.fillRect(rect, Qt::black); painter.setFont(osdFont); painter.setPen(Qt::white); painter.drawText(headerRect, Qt::AlignLeft, channelName); painter.drawText(headerRect, Qt::AlignRight, timeString); painter.fillRect(5, lineHeight + 2, rect.width() - 10, 5, Qt::gray); painter.fillRect(6, lineHeight + 3, rect.width() - 12, 3, Qt::black); if ((elapsedTime > 0) && (elapsedTime <= totalTime)) { int width = (((rect.width() - 12) * elapsedTime + (totalTime / 2)) / totalTime); painter.fillRect(6, lineHeight + 3, width, 3, Qt::green); } painter.drawText(entryRect, Qt::AlignLeft, entryString); if (level == LongOsd) { QRect boundingRect = entryRect; if (!firstEntry.subheading.isEmpty()) { painter.drawText(entryRect.x(), boundingRect.bottom() + 1, entryRect.width(), lineHeight, Qt::AlignLeft, firstEntry.subheading, &boundingRect); } if (!firstEntry.details.isEmpty()) { painter.drawText(entryRect.x(), boundingRect.bottom() + 1, entryRect.width(), rect.height() - boundingRect.bottom() - 1, Qt::AlignLeft | Qt::TextWordWrap, firstEntry.details, &boundingRect); } if (boundingRect.bottom() < rect.bottom()) { rect.setBottom(boundingRect.bottom()); } } } return pixmap; } void DvbLiveViewInternal::processData(const char data[188]) { buffer.append(data, 188); if (buffer.size() < (87 * 188)) { return; } if (!timeShiftFile.isOpen()) { mediaWidget->writeDvbData(buffer); } else { timeShiftFile.write(buffer); // FIXME avoid buffer reallocation } buffer.clear(); buffer.reserve(87 * 188); } DvbLiveView::DvbLiveView(DvbManager *manager_, QObject *parent) : QObject(parent), manager(manager_), device(NULL), videoPid(-1), audioPid(-1), subtitlePid(-1) { mediaWidget = manager->getMediaWidget(); osdWidget = mediaWidget->getOsdWidget(); internal = new DvbLiveViewInternal(); internal->mediaWidget = mediaWidget; connect(&internal->pmtFilter, SIGNAL(pmtSectionChanged(QByteArray)), this, SLOT(pmtSectionChanged(QByteArray))); connect(&patPmtTimer, SIGNAL(timeout()), this, SLOT(insertPatPmt())); connect(&osdTimer, SIGNAL(timeout()), this, SLOT(osdTimeout())); connect(mediaWidget, SIGNAL(changeDvbAudioChannel(int)), this, SLOT(changeAudioStream(int))); connect(mediaWidget, SIGNAL(changeDvbSubtitle(int)), this, SLOT(changeSubtitle(int))); connect(mediaWidget, SIGNAL(prepareDvbTimeShift()), this, SLOT(prepareTimeShift())); connect(mediaWidget, SIGNAL(startDvbTimeShift()), this, SLOT(startTimeShift())); connect(mediaWidget, SIGNAL(dvbStopped()), this, SLOT(liveStopped())); } DvbLiveView::~DvbLiveView() { delete internal; } const DvbSharedChannel &DvbLiveView::getChannel() const { return channel; } DvbDevice *DvbLiveView::getDevice() const { return device; } void DvbLiveView::playChannel(const DvbSharedChannel &channel_) { DvbDevice *newDevice = NULL; if ((channel.constData() != NULL) && (channel->source == channel_->source) && (channel->transponder.corresponds(channel_->transponder))) { newDevice = manager->requestDevice(channel->source, channel->transponder, DvbManager::Shared); } liveStopped(); channel = channel_; device = newDevice; if (device == NULL) { device = manager->requestDevice(channel->source, channel->transponder, DvbManager::Shared); } if (device == NULL) { channel = DvbSharedChannel(); mediaWidget->stop(); if (manager->getRecordingModel()->hasActiveRecordings()) { KMessageBox::sorry(manager->getParentWidget(), i18nc("@info", "All devices are used for recordings.")); } else { KMessageBox::information(manager->getParentWidget(), i18nc("@info", "No device found.")); } return; } mediaWidget->playDvb(channel->name); internal->pmtFilter.setProgramNumber(channel->serviceId); startDevice(); internal->patGenerator.initPat(channel->transportStreamId, channel->serviceId, channel->pmtPid); videoPid = -1; audioPid = channel->audioPid; subtitlePid = -1; pmtSectionChanged(channel->pmtSectionData); patPmtTimer.start(500); internal->buffer.reserve(87 * 188); QTimer::singleShot(2000, this, SLOT(showOsd())); } void DvbLiveView::toggleOsd() { if (channel.constData() == NULL) { return; } switch (internal->dvbOsd.level) { case DvbOsd::Off: internal->dvbOsd.init(DvbOsd::ShortOsd, QString("%1 - %2").arg(channel->number).arg(channel->name), manager->getEpgModel()->getCurrentNext(channel)); osdWidget->showObject(&internal->dvbOsd, 2500); osdTimer.start(2500); break; case DvbOsd::ShortOsd: internal->dvbOsd.level = DvbOsd::LongOsd; osdWidget->showObject(&internal->dvbOsd, -1); osdTimer.stop(); break; case DvbOsd::LongOsd: internal->dvbOsd.level = DvbOsd::Off; osdWidget->hideObject(); osdTimer.stop(); break; } } void DvbLiveView::pmtSectionChanged(const QByteArray &pmtSectionData) { internal->pmtSectionData = pmtSectionData; DvbPmtParser pmtParser(DvbPmtSection(internal->pmtSectionData)); videoPid = pmtParser.videoPid; for (int i = 0;; ++i) { if (i == pmtParser.audioPids.size()) { if (i > 0) { audioPid = pmtParser.audioPids.at(0).first; } else { audioPid = -1; } break; } if (pmtParser.audioPids.at(i).first == audioPid) { break; } } for (int i = 0;; ++i) { if (i == pmtParser.subtitlePids.size()) { subtitlePid = -1; break; } if (pmtParser.subtitlePids.at(i).first == subtitlePid) { break; } } updatePids(true); if (channel->isScrambled) { device->startDescrambling(internal->pmtSectionData, this); } if (internal->timeShiftFile.isOpen()) { return; } QStringList audioChannels; audioPids.clear(); for (int i = 0; i < pmtParser.audioPids.size(); ++i) { const QPair &it = pmtParser.audioPids.at(i); if (!it.second.isEmpty()) { audioChannels.append(it.second); } else { audioChannels.append(QString::number(it.first)); } audioPids.append(it.first); } mediaWidget->updateDvbAudioChannels(audioChannels, audioPids.indexOf(audioPid)); QStringList subtitles; subtitlePids.clear(); for (int i = 0; i < pmtParser.subtitlePids.size(); ++i) { const QPair &it = pmtParser.subtitlePids.at(i); if (!it.second.isEmpty()) { subtitles.append(it.second); } else { subtitles.append(QString::number(it.first)); } subtitlePids.append(it.first); } mediaWidget->updateDvbSubtitles(subtitles, subtitlePids.indexOf(subtitlePid)); } void DvbLiveView::insertPatPmt() { internal->buffer.append(internal->patGenerator.generatePackets()); internal->buffer.append(internal->pmtGenerator.generatePackets()); } void DvbLiveView::deviceStateChanged() { switch (device->getDeviceState()) { case DvbDevice::DeviceReleased: stopDevice(); device = manager->requestDevice(channel->source, channel->transponder, DvbManager::Shared); if (device != NULL) { startDevice(); } else { mediaWidget->stop(); osdWidget->showText(i18nc("message box", "No available device found."), 2500); } break; case DvbDevice::DeviceIdle: case DvbDevice::DeviceRotorMoving: case DvbDevice::DeviceTuning: case DvbDevice::DeviceTuned: break; } } void DvbLiveView::changeAudioStream(int index) { audioPid = audioPids.at(index); updatePids(); } void DvbLiveView::changeSubtitle(int index) { if (index < 0) { subtitlePid = -1; } else { subtitlePid = subtitlePids.at(index); } updatePids(); } void DvbLiveView::prepareTimeShift() { internal->timeShiftFile.setFileName(manager->getTimeShiftFolder() + "/TimeShift-" + QDateTime::currentDateTime().toString("yyyyMMddThhmmss") + ".m2t"); if (internal->timeShiftFile.exists() || !internal->timeShiftFile.open(QIODevice::WriteOnly)) { kWarning() << "cannot open file" << internal->timeShiftFile.fileName(); internal->timeShiftFile.setFileName(QDir::homePath() + "/TimeShift-" + QDateTime::currentDateTime().toString("yyyyMMddThhmmss") + ".m2t"); if (internal->timeShiftFile.exists() || !internal->timeShiftFile.open(QIODevice::WriteOnly)) { kWarning() << "cannot open file" << internal->timeShiftFile.fileName(); mediaWidget->stop(); return; } } updatePids(); // don't allow changes after starting time shift mediaWidget->updateDvbAudioChannels(QStringList(), 0); mediaWidget->updateDvbSubtitles(QStringList(), 0); } void DvbLiveView::startTimeShift() { mediaWidget->play(internal->timeShiftFile.fileName()); } void DvbLiveView::showOsd() { if (internal->dvbOsd.level == DvbOsd::Off) { toggleOsd(); } } void DvbLiveView::osdTimeout() { internal->dvbOsd.level = DvbOsd::Off; osdTimer.stop(); } void DvbLiveView::liveStopped() { if (device != NULL) { stopDevice(); manager->releaseDevice(device, DvbManager::Shared); device = NULL; } channel = DvbSharedChannel(); pids.clear(); patPmtTimer.stop(); osdTimer.stop(); internal->pmtSectionData.clear(); internal->patGenerator = DvbSectionGenerator(); internal->pmtGenerator = DvbSectionGenerator(); internal->buffer.clear(); internal->timeShiftFile.close(); internal->dvbOsd.init(DvbOsd::Off, QString(), QList()); osdWidget->hideObject(); } void DvbLiveView::startDevice() { foreach (int pid, pids) { device->addPidFilter(pid, internal); } device->addSectionFilter(channel->pmtPid, &internal->pmtFilter); connect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); if (channel->isScrambled && !internal->pmtSectionData.isEmpty()) { device->startDescrambling(internal->pmtSectionData, this); } manager->getEpgModel()->startEventFilter(device, channel); } void DvbLiveView::stopDevice() { manager->getEpgModel()->stopEventFilter(device, channel); if (channel->isScrambled && !internal->pmtSectionData.isEmpty()) { device->stopDescrambling(internal->pmtSectionData, this); } foreach (int pid, pids) { device->removePidFilter(pid, internal); } device->removeSectionFilter(channel->pmtPid, &internal->pmtFilter); disconnect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); } void DvbLiveView::updatePids(bool forcePatPmtUpdate) { DvbPmtSection pmtSection(internal->pmtSectionData); DvbPmtParser pmtParser(pmtSection); QSet newPids; bool updatePatPmt = forcePatPmtUpdate; bool isTimeShifting = internal->timeShiftFile.isOpen(); if (videoPid != -1) { newPids.insert(videoPid); } if (!isTimeShifting) { if (audioPid != -1) { newPids.insert(audioPid); } } else { for (int i = 0; i < pmtParser.audioPids.size(); ++i) { newPids.insert(pmtParser.audioPids.at(i).first); } } if (!isTimeShifting) { if (subtitlePid != -1) { newPids.insert(subtitlePid); } } else { for (int i = 0; i < pmtParser.subtitlePids.size(); ++i) { newPids.insert(pmtParser.subtitlePids.at(i).first); } if (pmtParser.teletextPid != -1) { newPids.insert(pmtParser.teletextPid); } } for (int i = 0; i < pids.size(); ++i) { int pid = pids.at(i); if (!newPids.remove(pid)) { device->removePidFilter(pid, internal); pids.removeAt(i); updatePatPmt = true; --i; } } foreach (int pid, newPids) { device->addPidFilter(pid, internal); pids.append(pid); updatePatPmt = true; } if (updatePatPmt) { internal->pmtGenerator.initPmt(channel->pmtPid, pmtSection, pids); insertPatPmt(); } } kaffeine-1.2.2/src/dvb/dvbcam_linux.h0000644000175000017500000000715111552636277017122 0ustar lxuserlxuser/* * dvbcam_linux.h * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCAM_LINUX_H #define DVBCAM_LINUX_H #include #include class QSocketNotifier; class DvbLinuxCamService; class DvbPmtSection; class DvbLinuxCam : QObject { Q_OBJECT public: DvbLinuxCam(); ~DvbLinuxCam(); void startCa(const QString &path); void startDescrambling(const QByteArray &pmtSection); void stopDescrambling(int serviceId); void stopCa(); private slots: void pollModule(); void readyRead(); public: enum PendingCommand { ExpectingReply = (1 << 0), ResetCa = (1 << 1), SendCreateTransportConnection = (1 << 2), SendReceiveData = (1 << 3), SendPoll = (1 << 4), SendProfileEnquiry = (1 << 5), SendProfileChange = (1 << 6), SendApplicationInfoEnquiry = (1 << 7), SendCaInfoEnquiry = (1 << 8) }; Q_DECLARE_FLAGS(PendingCommands, PendingCommand) private: Q_DISABLE_COPY(DvbLinuxCam) enum TransportLayerTag { StatusByte = 0x80, ReceiveData = 0x81, CreateTransportConnection = 0x82, CreateTransportConnectionReply = 0x83, DataLast = 0xa0 }; enum { ConnectionId = 0x01, HeaderSize = 17 }; enum SessionLayerTag { OpenSessionRequest = 0x91, OpenSessionResponse = 0x92, SessionNumber = 0x90 }; enum Resources { ResourceManager = 0x00010041, ApplicationInformation = 0x00020041, ConditionalAccess = 0x00030041 }; enum SessionNumbers { ResourceManagerSession = 1, ApplicationInformationSession = 2, ConditionalAccessSession = 3 }; enum ApplicationLayerTag { ProfileEnquiry = 0x9f8010, ProfileReply = 0x9f8011, ProfileChange = 0x9f8012, ApplicationInfoEnquiry = 0x9f8020, ApplicationInfo = 0x9f8021, CaInfoEnquiry = 0x9f8030, CaInfo = 0x9f8031, CaPmt = 0x9f8032 }; enum CaPmtListManagement { Only = 0x03, Add = 0x04, Update = 0x05 }; enum CaPmtCommand { Descramble = 0x01, StopDescrambling = 0x04 }; bool detectSlot(); int decodeLength(const unsigned char *&data, int &size); void resize(int messageSize); void handleTransportLayer(const unsigned char *data, int size); void handleSessionLayer(const unsigned char *data, int size); void handleApplicationLayer(const unsigned char *data, int size); void handlePendingCommands(); void customEvent(QEvent *event); void sendCaPmt(const DvbPmtSection &pmtSection, CaPmtListManagement listManagement, CaPmtCommand command); void sendApplicationLayerMessage(ApplicationLayerTag tag, char *data, char *end); void sendSessionLayerMessage(SessionLayerTag tag, char *data, char *end); void sendTransportLayerMessage(TransportLayerTag tag, char *data, char *end); int caFd; int slot; QTimer pollTimer; QSocketNotifier *socketNotifier; PendingCommands pendingCommands; QByteArray message; char *messageData; bool ready; bool eventPosted; QMap services; }; Q_DECLARE_OPERATORS_FOR_FLAGS(DvbLinuxCam::PendingCommands) #endif /* DVBCAM_LINUX_H */ kaffeine-1.2.2/src/dvb/dvbtab.cpp0000644000175000017500000003202511552636277016242 0ustar lxuserlxuser/* * dvbtab.cpp * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbtab.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../mediawidget.h" #include "../osdwidget.h" #include "dvbchanneldialog.h" #include "dvbconfigdialog.h" #include "dvbepg.h" #include "dvbepgdialog.h" #include "dvbliveview.h" #include "dvbmanager.h" #include "dvbrecordingdialog.h" #include "dvbscandialog.h" class DvbTimeShiftCleaner : public QThread { public: explicit DvbTimeShiftCleaner(QObject *parent) : QThread(parent) { } ~DvbTimeShiftCleaner() { wait(); } void remove(const QString &path_, const QStringList &files_); private: void run(); QString path; QStringList files; }; void DvbTimeShiftCleaner::remove(const QString &path_, const QStringList &files_) { path = path_; files = files_; start(); } void DvbTimeShiftCleaner::run() { // delete files asynchronously because it may block for several seconds foreach (const QString &file, files) { QFile::remove(path + '/' + file); } } DvbTab::DvbTab(KMenu *menu, KActionCollection *collection, MediaWidget *mediaWidget_) : mediaWidget(mediaWidget_) { manager = new DvbManager(mediaWidget, this); KAction *channelsAction = new KAction(KIcon("video-television"), i18n("Channels"), this); channelsAction->setShortcut(Qt::Key_C); connect(channelsAction, SIGNAL(triggered(bool)), this, SLOT(showChannelDialog())); menu->addAction(collection->addAction("dvb_channels", channelsAction)); KAction *epgAction = new KAction(KIcon("view-list-details"), i18n("Program Guide"), this); epgAction->setShortcut(Qt::Key_G); connect(epgAction, SIGNAL(triggered(bool)), this, SLOT(showEpgDialog())); menu->addAction(collection->addAction("dvb_epg", epgAction)); KAction *osdAction = new KAction(KIcon("dialog-information"), i18n("OSD"), this); osdAction->setShortcut(Qt::Key_O); connect(osdAction, SIGNAL(triggered(bool)), manager->getLiveView(), SLOT(toggleOsd())); menu->addAction(collection->addAction("dvb_osd", osdAction)); KAction *recordingsAction = new KAction(KIcon("view-pim-calendar"), i18nc("dialog", "Recording Schedule"), this); recordingsAction->setShortcut(Qt::Key_R); connect(recordingsAction, SIGNAL(triggered(bool)), this, SLOT(showRecordingDialog())); menu->addAction(collection->addAction("dvb_recordings", recordingsAction)); menu->addSeparator(); instantRecordAction = new KAction(KIcon("document-save"), i18n("Instant Record"), this); instantRecordAction->setCheckable(true); connect(instantRecordAction, SIGNAL(triggered(bool)), this, SLOT(instantRecord(bool))); menu->addAction(collection->addAction("dvb_instant_record", instantRecordAction)); menu->addSeparator(); KAction *configureAction = new KAction(KIcon("configure"), i18nc("@action:inmenu", "Configure Television..."), this); connect(configureAction, SIGNAL(triggered()), this, SLOT(configureDvb())); menu->addAction(collection->addAction("settings_dvb", configureAction)); connect(mediaWidget, SIGNAL(previousDvbChannel()), this, SLOT(previousChannel())); connect(mediaWidget, SIGNAL(nextDvbChannel()), this, SLOT(nextChannel())); connect(manager->getRecordingModel(), SIGNAL(recordingRemoved(DvbSharedRecording)), this, SLOT(recordingRemoved(DvbSharedRecording))); QBoxLayout *boxLayout = new QHBoxLayout(this); boxLayout->setMargin(0); splitter = new QSplitter(this); boxLayout->addWidget(splitter); QWidget *leftWidget = new QWidget(splitter); QBoxLayout *leftLayout = new QVBoxLayout(leftWidget); boxLayout = new QHBoxLayout(); boxLayout->addWidget(new QLabel(i18n("Search:"))); KLineEdit *lineEdit = new KLineEdit(leftWidget); lineEdit->setClearButtonShown(true); boxLayout->addWidget(lineEdit); leftLayout->addLayout(boxLayout); channelView = new DvbChannelView(leftWidget); channelView->setContextMenuPolicy(Qt::ActionsContextMenu); channelProxyModel = new DvbChannelTableModel(this); channelView->setModel(channelProxyModel); channelView->setRootIsDecorated(false); if (!channelView->header()->restoreState(QByteArray::fromBase64( KGlobal::config()->group("DVB").readEntry("ChannelViewState", QByteArray())))) { channelView->sortByColumn(0, Qt::AscendingOrder); } channelView->setSortingEnabled(true); channelView->addEditAction(); connect(channelView, SIGNAL(activated(QModelIndex)), this, SLOT(playChannel(QModelIndex))); channelProxyModel->setChannelModel(manager->getChannelModel()); connect(lineEdit, SIGNAL(textChanged(QString)), channelProxyModel, SLOT(setFilter(QString))); manager->setChannelView(channelView); leftLayout->addWidget(channelView); boxLayout = new QHBoxLayout(); QToolButton *toolButton = new QToolButton(leftWidget); toolButton->setDefaultAction(configureAction); toolButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); boxLayout->addWidget(toolButton); toolButton = new QToolButton(leftWidget); toolButton->setDefaultAction(channelsAction); toolButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); boxLayout->addWidget(toolButton); toolButton = new QToolButton(leftWidget); toolButton->setDefaultAction(epgAction); toolButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); boxLayout->addWidget(toolButton); toolButton = new QToolButton(leftWidget); toolButton->setDefaultAction(recordingsAction); toolButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); boxLayout->addWidget(toolButton); toolButton = new QToolButton(leftWidget); toolButton->setDefaultAction(instantRecordAction); toolButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); boxLayout->addWidget(toolButton); leftLayout->addLayout(boxLayout); QWidget *mediaContainer = new QWidget(splitter); mediaLayout = new QHBoxLayout(mediaContainer); mediaLayout->setMargin(0); splitter->setStretchFactor(1, 1); connect(mediaWidget, SIGNAL(osdKeyPressed(int)), this, SLOT(osdKeyPressed(int))); connect(&osdChannelTimer, SIGNAL(timeout()), this, SLOT(tuneOsdChannel())); lastChannel = KGlobal::config()->group("DVB").readEntry("LastChannel"); splitter->restoreState(QByteArray::fromBase64( KGlobal::config()->group("DVB").readEntry("TabSplitterState", QByteArray()))); timeShiftCleaner = new DvbTimeShiftCleaner(this); QTimer *timer = new QTimer(this); timer->start(30000); connect(timer, SIGNAL(timeout()), this, SLOT(cleanTimeShiftFiles())); } DvbTab::~DvbTab() { KGlobal::config()->group("DVB").writeEntry("TabSplitterState", splitter->saveState().toBase64()); KGlobal::config()->group("DVB").writeEntry("ChannelViewState", channelView->header()->saveState().toBase64()); if (!currentChannel.isEmpty()) { lastChannel = currentChannel; } KGlobal::config()->group("DVB").writeEntry("LastChannel", lastChannel); } void DvbTab::playChannel(const QString &nameOrNumber) { DvbChannelModel *channelModel = manager->getChannelModel(); DvbSharedChannel channel; int number = nameOrNumber.toInt(); if (number > 0) { channel = channelModel->findChannelByNumber(number); } if (!channel.isValid()) { channel = channelModel->findChannelByName(nameOrNumber); } if (channel.isValid()) { playChannel(channel, channelProxyModel->find(channel)); } } void DvbTab::playLastChannel() { if (!manager->getLiveView()->getChannel().isValid() && !currentChannel.isEmpty()) { lastChannel = currentChannel; } DvbSharedChannel channel = manager->getChannelModel()->findChannelByName(lastChannel); if (channel.isValid()) { playChannel(channel, channelProxyModel->find(channel)); } } void DvbTab::toggleOsd() { manager->getLiveView()->toggleOsd(); } void DvbTab::toggleInstantRecord() { instantRecordAction->trigger(); } void DvbTab::enableDvbDump() { manager->enableDvbDump(); } void DvbTab::osdKeyPressed(int key) { if ((key >= Qt::Key_0) && (key <= Qt::Key_9)) { osdChannel += QString::number(key - Qt::Key_0); osdChannelTimer.start(1500); mediaWidget->getOsdWidget()->showText(i18nc("osd", "Channel: %1_", osdChannel), 1500); } } void DvbTab::mayCloseApplication(bool *ok, QWidget *parent) { if (*ok) { DvbRecordingModel *recordingModel = manager->getRecordingModel(); if (recordingModel->hasActiveRecordings()) { if (KMessageBox::warningYesNo(parent, i18nc("message box", "Kaffeine is currently recording programs.\n" "Do you really want to close the application?")) != KMessageBox::Yes) { *ok = false; } return; } if (recordingModel->hasRecordings()) { if (KMessageBox::questionYesNo(parent, i18nc("message box", "Kaffeine has scheduled recordings.\n" "Do you really want to close the application?"), QString(), KStandardGuiItem::yes(), KStandardGuiItem::no(), "ScheduledRecordings") != KMessageBox::Yes) { *ok = false; } return; } } } void DvbTab::showChannelDialog() { KDialog *dialog = new DvbScanDialog(manager, this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void DvbTab::showRecordingDialog() { DvbRecordingDialog::showDialog(manager, this); } void DvbTab::showEpgDialog() { DvbEpgDialog *dialog = new DvbEpgDialog(manager, this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setCurrentChannel(manager->getLiveView()->getChannel()); dialog->setModal(true); dialog->show(); } void DvbTab::instantRecord(bool checked) { if (checked) { const DvbSharedChannel &channel = manager->getLiveView()->getChannel(); if (!channel.isValid()) { instantRecordAction->setChecked(false); return; } DvbRecording recording; QList epgEntries = manager->getEpgModel()->getCurrentNext(channel); if (!epgEntries.isEmpty()) { recording.name = epgEntries.at(0)->title; } if (recording.name.isEmpty()) { recording.name = (channel->name + QTime::currentTime().toString("-hhmmss")); } recording.channel = channel; recording.begin = QDateTime::currentDateTime().toUTC(); recording.duration = QTime(12, 0); instantRecording = manager->getRecordingModel()->addRecording(recording); mediaWidget->getOsdWidget()->showText(i18nc("osd", "Instant Record Started"), 1500); } else { manager->getRecordingModel()->removeRecording(instantRecording); mediaWidget->getOsdWidget()->showText(i18nc("osd", "Instant Record Stopped"), 1500); } } void DvbTab::recordingRemoved(const DvbSharedRecording &recording) { if (instantRecording == recording) { instantRecording = DvbSharedRecording(); instantRecordAction->setChecked(false); mediaWidget->getOsdWidget()->showText(i18nc("osd", "Instant Record Stopped"), 1500); } } void DvbTab::configureDvb() { KDialog *dialog = new DvbConfigDialog(manager, this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void DvbTab::tuneOsdChannel() { int number = osdChannel.toInt(); osdChannel.clear(); osdChannelTimer.stop(); DvbSharedChannel channel = manager->getChannelModel()->findChannelByNumber(number); if (channel.isValid()) { playChannel(channel, channelProxyModel->find(channel)); } } void DvbTab::playChannel(const QModelIndex &index) { if (index.isValid()) { playChannel(channelProxyModel->value(index), index); } } void DvbTab::previousChannel() { QModelIndex index = channelView->currentIndex(); if (index.isValid()) { playChannel(index.sibling(index.row() - 1, index.column())); } } void DvbTab::nextChannel() { QModelIndex index = channelView->currentIndex(); if (index.isValid()) { playChannel(index.sibling(index.row() + 1, index.column())); } } void DvbTab::cleanTimeShiftFiles() { if (timeShiftCleaner->isRunning()) { return; } QDir dir(manager->getTimeShiftFolder()); QStringList entries = dir.entryList(QStringList("TimeShift-*.m2t"), QDir::Files, QDir::Name); if (entries.count() < 2) { return; } entries.removeLast(); timeShiftCleaner->remove(dir.path(), entries); } void DvbTab::activate() { mediaLayout->addWidget(mediaWidget); mediaWidget->setFocus(); } void DvbTab::playChannel(const DvbSharedChannel &channel, const QModelIndex &index) { if (!channel.isValid()) { kWarning() << "channel is invalid"; return; } if (!currentChannel.isEmpty()) { lastChannel = currentChannel; } channelView->setCurrentIndex(index); currentChannel = channel->name; manager->getLiveView()->playChannel(channel); } kaffeine-1.2.2/src/dvb/dvbdevice_p.h0000644000175000017500000000203211552636277016712 0ustar lxuserlxuser/* * dvbdevice_p.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBDEVICE_P_H #define DVBDEVICE_P_H class DvbDeviceDataBuffer { public: DvbDeviceDataBuffer() { } ~DvbDeviceDataBuffer() { } char data[5 * 188]; int size; DvbDeviceDataBuffer *next; }; #endif /* DVBDEVICE_P_H */ kaffeine-1.2.2/src/dvb/dvbsi.h0000644000175000017500000005072211552636277015560 0ustar lxuserlxuser/* * dvbsi.h * * Copyright (C) 2008-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBSI_H #define DVBSI_H #include #include "dvbbackenddevice.h" class DvbPmtSection; class DvbSectionData { public: bool isValid() const { return (length > 0); } unsigned char at(int index) const { return data[index]; } const char *getData() const { return data; } int getLength() const { return length; } QByteArray toByteArray() const { return QByteArray(data, length); } protected: DvbSectionData() { } ~DvbSectionData() { } void initSectionData() { data = NULL; length = 0; size = 0; } void initSectionData(const char *data_, int length_, int size_) { data = data_; length = length_; size = size_; } int getSize() const { return size; } private: const char *data; int length; int size; }; class DvbSection : public DvbSectionData { public: int getSectionLength() const { return getLength(); } int tableId() const { return at(0); } bool isStandardSection() const { return (at(1) & 0x80) != 0; } protected: DvbSection() { } ~DvbSection() { } void initSection(const char *data, int size); private: Q_DISABLE_COPY(DvbSection) }; class DvbStandardSection : public DvbSection { public: int versionNumber() const { return (at(5) >> 1) & ((1 << 5) - 1); } bool currentNextIndicator() const { return (at(5) & 0x01) != 0; } int sectionNumber() const { return at(6); } int lastSectionNumber() const { return at(7); } static int verifyCrc32(const char *data, int size); static const unsigned int crc32Table[]; protected: DvbStandardSection() { } ~DvbStandardSection() { } void initStandardSection(const char *data, int size); private: Q_DISABLE_COPY(DvbStandardSection) }; class DvbSiText { public: static QString convertText(const char *data, int size); static void setOverride6937(bool override); private: enum TextEncoding { Iso6937 = 0, Iso8859_1 = 1, Iso8859_2 = 2, Iso8859_3 = 3, Iso8859_4 = 4, Iso8859_5 = 5, Iso8859_6 = 6, Iso8859_7 = 7, Iso8859_8 = 8, Iso8859_9 = 9, Iso8859_10 = 10, Iso8859_11 = 11, Iso8859_13 = 12, Iso8859_14 = 13, Iso8859_15 = 14, Gb2312 = 15, Big5 = 16, Utf_8 = 17, EncodingTypeMax = 17 }; static QTextCodec *codecTable[EncodingTypeMax + 1]; static bool override6937; }; class DvbDescriptor : public DvbSectionData { public: DvbDescriptor(const char *data, int size) { initDescriptor(data, size); } ~DvbDescriptor() { } int descriptorTag() const { return at(0); } void advance() { initDescriptor(getData() + getLength(), getSize() - getLength()); } static int bcdToInt(unsigned int bcd, int multiplier) { int value = 0; while (bcd != 0) { value += (bcd & 0xf) * multiplier; multiplier *= 10; bcd >>= 4; } return value; } private: void initDescriptor(const char *data, int size); }; // ATSC "Multiple String Structure". See A/65C Section 6.10 class AtscPsipText { public: static QString convertText(const char *data, int size); private: static QString interpretTextData(const char *data, unsigned int len, unsigned int mode); }; // ATSC Huffman compressed string support, conforming to A/65C Annex C class AtscHuffmanString { public: static QString convertText(const char *data_, int size, int table); private: AtscHuffmanString(const char *data_, int size, int table); ~AtscHuffmanString(); bool hasBits(); unsigned char getBit(); unsigned char getByte(); void decompress(); const char *data; int bitsLeft; QString result; const unsigned short *offsets; const unsigned char *tableBase; static const unsigned short Huffman1Offsets[128]; static const unsigned char Huffman1Tables[]; static const unsigned short Huffman2Offsets[128]; static const unsigned char Huffman2Tables[]; }; class DvbPmtFilter : public QObject, public DvbSectionFilter { Q_OBJECT public: DvbPmtFilter() : programNumber(-1) { } ~DvbPmtFilter() { } void setProgramNumber(int programNumber_) { programNumber = programNumber_; } signals: void pmtSectionChanged(const QByteArray &pmtSectionData); private: void processSection(const char *data, int size); int programNumber; QByteArray lastPmtSectionData; }; class DvbSectionGenerator { public: DvbSectionGenerator() : versionNumber(0), continuityCounter(0) { } ~DvbSectionGenerator() { } void initPat(int transportStreamId, int programNumber, int pmtPid); void initPmt(int pmtPid, const DvbPmtSection §ion, const QList &pids); void reset() { packets.clear(); versionNumber = 0; continuityCounter = 0; } QByteArray generatePackets(); private: char *startSection(int sectionLength); void endSection(int sectionLength, int pid); QByteArray packets; int versionNumber; int continuityCounter; }; class DvbPmtParser { public: explicit DvbPmtParser(const DvbPmtSection §ion); ~DvbPmtParser() { } int videoPid; QList > audioPids; // QString = language code (may be empty) QList > subtitlePids; // QString = language code int teletextPid; }; class AtscEitSectionEntry : public DvbSectionData { public: AtscEitSectionEntry(const char *data, int size) { initEitSectionEntry(data, size); } ~AtscEitSectionEntry() { } void advance() { initEitSectionEntry(getData() + getLength(), getSize() - getLength()); } int eventId() const { return ((at(0) & 0x3f) << 8) | at(1); } int startTime() const { return (at(2) << 24) | (at(3) << 16) | (at(4) << 8) | at(5); } int duration() const { return ((at(6) & 0xf) << 16) | (at(7) << 8) | at(8); } QString title() const { return AtscPsipText::convertText(getData() + 10, titleLength); } private: void initEitSectionEntry(const char *data, int size); int titleLength; }; // everything below this line is automatically generated class DvbLanguageDescriptor : public DvbDescriptor { public: explicit DvbLanguageDescriptor(const DvbDescriptor &descriptor); ~DvbLanguageDescriptor() { } int languageCode1() const { return at(2); } int languageCode2() const { return at(3); } int languageCode3() const { return at(4); } private: Q_DISABLE_COPY(DvbLanguageDescriptor) }; class DvbSubtitleDescriptor : public DvbDescriptor { public: explicit DvbSubtitleDescriptor(const DvbDescriptor &descriptor); ~DvbSubtitleDescriptor() { } int languageCode1() const { return at(2); } int languageCode2() const { return at(3); } int languageCode3() const { return at(4); } int subtitleType() const { return at(5); } private: Q_DISABLE_COPY(DvbSubtitleDescriptor) }; class DvbServiceDescriptor : public DvbDescriptor { public: explicit DvbServiceDescriptor(const DvbDescriptor &descriptor); ~DvbServiceDescriptor() { } QString providerName() const { return DvbSiText::convertText(getData() + 4, providerNameLength); } QString serviceName() const { return DvbSiText::convertText(getData() + 5 + providerNameLength, serviceNameLength); } private: Q_DISABLE_COPY(DvbServiceDescriptor) int providerNameLength; int serviceNameLength; }; class DvbShortEventDescriptor : public DvbDescriptor { public: explicit DvbShortEventDescriptor(const DvbDescriptor &descriptor); ~DvbShortEventDescriptor() { } QString eventName() const { return DvbSiText::convertText(getData() + 6, eventNameLength); } QString text() const { return DvbSiText::convertText(getData() + 7 + eventNameLength, textLength); } private: Q_DISABLE_COPY(DvbShortEventDescriptor) int eventNameLength; int textLength; }; class DvbExtendedEventDescriptor : public DvbDescriptor { public: explicit DvbExtendedEventDescriptor(const DvbDescriptor &descriptor); ~DvbExtendedEventDescriptor() { } QString text() const { return DvbSiText::convertText(getData() + 8 + itemsLength, textLength); } private: Q_DISABLE_COPY(DvbExtendedEventDescriptor) int itemsLength; int textLength; }; class DvbCableDescriptor : public DvbDescriptor { public: explicit DvbCableDescriptor(const DvbDescriptor &descriptor); ~DvbCableDescriptor() { } int frequency() const { return (at(2) << 24) | (at(3) << 16) | (at(4) << 8) | at(5); } int modulation() const { return at(8); } int symbolRate() const { return (at(9) << 20) | (at(10) << 12) | (at(11) << 4) | (at(12) >> 4); } int fecRate() const { return (at(12) & 0xf); } private: Q_DISABLE_COPY(DvbCableDescriptor) }; class DvbSatelliteDescriptor : public DvbDescriptor { public: explicit DvbSatelliteDescriptor(const DvbDescriptor &descriptor); ~DvbSatelliteDescriptor() { } int frequency() const { return (at(2) << 24) | (at(3) << 16) | (at(4) << 8) | at(5); } int polarization() const { return ((at(8) & 0x7f) >> 5); } int rollOff() const { return ((at(8) & 0x1f) >> 3); } bool isDvbS2() const { return ((at(8) & 0x4) != 0); } int modulation() const { return (at(8) & 0x3); } int symbolRate() const { return (at(9) << 20) | (at(10) << 12) | (at(11) << 4) | (at(12) >> 4); } int fecRate() const { return (at(12) & 0xf); } private: Q_DISABLE_COPY(DvbSatelliteDescriptor) }; class DvbTerrestrialDescriptor : public DvbDescriptor { public: explicit DvbTerrestrialDescriptor(const DvbDescriptor &descriptor); ~DvbTerrestrialDescriptor() { } int frequency() const { return (at(2) << 24) | (at(3) << 16) | (at(4) << 8) | at(5); } int bandwidth() const { return (at(6) >> 5); } int constellation() const { return (at(7) >> 6); } int hierarchy() const { return ((at(7) & 0x3f) >> 3); } int fecRateHigh() const { return (at(7) & 0x7); } int fecRateLow() const { return (at(8) >> 5); } int guardInterval() const { return ((at(8) & 0x1f) >> 3); } int transmissionMode() const { return ((at(8) & 0x7) >> 1); } private: Q_DISABLE_COPY(DvbTerrestrialDescriptor) }; class AtscChannelNameDescriptor : public DvbDescriptor { public: explicit AtscChannelNameDescriptor(const DvbDescriptor &descriptor); ~AtscChannelNameDescriptor() { } QString name() const { return AtscPsipText::convertText(getData() + 2, getLength() - 2); } private: Q_DISABLE_COPY(AtscChannelNameDescriptor) }; class DvbPatSectionEntry : public DvbSectionData { public: DvbPatSectionEntry(const char *data, int size) { initPatSectionEntry(data, size); } ~DvbPatSectionEntry() { } void advance() { initPatSectionEntry(getData() + getLength(), getSize() - getLength()); } int programNumber() const { return (at(0) << 8) | at(1); } int pid() const { return ((at(2) & 0x1f) << 8) | at(3); } private: void initPatSectionEntry(const char *data, int size); }; class DvbPmtSectionEntry : public DvbSectionData { public: DvbPmtSectionEntry(const char *data, int size) { initPmtSectionEntry(data, size); } ~DvbPmtSectionEntry() { } void advance() { initPmtSectionEntry(getData() + getLength(), getSize() - getLength()); } int streamType() const { return at(0); } int pid() const { return ((at(1) & 0x1f) << 8) | at(2); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 5, getLength() - 5); } private: void initPmtSectionEntry(const char *data, int size); }; class DvbSdtSectionEntry : public DvbSectionData { public: DvbSdtSectionEntry(const char *data, int size) { initSdtSectionEntry(data, size); } ~DvbSdtSectionEntry() { } void advance() { initSdtSectionEntry(getData() + getLength(), getSize() - getLength()); } int serviceId() const { return (at(0) << 8) | at(1); } bool isScrambled() const { return ((at(3) & 0x10) != 0); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 5, getLength() - 5); } private: void initSdtSectionEntry(const char *data, int size); }; class DvbEitSectionEntry : public DvbSectionData { public: DvbEitSectionEntry(const char *data, int size) { initEitSectionEntry(data, size); } ~DvbEitSectionEntry() { } void advance() { initEitSectionEntry(getData() + getLength(), getSize() - getLength()); } int startDate() const { return (at(2) << 8) | at(3); } int startTime() const { return (at(4) << 16) | (at(5) << 8) | at(6); } int duration() const { return (at(7) << 16) | (at(8) << 8) | at(9); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 12, getLength() - 12); } private: void initEitSectionEntry(const char *data, int size); }; class DvbNitSectionEntry : public DvbSectionData { public: DvbNitSectionEntry(const char *data, int size) { initNitSectionEntry(data, size); } ~DvbNitSectionEntry() { } void advance() { initNitSectionEntry(getData() + getLength(), getSize() - getLength()); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 6, getLength() - 6); } private: void initNitSectionEntry(const char *data, int size); }; class AtscMgtSectionEntry : public DvbSectionData { public: AtscMgtSectionEntry(const char *data, int size) { initMgtSectionEntry(data, size); } ~AtscMgtSectionEntry() { } void advance() { initMgtSectionEntry(getData() + getLength(), getSize() - getLength()); } int tableType() const { return (at(0) << 8) | at(1); } int pid() const { return ((at(2) & 0x1f) << 8) | at(3); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 11, getLength() - 11); } private: void initMgtSectionEntry(const char *data, int size); }; class AtscVctSectionEntry : public DvbSectionData { public: AtscVctSectionEntry(const char *data, int size) { initVctSectionEntry(data, size); } ~AtscVctSectionEntry() { } void advance() { initVctSectionEntry(getData() + getLength(), getSize() - getLength()); } int shortName1() const { return (at(0) << 8) | at(1); } int shortName2() const { return (at(2) << 8) | at(3); } int shortName3() const { return (at(4) << 8) | at(5); } int shortName4() const { return (at(6) << 8) | at(7); } int shortName5() const { return (at(8) << 8) | at(9); } int shortName6() const { return (at(10) << 8) | at(11); } int shortName7() const { return (at(12) << 8) | at(13); } int majorNumber() const { return ((at(14) & 0xf) << 6) | (at(15) >> 2); } int minorNumber() const { return ((at(15) & 0x3) << 8) | at(16); } int programNumber() const { return (at(24) << 8) | at(25); } bool isScrambled() const { return ((at(26) & 0x20) != 0); } int sourceId() const { return (at(28) << 8) | at(29); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 32, getLength() - 32); } private: void initVctSectionEntry(const char *data, int size); }; class DvbPatSection : public DvbStandardSection { public: DvbPatSection(const char *data, int size) { initPatSection(data, size); } explicit DvbPatSection(const QByteArray &byteArray) { initPatSection(byteArray.constData(), byteArray.size()); } ~DvbPatSection() { } int transportStreamId() const { return (at(3) << 8) | at(4); } DvbPatSectionEntry entries() const { return DvbPatSectionEntry(getData() + 8, getLength() - 12); } private: Q_DISABLE_COPY(DvbPatSection) void initPatSection(const char *data, int size); }; class DvbPmtSection : public DvbStandardSection { public: DvbPmtSection(const char *data, int size) { initPmtSection(data, size); } explicit DvbPmtSection(const QByteArray &byteArray) { initPmtSection(byteArray.constData(), byteArray.size()); } ~DvbPmtSection() { } int programNumber() const { return (at(3) << 8) | at(4); } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 12, descriptorsLength); } DvbPmtSectionEntry entries() const { return DvbPmtSectionEntry(getData() + 12 + descriptorsLength, getLength() - (16 + descriptorsLength)); } private: Q_DISABLE_COPY(DvbPmtSection) void initPmtSection(const char *data, int size); int descriptorsLength; }; class DvbSdtSection : public DvbStandardSection { public: DvbSdtSection(const char *data, int size) { initSdtSection(data, size); } explicit DvbSdtSection(const QByteArray &byteArray) { initSdtSection(byteArray.constData(), byteArray.size()); } ~DvbSdtSection() { } int originalNetworkId() const { return (at(8) << 8) | at(9); } DvbSdtSectionEntry entries() const { return DvbSdtSectionEntry(getData() + 11, getLength() - 15); } private: Q_DISABLE_COPY(DvbSdtSection) void initSdtSection(const char *data, int size); }; class DvbEitSection : public DvbStandardSection { public: DvbEitSection(const char *data, int size) { initEitSection(data, size); } explicit DvbEitSection(const QByteArray &byteArray) { initEitSection(byteArray.constData(), byteArray.size()); } ~DvbEitSection() { } int serviceId() const { return (at(3) << 8) | at(4); } int transportStreamId() const { return (at(8) << 8) | at(9); } int originalNetworkId() const { return (at(10) << 8) | at(11); } DvbEitSectionEntry entries() const { return DvbEitSectionEntry(getData() + 14, getLength() - 18); } private: Q_DISABLE_COPY(DvbEitSection) void initEitSection(const char *data, int size); }; class DvbNitSection : public DvbStandardSection { public: DvbNitSection(const char *data, int size) { initNitSection(data, size); } explicit DvbNitSection(const QByteArray &byteArray) { initNitSection(byteArray.constData(), byteArray.size()); } ~DvbNitSection() { } DvbDescriptor descriptors() const { return DvbDescriptor(getData() + 10, descriptorsLength); } DvbNitSectionEntry entries() const { return DvbNitSectionEntry(getData() + 12 + descriptorsLength, entriesLength); } private: Q_DISABLE_COPY(DvbNitSection) void initNitSection(const char *data, int size); int descriptorsLength; int entriesLength; }; class AtscMgtSection : public DvbStandardSection { public: AtscMgtSection(const char *data, int size) { initMgtSection(data, size); } explicit AtscMgtSection(const QByteArray &byteArray) { initMgtSection(byteArray.constData(), byteArray.size()); } ~AtscMgtSection() { } int entryCount() const { return (at(9) << 8) | at(10); } AtscMgtSectionEntry entries() const { return AtscMgtSectionEntry(getData() + 11, getLength() - 15); } private: Q_DISABLE_COPY(AtscMgtSection) void initMgtSection(const char *data, int size); }; class AtscVctSection : public DvbStandardSection { public: AtscVctSection(const char *data, int size) { initVctSection(data, size); } explicit AtscVctSection(const QByteArray &byteArray) { initVctSection(byteArray.constData(), byteArray.size()); } ~AtscVctSection() { } int entryCount() const { return at(9); } AtscVctSectionEntry entries() const { return AtscVctSectionEntry(getData() + 10, getLength() - 14); } private: Q_DISABLE_COPY(AtscVctSection) void initVctSection(const char *data, int size); }; class AtscEitSection : public DvbStandardSection { public: AtscEitSection(const char *data, int size) { initEitSection(data, size); } explicit AtscEitSection(const QByteArray &byteArray) { initEitSection(byteArray.constData(), byteArray.size()); } ~AtscEitSection() { } int sourceId() const { return (at(3) << 8) | at(4); } int entryCount() const { return at(9); } AtscEitSectionEntry entries() const { return AtscEitSectionEntry(getData() + 10, getLength() - 14); } private: Q_DISABLE_COPY(AtscEitSection) void initEitSection(const char *data, int size); }; class AtscEttSection : public DvbStandardSection { public: AtscEttSection(const char *data, int size) { initEttSection(data, size); } explicit AtscEttSection(const QByteArray &byteArray) { initEttSection(byteArray.constData(), byteArray.size()); } ~AtscEttSection() { } int sourceId() const { return (at(9) << 8) | at(10); } int eventId() const { return (at(11) << 6) | (at(12) >> 2); } int messageType() const { return (at(12) & 0x3); } QString text() const { return AtscPsipText::convertText(getData() + 13, getLength() - 17); } private: Q_DISABLE_COPY(AtscEttSection) void initEttSection(const char *data, int size); }; #endif /* DVBSI_H */ kaffeine-1.2.2/src/dvb/dvbdevice_linux.h0000644000175000017500000000603011552636277017614 0ustar lxuserlxuser/* * dvbdevice_linux.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBDEVICE_LINUX_H #define DVBDEVICE_LINUX_H #include #include "dvbbackenddevice.h" #include "dvbcam_linux.h" class DvbLinuxDevice : public QThread, public DvbBackendDevice { public: explicit DvbLinuxDevice(QObject *parent); ~DvbLinuxDevice(); bool isReady() const; void startDevice(const QString &deviceId_); void startCa(); void stopCa(); void stopDevice(); QString caPath; QString caUdi; QString demuxPath; QString demuxUdi; QString dvrPath; QString dvrUdi; QString frontendPath; QString frontendUdi; protected: QString getDeviceId(); QString getFrontendName(); TransmissionTypes getTransmissionTypes(); Capabilities getCapabilities(); void setFrontendDevice(DvbFrontendDevice *frontend_); void setDeviceEnabled(bool enabled_); bool acquire(); bool setTone(SecTone tone); bool setVoltage(SecVoltage voltage); bool sendMessage(const char *message, int length); bool sendBurst(SecBurst burst); bool tune(const DvbTransponder &transponder); // discards obsolete data bool isTuned(); int getSignal(); // 0 - 100 [%] or -1 = not supported int getSnr(); // 0 - 100 [%] or -1 = not supported bool addPidFilter(int pid); void removePidFilter(int pid); void startDescrambling(const QByteArray &pmtSectionData); void stopDescrambling(int serviceId); void release(); private: void startDvr(); void stopDvr(); void run(); bool ready; QString deviceId; QString frontendName; TransmissionTypes transmissionTypes; Capabilities capabilities; DvbFrontendDevice *frontend; bool enabled; int frontendFd; QMap dmxFds; int dvrFd; int dvrPipe[2]; DvbDataBuffer dvrBuffer; DvbLinuxCam cam; }; class DvbLinuxDeviceManager : public QObject { Q_OBJECT public: explicit DvbLinuxDeviceManager(QObject *parent); ~DvbLinuxDeviceManager(); public slots: void doColdPlug(); signals: void requestBuiltinDeviceManager(QObject *&bultinDeviceManager); void deviceAdded(DvbBackendDevice *device); void deviceRemoved(DvbBackendDevice *device); private slots: void componentAdded(const QString &udi); void componentRemoved(const QString &udi); private: int readSysAttr(const QString &path); QMap devices; QMap udis; }; #endif /* DVBDEVICE_LINUX_H */ kaffeine-1.2.2/src/dvb/dvbmanager_p.h0000644000175000017500000000502011552636277017065 0ustar lxuserlxuser/* * dvbmanager_p.h * * Copyright (C) 2008-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBMANAGER_P_H #define DVBMANAGER_P_H #include class DvbScanData { public: explicit DvbScanData(const QByteArray &data_); ~DvbScanData(); bool checkEnd() const; const char *getLine() const; const char *readLine(); QDate readDate(); private: QByteArray data; char *begin; char *pos; const char *end; }; class DvbDeviceConfigReader : public QTextStream { public: explicit DvbDeviceConfigReader(QIODevice *device) : QTextStream(device), valid(true) { setCodec("UTF-8"); } ~DvbDeviceConfigReader() { } bool isValid() const { return valid; } template T readEnum(const QString &entry, T maxValue) { int value = readInt(entry); if (value > maxValue) { valid = false; } return static_cast(value); } int readInt(const QString &entry) { QString string = readString(entry); if (string.isEmpty()) { valid = false; return -1; } bool ok; int value = string.toInt(&ok); if (!ok || (value < 0)) { valid = false; } return value; } QString readString(const QString &entry) { QString line = readLine(); if (!line.startsWith(entry + '=')) { valid = false; return QString(); } return line.remove(0, entry.size() + 1); } private: bool valid; }; class DvbDeviceConfigWriter : public QTextStream { public: explicit DvbDeviceConfigWriter(QIODevice *device) : QTextStream(device) { setCodec("UTF-8"); } ~DvbDeviceConfigWriter() { } void write(const QString &string) { *this << string << '\n'; } void write(const QString &entry, int value) { *this << entry << '=' << value << '\n'; } void write(const QString &entry, const QString &string) { *this << entry << '=' << string << '\n'; } }; #endif /* DVBMANAGER_P_H */ kaffeine-1.2.2/src/dvb/dvbmanager.cpp0000644000175000017500000005025211552636277017110 0ustar lxuserlxuser/* * dvbmanager.cpp * * Copyright (C) 2008-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbmanager.h" #include "dvbmanager_p.h" #include #include #include #include #include #include #include #include #include "dvbconfig.h" #include "dvbdevice.h" #include "dvbdevice_linux.h" #include "dvbepg.h" #include "dvbliveview.h" #include "dvbsi.h" DvbManager::DvbManager(MediaWidget *mediaWidget_, QWidget *parent_) : QObject(parent_), parent(parent_), mediaWidget(mediaWidget_), channelView(NULL), dvbDumpEnabled(false) { channelModel = DvbChannelModel::createSqlModel(this); recordingModel = new DvbRecordingModel(this, this); epgModel = new DvbEpgModel(this, this); liveView = new DvbLiveView(this, this); readDeviceConfigs(); updateSourceMapping(); loadDeviceManager(); DvbSiText::setOverride6937(override6937Charset()); } DvbManager::~DvbManager() { writeDeviceConfigs(); // we need an explicit deletion order (device users ; devices ; device manager) delete epgModel; delete recordingModel; foreach (const DvbDeviceConfig &deviceConfig, deviceConfigs) { delete deviceConfig.device; } } DvbDevice *DvbManager::requestDevice(const QString &source, const DvbTransponder &transponder, DvbManager::RequestType requestType) { Q_ASSERT(requestType != Exclusive); // FIXME call DvbEpgModel::startEventFilter / DvbEpgModel::stopEventFilter here? for (int i = 0; i < deviceConfigs.size(); ++i) { const DvbDeviceConfig &it = deviceConfigs.at(i); if ((it.device == NULL) || (it.useCount < 1)) { continue; } if ((it.source == source) && it.transponder.corresponds(transponder)) { ++deviceConfigs[i].useCount; if (requestType == Prioritized) { ++deviceConfigs[i].prioritizedUseCount; } return it.device; } } for (int i = 0; i < deviceConfigs.size(); ++i) { const DvbDeviceConfig &it = deviceConfigs.at(i); if ((it.device == NULL) || (it.useCount != 0)) { continue; } foreach (const DvbConfig &config, it.configs) { if (config->name == source) { DvbDevice *device = it.device; if (!device->acquire(config.constData())) { continue; } deviceConfigs[i].useCount = 1; if (requestType == Prioritized) { deviceConfigs[i].prioritizedUseCount = 1; } deviceConfigs[i].source = source; deviceConfigs[i].transponder = transponder; device->tune(transponder); return device; } } } if (requestType != Prioritized) { return NULL; } for (int i = 0; i < deviceConfigs.size(); ++i) { const DvbDeviceConfig &it = deviceConfigs.at(i); if ((it.device == NULL) || (it.useCount == 0) || (it.prioritizedUseCount != 0)) { continue; } foreach (const DvbConfig &config, it.configs) { if (config->name == source) { deviceConfigs[i].useCount = 1; deviceConfigs[i].prioritizedUseCount = 1; deviceConfigs[i].source = source; deviceConfigs[i].transponder = transponder; DvbDevice *device = it.device; device->reacquire(config.constData()); device->tune(transponder); return device; } } } return NULL; } DvbDevice *DvbManager::requestExclusiveDevice(const QString &source) { for (int i = 0; i < deviceConfigs.size(); ++i) { const DvbDeviceConfig &it = deviceConfigs.at(i); if ((it.device == NULL) || (it.useCount != 0)) { continue; } foreach (const DvbConfig &config, it.configs) { if (config->name == source) { DvbDevice *device = it.device; if (!device->acquire(config.constData())) { continue; } deviceConfigs[i].useCount = -1; deviceConfigs[i].source.clear(); return device; } } } return NULL; } void DvbManager::releaseDevice(DvbDevice *device, RequestType requestType) { for (int i = 0; i < deviceConfigs.size(); ++i) { const DvbDeviceConfig &it = deviceConfigs.at(i); if (it.device == device) { switch (requestType) { case Prioritized: --deviceConfigs[i].prioritizedUseCount; Q_ASSERT(it.prioritizedUseCount >= 0); // fall through case Shared: --deviceConfigs[i].useCount; Q_ASSERT(it.useCount >= 0); Q_ASSERT(it.useCount >= it.prioritizedUseCount); if (it.useCount == 0) { it.device->release(); } break; case Exclusive: Q_ASSERT(it.useCount == -1); Q_ASSERT(it.prioritizedUseCount == 0); deviceConfigs[i].useCount = 0; it.device->release(); break; } break; } } } QList DvbManager::getDeviceConfigs() const { return deviceConfigs; } void DvbManager::updateDeviceConfigs(const QList &configUpdates) { for (int i = 0; i < configUpdates.size(); ++i) { const DvbDeviceConfigUpdate &configUpdate = configUpdates.at(i); for (int j = i;; ++j) { Q_ASSERT(j < deviceConfigs.size()); if (&deviceConfigs.at(j) == configUpdate.deviceConfig) { if (i != j) { deviceConfigs.move(j, i); } deviceConfigs[i].configs = configUpdate.configs; break; } } } for (int i = configUpdates.size(); i < deviceConfigs.size(); ++i) { if (deviceConfigs.at(i).device != NULL) { deviceConfigs[i].configs.clear(); } else { deviceConfigs.removeAt(i); --i; } } updateSourceMapping(); } QDate DvbManager::getScanDataDate() { if (!scanDataDate.isValid()) { readScanData(); } return scanDataDate; } QStringList DvbManager::getScanSources(TransmissionType type) { if (scanData.isEmpty()) { readScanData(); } return scanSources.value(type); } QString DvbManager::getAutoScanSource(const QString &source) const { QPair scanSource = sourceMapping.value(source); if (scanSource.second.isEmpty()) { kWarning() << "invalid source"; return QString(); } if ((scanSource.first == DvbT) && (scanSource.second.startsWith(QLatin1String("AUTO")))) { return scanSource.second; } return QString(); } QList DvbManager::getTransponders(DvbDevice *device, const QString &source) { if (scanData.isEmpty()) { readScanData(); } QPair scanSource = sourceMapping.value(source); if (scanSource.second.isEmpty()) { kWarning() << "invalid source"; return QList(); } if ((scanSource.first == DvbS) && ((device->getTransmissionTypes() & DvbDevice::DvbS2) != 0)) { scanSource.first = DvbS2; } return scanData.value(scanSource); } bool DvbManager::updateScanData(const QByteArray &data) { QByteArray uncompressed = qUncompress(data); if (uncompressed.isEmpty()) { kWarning() << "qUncompress failed"; return false; } if (!DvbScanData(uncompressed).readDate().isValid()) { kWarning() << "invalid format"; return false; } QFile file(KStandardDirs::locateLocal("appdata", "scanfile.dvb")); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "can't open" << file.fileName(); return false; } file.write(uncompressed); file.close(); readScanData(); return true; } QString DvbManager::getRecordingFolder() const { return KGlobal::config()->group("DVB").readEntry("RecordingFolder", QDir::homePath()); } QString DvbManager::getTimeShiftFolder() const { return KGlobal::config()->group("DVB").readEntry("TimeShiftFolder", QDir::homePath()); } int DvbManager::getBeginMargin() const { return KGlobal::config()->group("DVB").readEntry("BeginMargin", 300); } int DvbManager::getEndMargin() const { return KGlobal::config()->group("DVB").readEntry("EndMargin", 600); } bool DvbManager::override6937Charset() const { return KGlobal::config()->group("DVB").readEntry("Override6937", false); } void DvbManager::setRecordingFolder(const QString &path) { KGlobal::config()->group("DVB").writeEntry("RecordingFolder", path); } void DvbManager::setTimeShiftFolder(const QString &path) { KGlobal::config()->group("DVB").writeEntry("TimeShiftFolder", path); } void DvbManager::setBeginMargin(int beginMargin) { KGlobal::config()->group("DVB").writeEntry("BeginMargin", beginMargin); } void DvbManager::setEndMargin(int endMargin) { KGlobal::config()->group("DVB").writeEntry("EndMargin", endMargin); } void DvbManager::setOverride6937Charset(bool override) { KGlobal::config()->group("DVB").writeEntry("Override6937", override); DvbSiText::setOverride6937(override); } double DvbManager::getLatitude() { return KGlobal::config()->group("DVB").readEntry("Latitude", 0.0); } double DvbManager::getLongitude() { return KGlobal::config()->group("DVB").readEntry("Longitude", 0.0); } void DvbManager::setLatitude(double value) { KGlobal::config()->group("DVB").writeEntry("Latitude", value); } void DvbManager::setLongitude(double value) { KGlobal::config()->group("DVB").writeEntry("Longitude", value); } void DvbManager::enableDvbDump() { if (dvbDumpEnabled) { return; } dvbDumpEnabled = true; foreach (const DvbDeviceConfig &deviceConfig, deviceConfigs) { if (deviceConfig.device != NULL) { deviceConfig.device->enableDvbDump(); } } } void DvbManager::requestBuiltinDeviceManager(QObject *&builtinDeviceManager) { builtinDeviceManager = new DvbLinuxDeviceManager(this); } void DvbManager::deviceAdded(DvbBackendDevice *backendDevice) { DvbDevice *device = new DvbDevice(backendDevice, this); QString deviceId = device->getDeviceId(); QString frontendName = device->getFrontendName(); if (dvbDumpEnabled) { device->enableDvbDump(); } for (int i = 0;; ++i) { if (i == deviceConfigs.size()) { deviceConfigs.append(DvbDeviceConfig(deviceId, frontendName, device)); break; } const DvbDeviceConfig &it = deviceConfigs.at(i); if ((it.deviceId.isEmpty() || deviceId.isEmpty() || (it.deviceId == deviceId)) && (it.frontendName == frontendName) && (it.device == NULL)) { deviceConfigs[i].device = device; break; } } } void DvbManager::deviceRemoved(DvbBackendDevice *backendDevice) { for (int i = 0; i < deviceConfigs.size(); ++i) { if (deviceConfigs.at(i).device->getBackendDevice() == backendDevice) { if (deviceConfigs[i].useCount != 0) { deviceConfigs[i].useCount = 0; deviceConfigs[i].prioritizedUseCount = 0; deviceConfigs[i].device->release(); } delete deviceConfigs[i].device; deviceConfigs[i].device = NULL; break; } } } void DvbManager::loadDeviceManager() { QDir dir(QString::fromUtf8(KAFFEINE_LIB_INSTALL_DIR "/")); QStringList entries = dir.entryList(QStringList("*kaffeinedvb*"), QDir::NoFilter, QDir::Name | QDir::Reversed); foreach (const QString &entry, entries) { QString path = dir.filePath(entry); if (!QLibrary::isLibrary(path)) { continue; } QObject *deviceManager = QPluginLoader(path).instance(); if (deviceManager == NULL) { kWarning() << "cannot load dvb device manager" << path; break; } kDebug() << "using dvb device manager" << path; deviceManager->setParent(this); connect(deviceManager, SIGNAL(requestBuiltinDeviceManager(QObject*&)), this, SLOT(requestBuiltinDeviceManager(QObject*&))); connect(deviceManager, SIGNAL(deviceAdded(DvbBackendDevice*)), this, SLOT(deviceAdded(DvbBackendDevice*))); connect(deviceManager, SIGNAL(deviceRemoved(DvbBackendDevice*)), this, SLOT(deviceRemoved(DvbBackendDevice*))); QMetaObject::invokeMethod(deviceManager, "doColdPlug"); return; } kDebug() << "using built-in dvb device manager"; DvbLinuxDeviceManager *deviceManager = new DvbLinuxDeviceManager(this); connect(deviceManager, SIGNAL(deviceAdded(DvbBackendDevice*)), this, SLOT(deviceAdded(DvbBackendDevice*))); connect(deviceManager, SIGNAL(deviceRemoved(DvbBackendDevice*)), this, SLOT(deviceRemoved(DvbBackendDevice*))); deviceManager->doColdPlug(); } void DvbManager::readDeviceConfigs() { QFile file(KStandardDirs::locateLocal("appdata", "config.dvb")); if (!file.open(QIODevice::ReadOnly)) { kWarning() << "can't open" << file.fileName(); return; } DvbDeviceConfigReader reader(&file); while (!reader.atEnd()) { if (reader.readLine() != "[device]") { continue; } QString deviceId = reader.readString("deviceId"); QString frontendName = reader.readString("frontendName"); int configCount = reader.readInt("configCount"); if (!reader.isValid()) { break; } DvbDeviceConfig deviceConfig(deviceId, frontendName, NULL); for (int i = 0; i < configCount; ++i) { while (!reader.atEnd()) { if (reader.readLine() == "[config]") { break; } } DvbConfigBase::TransmissionType type = reader.readEnum("type", DvbConfigBase::TransmissionTypeMax); if (!reader.isValid()) { break; } DvbConfigBase *config = new DvbConfigBase(type); config->name = reader.readString("name"); config->scanSource = reader.readString("scanSource"); config->timeout = reader.readInt("timeout"); if (type == DvbConfigBase::DvbS) { config->configuration = reader.readEnum("configuration", DvbConfigBase::ConfigurationMax); config->lnbNumber = reader.readInt("lnbNumber"); config->lowBandFrequency = reader.readInt("lowBandFrequency"); config->switchFrequency = reader.readInt("switchFrequency"); config->highBandFrequency = reader.readInt("highBandFrequency"); } if (!reader.isValid()) { delete config; break; } deviceConfig.configs.append(DvbConfig(config)); } deviceConfigs.append(deviceConfig); } if (!reader.isValid()) { kWarning() << "can't read" << file.fileName(); } } void DvbManager::writeDeviceConfigs() { QFile file(KStandardDirs::locateLocal("appdata", "config.dvb")); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "can't open" << file.fileName(); return; } DvbDeviceConfigWriter writer(&file); foreach (const DvbDeviceConfig &deviceConfig, deviceConfigs) { writer.write("[device]"); writer.write("deviceId", deviceConfig.deviceId); writer.write("frontendName", deviceConfig.frontendName); writer.write("configCount", deviceConfig.configs.size()); foreach (const DvbConfig &config, deviceConfig.configs) { writer.write("[config]"); writer.write("type", config->getTransmissionType()); writer.write("name", config->name); writer.write("scanSource", config->scanSource); writer.write("timeout", config->timeout); if (config->getTransmissionType() == DvbConfigBase::DvbS) { writer.write("configuration", config->configuration); writer.write("lnbNumber", config->lnbNumber); writer.write("lowBandFrequency", config->lowBandFrequency); writer.write("switchFrequency", config->switchFrequency); writer.write("highBandFrequency", config->highBandFrequency); } } } } void DvbManager::updateSourceMapping() { sourceMapping.clear(); foreach (const DvbDeviceConfig &deviceConfig, deviceConfigs) { foreach (const DvbConfig &config, deviceConfig.configs) { TransmissionType type; switch (config->getTransmissionType()) { case DvbConfigBase::DvbC: type = DvbC; break; case DvbConfigBase::DvbS: type = DvbS; break; case DvbConfigBase::DvbT: type = DvbT; break; case DvbConfigBase::Atsc: type = Atsc; break; default: Q_ASSERT(false); continue; } sourceMapping.insert(config->name, qMakePair(type, config->scanSource)); } } sources = sourceMapping.keys(); } void DvbManager::readScanData() { scanSources.clear(); scanData.clear(); QFile globalFile(QString::fromUtf8(KAFFEINE_DATA_INSTALL_DIR "/kaffeine/scanfile.dvb")); QDate globalDate; if (globalFile.open(QIODevice::ReadOnly)) { globalDate = DvbScanData(globalFile.read(1024)).readDate(); if (globalDate.isNull()) { kWarning() << "cannot parse" << globalFile.fileName(); } globalFile.close(); } else { kWarning() << "cannot open" << globalFile.fileName(); } QFile localFile(KStandardDirs::locateLocal("appdata", "scanfile.dvb")); QByteArray localData; QDate localDate; if (localFile.open(QIODevice::ReadOnly)) { localData = localFile.readAll(); localDate = DvbScanData(localData).readDate(); if (localDate.isNull()) { kWarning() << "cannot parse" << localFile.fileName(); } localFile.close(); } if (localDate < globalDate) { localData.clear(); if (localFile.exists() && !localFile.remove()) { kWarning() << "cannot remove" << localFile.fileName(); } if (!globalFile.copy(localFile.fileName())) { kWarning() << "cannot copy" << globalFile.fileName() << "to" << localFile.fileName(); } if (localFile.open(QIODevice::ReadOnly)) { localData = localFile.readAll(); localFile.close(); } else { kWarning() << "cannot open" << localFile.fileName(); scanDataDate = QDate(1900, 1, 1); return; } } DvbScanData data(localData); scanDataDate = data.readDate(); if (!scanDataDate.isValid()) { kWarning() << "cannot parse" << localFile.fileName(); scanDataDate = QDate(1900, 1, 1); return; } if (!readScanSources(data, "[dvb-c/", DvbC) || !readScanSources(data, "[dvb-s/", DvbS) || !readScanSources(data, "[dvb-t/", DvbT) || !readScanSources(data, "[atsc/", Atsc) || !data.checkEnd()) { kWarning() << "cannot parse" << localFile.fileName(); } } bool DvbManager::readScanSources(DvbScanData &data, const char *tag, TransmissionType type) { int tagLen = strlen(tag); bool parseError = false; while (strncmp(data.getLine(), tag, tagLen) == 0) { const char *line = data.readLine(); QString name = QString(line + tagLen); if ((name.size() < 2) || (name.at(name.size() - 1) != ']')) { return false; } name.chop(1); QList transponders; bool containsDvbS1 = false; while (true) { line = data.getLine(); if ((*line == '[') || (*line == 0)) { break; } line = data.readLine(); DvbTransponder transponder = DvbTransponder::fromString(QString::fromAscii(line)); if (!transponder.isValid()) { parseError = true; } else { transponders.append(transponder); if (transponder.getTransmissionType() == DvbTransponderBase::DvbS) { containsDvbS1 = true; } } } if ((type != DvbS) && (type != DvbS2)) { scanSources[type].append(name); scanData.insert(qMakePair(type, name), transponders); } else { scanSources[DvbS2].append(name); scanData.insert(qMakePair(DvbS2, name), transponders); if (containsDvbS1) { for (int i = 0; i < transponders.size(); ++i) { if (transponders.at(i).getTransmissionType() == DvbTransponderBase::DvbS2) { transponders.removeAt(i); --i; } } scanSources[DvbS].append(name); scanData.insert(qMakePair(DvbS, name), transponders); } } } if (parseError) { kWarning() << "can't parse complete scan data"; } return true; } DvbDeviceConfig::DvbDeviceConfig(const QString &deviceId_, const QString &frontendName_, DvbDevice *device_) : deviceId(deviceId_), frontendName(frontendName_), device(device_), useCount(0), prioritizedUseCount(0) { } DvbDeviceConfig::~DvbDeviceConfig() { } DvbDeviceConfigUpdate::DvbDeviceConfigUpdate(const DvbDeviceConfig *deviceConfig_) : deviceConfig(deviceConfig_) { } DvbDeviceConfigUpdate::~DvbDeviceConfigUpdate() { } DvbScanData::DvbScanData(const QByteArray &data_) : data(data_) { begin = data.begin(); pos = data.begin(); end = data.constEnd(); } DvbScanData::~DvbScanData() { } bool DvbScanData::checkEnd() const { return (pos == end); } const char *DvbScanData::getLine() const { return pos; } const char *DvbScanData::readLine() { // ignore comments while (*pos == '#') { do { ++pos; if (pos == end) { return end; } } while (*pos != '\n'); ++pos; } char *line = pos; while (pos != end) { if (*pos == '\n') { *pos = 0; ++pos; break; } ++pos; } return line; } QDate DvbScanData::readDate() { if (strcmp(readLine(), "[date]") != 0) { return QDate(); } return QDate::fromString(QString::fromAscii(readLine()), Qt::ISODate); } kaffeine-1.2.2/src/dvb/dvbdevice.h0000644000175000017500000000750611552636277016406 0ustar lxuserlxuser/* * dvbdevice.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBDEVICE_H #define DVBDEVICE_H #include #include #include #include #include "dvbbackenddevice.h" #include "dvbtransponder.h" class DvbConfigBase; class DvbDataDumper; class DvbDeviceDataBuffer; class DvbFilterInternal; class DvbSectionFilterInternal; class DvbDummyPidFilter : public DvbPidFilter { public: DvbDummyPidFilter() { } ~DvbDummyPidFilter() { } void processData(const char [188]) { } }; class DvbDummySectionFilter : public DvbSectionFilter { public: DvbDummySectionFilter() { } ~DvbDummySectionFilter() { } void processSection(const char *, int) { } }; // FIXME make DvbDevice shared ... class DvbDevice : public QObject, public DvbFrontendDevice { Q_OBJECT public: enum DeviceState { DeviceReleased, DeviceIdle, DeviceRotorMoving, DeviceTuning, DeviceTuned // FIXME introduce a TuningFailed state }; DvbDevice(DvbBackendDevice *backend_, QObject *parent); ~DvbDevice(); const DvbBackendDevice *getBackendDevice() const { return backend; } DeviceState getDeviceState() const { return deviceState; } TransmissionTypes getTransmissionTypes() const; QString getDeviceId() const; QString getFrontendName() const; void tune(const DvbTransponder &transponder); void autoTune(const DvbTransponder &transponder); bool addPidFilter(int pid, DvbPidFilter *filter); bool addSectionFilter(int pid, DvbSectionFilter *filter); void removePidFilter(int pid, DvbPidFilter *filter); void removeSectionFilter(int pid, DvbSectionFilter *filter); void startDescrambling(const QByteArray &pmtSectionData, QObject *user); void stopDescrambling(const QByteArray &pmtSectionData, QObject *user); bool isTuned() const; int getSignal() const; // 0 - 100 [%] or -1 = not supported int getSnr() const; // 0 - 100 [%] or -1 = not supported DvbTransponder getAutoTransponder() const; /* * management functions (must be only called by DvbManager) */ bool acquire(const DvbConfigBase *config_); void reacquire(const DvbConfigBase *config_); void release(); void enableDvbDump(); signals: void stateChanged(); private slots: void frontendEvent(); private: void setDeviceState(DeviceState newState); void discardBuffers(); void stop(); void processData(const char data[188]); DvbDataBuffer getBuffer(); void writeBuffer(const DvbDataBuffer &dataBuffer); void customEvent(QEvent *); DvbBackendDevice *backend; DeviceState deviceState; QExplicitlySharedDataPointer config; int frontendTimeout; QTimer frontendTimer; QMap filters; QMap sectionFilters; DvbDummyPidFilter dummyPidFilter; DvbDummySectionFilter dummySectionFilter; DvbDataDumper *dataDumper; bool cleanUpFilters; QMultiMap descramblingServices; bool isAuto; DvbTransponder autoTransponder; Capabilities capabilities; DvbDeviceDataBuffer *unusedBuffersHead; DvbDeviceDataBuffer *usedBuffersHead; DvbDeviceDataBuffer *usedBuffersTail; QMutex dataChannelMutex; }; #endif /* DVBDEVICE_H */ kaffeine-1.2.2/src/dvb/dvbchanneldialog.cpp0000644000175000017500000005316411552636277020273 0ustar lxuserlxuser/* * dvbchanneldialog.cpp * * Copyright (C) 2007-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbchanneldialog.h" #include "dvbchanneldialog_p.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dvbsi.h" bool DvbChannelLessThan::operator()(const DvbSharedChannel &x, const DvbSharedChannel &y) const { switch (sortOrder) { case ChannelNameAscending: if (x->name != y->name) { return (x->name.localeAwareCompare(y->name) < 0); } break; case ChannelNameDescending: if (x->name != y->name) { return (x->name.localeAwareCompare(y->name) > 0); } break; case ChannelNumberAscending: if (x->number != y->number) { return (x->number < y->number); } break; case ChannelNumberDescending: if (x->number != y->number) { return (x->number > y->number); } break; } return (x < y); } DvbChannelTableModel::DvbChannelTableModel(QObject *parent) : TableModel(parent), channelModel(NULL), dndInsertBeforeNumber(-1), dndEventPosted(false) { } DvbChannelTableModel::~DvbChannelTableModel() { } void DvbChannelTableModel::setChannelModel(DvbChannelModel *channelModel_) { if (channelModel != NULL) { kWarning() << "channel model already set"; return; } channelModel = channelModel_; connect(channelModel, SIGNAL(channelAdded(DvbSharedChannel)), this, SLOT(channelAdded(DvbSharedChannel))); connect(channelModel, SIGNAL(channelAboutToBeUpdated(DvbSharedChannel)), this, SLOT(channelAboutToBeUpdated(DvbSharedChannel))); connect(channelModel, SIGNAL(channelUpdated(DvbSharedChannel)), this, SLOT(channelUpdated(DvbSharedChannel))); connect(channelModel, SIGNAL(channelRemoved(DvbSharedChannel)), this, SLOT(channelRemoved(DvbSharedChannel))); reset(channelModel->getChannels()); } QVariant DvbChannelTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if ((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { switch (section) { case 0: return i18nc("@title:column tv show", "Channel"); case 1: return i18nc("@title:column tv channel", "Number"); } } return QVariant(); } QVariant DvbChannelTableModel::data(const QModelIndex &index, int role) const { const DvbSharedChannel &channel = value(index); if (channel.isValid()) { switch (role) { case Qt::DecorationRole: if (index.column() == 0) { if (channel->hasVideo) { if (!channel->isScrambled) { return KIcon("video-television"); } else { return KIcon("video-television-encrypted"); } } else { if (!channel->isScrambled) { return KIcon("text-speak"); } else { return KIcon("audio-radio-encrypted"); } } } break; case Qt::DisplayRole: switch (index.column()) { case 0: return channel->name; case 1: return channel->number; } break; } } return QVariant(); } void DvbChannelTableModel::sort(int column, Qt::SortOrder order) { DvbChannelLessThan::SortOrder sortOrder; if (order == Qt::AscendingOrder) { if (column == 0) { sortOrder = DvbChannelLessThan::ChannelNameAscending; } else { sortOrder = DvbChannelLessThan::ChannelNumberAscending; } } else { if (column == 0) { sortOrder = DvbChannelLessThan::ChannelNameDescending; } else { sortOrder = DvbChannelLessThan::ChannelNumberDescending; } } internalSort(sortOrder); } Qt::ItemFlags DvbChannelTableModel::flags(const QModelIndex &index) const { if (index.isValid()) { return (QAbstractTableModel::flags(index) | Qt::ItemIsDragEnabled); } else { return (QAbstractTableModel::flags(index) | Qt::ItemIsDropEnabled); } } QMimeData *DvbChannelTableModel::mimeData(const QModelIndexList &indexes) const { QList selectedChannels; foreach (const QModelIndex &index, indexes) { if (index.column() == 0) { selectedChannels.append(value(index)); } } QMimeData *mimeData = new QMimeData(); mimeData->setData("application/x-org.kde.kaffeine-selectedchannels", QByteArray()); // this way the list will be properly deleted once drag and drop ends mimeData->setProperty("SelectedChannels", QVariant::fromValue(selectedChannels)); return mimeData; } QStringList DvbChannelTableModel::mimeTypes() const { return QStringList("application/x-org.kde.kaffeine-selectedchannels"); } Qt::DropActions DvbChannelTableModel::supportedDropActions() const { return Qt::MoveAction; } bool DvbChannelTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { Q_UNUSED(column) Q_UNUSED(parent) dndSelectedChannels.clear(); dndInsertBeforeNumber = -1; if (action == Qt::MoveAction) { dndSelectedChannels = data->property("SelectedChannels").value >(); const DvbSharedChannel &dndInsertBeforeChannel = value(row); if (dndInsertBeforeChannel.isValid()) { dndInsertBeforeNumber = dndInsertBeforeChannel->number; } if (!dndSelectedChannels.isEmpty() && !dndEventPosted) { dndEventPosted = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } } return false; } void DvbChannelTableModel::setFilter(const QString &filter) { // Qt::CaseSensitive == no filtering helper.filter.setCaseSensitivity( filter.isEmpty() ? Qt::CaseSensitive : Qt::CaseInsensitive); helper.filter.setPattern(filter); reset(channelModel->getChannels()); } void DvbChannelTableModel::channelAdded(const DvbSharedChannel &channel) { insert(channel); } void DvbChannelTableModel::channelAboutToBeUpdated(const DvbSharedChannel &channel) { aboutToUpdate(channel); } void DvbChannelTableModel::channelUpdated(const DvbSharedChannel &channel) { update(channel); } void DvbChannelTableModel::channelRemoved(const DvbSharedChannel &channel) { remove(channel); } void DvbChannelTableModel::customEvent(QEvent *event) { Q_UNUSED(event) bool ok = true; emit checkChannelDragAndDrop(&ok); if (ok && !dndSelectedChannels.isEmpty()) { channelModel->dndMoveChannels(dndSelectedChannels, dndInsertBeforeNumber); } dndSelectedChannels.clear(); dndEventPosted = false; } DvbChannelView::DvbChannelView(QWidget *parent) : QTreeView(parent), tableModel(NULL) { } DvbChannelView::~DvbChannelView() { } KAction *DvbChannelView::addEditAction() { KAction *action = new KAction(KIcon("configure"), i18nc("@action", "Edit"), this); connect(action, SIGNAL(triggered()), this, SLOT(editChannel())); addAction(action); return action; } KAction *DvbChannelView::addRemoveAction() { KAction *action = new KAction(KIcon("edit-delete"), i18nc("@action", "Remove"), this); connect(action, SIGNAL(triggered()), this, SLOT(removeChannel())); addAction(action); return action; } void DvbChannelView::setModel(DvbChannelTableModel *tableModel_) { tableModel = tableModel_; QTreeView::setModel(tableModel); } void DvbChannelView::checkChannelDragAndDrop(bool *ok) { if ((*ok) && ((header()->sortIndicatorSection() != 1) || (header()->sortIndicatorOrder() != Qt::AscendingOrder))) { if (KMessageBox::warningContinueCancel(this, i18nc("@info", "The channels will be sorted by number to allow drag and drop.\n" "Do you want to continue?")) == KMessageBox::Continue) { sortByColumn(1, Qt::AscendingOrder); } else { *ok = false; } } } void DvbChannelView::editChannel() { QModelIndex index = currentIndex(); if (index.isValid()) { KDialog *dialog = new DvbChannelEditor(tableModel, tableModel->value(index), this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } } void DvbChannelView::removeChannel() { QList selectedChannels; foreach (const QModelIndex &index, selectionModel()->selectedIndexes()) { if (index.column() == 0) { selectedChannels.append(tableModel->value(index)); } } DvbChannelModel *channelModel = tableModel->getChannelModel(); foreach (const DvbSharedChannel &channel, selectedChannels) { channelModel->removeChannel(channel); } } void DvbChannelView::removeAllChannels() { DvbChannelModel *channelModel = tableModel->getChannelModel(); foreach (const DvbSharedChannel &channel, channelModel->getChannels().values()) { channelModel->removeChannel(channel); } } static QString enumToString(DvbTransponderBase::FecRate fecRate) { switch (fecRate) { case DvbTransponderBase::FecNone: return "NONE"; case DvbTransponderBase::Fec1_2: return "1/2"; case DvbTransponderBase::Fec1_3: return "1/3"; case DvbTransponderBase::Fec1_4: return "1/4"; case DvbTransponderBase::Fec2_3: return "2/3"; case DvbTransponderBase::Fec2_5: return "2/5"; case DvbTransponderBase::Fec3_4: return "3/4"; case DvbTransponderBase::Fec3_5: return "3/5"; case DvbTransponderBase::Fec4_5: return "4/5"; case DvbTransponderBase::Fec5_6: return "5/6"; case DvbTransponderBase::Fec6_7: return "6/7"; case DvbTransponderBase::Fec7_8: return "7/8"; case DvbTransponderBase::Fec8_9: return "8/9"; case DvbTransponderBase::Fec9_10: return "9/10"; case DvbTransponderBase::FecAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbCTransponder::Modulation modulation) { switch (modulation) { case DvbCTransponder::Qam16: return "16-QAM"; case DvbCTransponder::Qam32: return "32-QAM"; case DvbCTransponder::Qam64: return "64-QAM"; case DvbCTransponder::Qam128: return "128-QAM"; case DvbCTransponder::Qam256: return "256-QAM"; case DvbCTransponder::ModulationAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbSTransponder::Polarization polarization) { switch (polarization) { case DvbSTransponder::Horizontal: return i18n("Horizontal"); case DvbSTransponder::Vertical: return i18n("Vertical"); case DvbSTransponder::CircularLeft: return i18n("Circular left"); case DvbSTransponder::CircularRight: return i18n("Circular right"); } return QString(); } static QString enumToString(DvbS2Transponder::Modulation modulation) { switch (modulation) { case DvbS2Transponder::Qpsk: return "QPSK"; case DvbS2Transponder::Psk8: return "8-PSK"; case DvbS2Transponder::Apsk16: return "16-APSK"; case DvbS2Transponder::Apsk32: return "32-APSK"; case DvbS2Transponder::ModulationAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbS2Transponder::RollOff rollOff) { switch (rollOff) { case DvbS2Transponder::RollOff20: return "0.20"; case DvbS2Transponder::RollOff25: return "0.25"; case DvbS2Transponder::RollOff35: return "0.35"; case DvbS2Transponder::RollOffAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbTTransponder::Bandwidth bandwidth) { switch (bandwidth) { case DvbTTransponder::Bandwidth6MHz: return "6MHz"; case DvbTTransponder::Bandwidth7MHz: return "7MHz"; case DvbTTransponder::Bandwidth8MHz: return "8MHz"; case DvbTTransponder::BandwidthAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbTTransponder::Modulation modulation) { switch (modulation) { case DvbTTransponder::Qpsk: return "QPSK"; case DvbTTransponder::Qam16: return "16-QAM"; case DvbTTransponder::Qam64: return "64-QAM"; case DvbTTransponder::ModulationAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbTTransponder::TransmissionMode transmissionMode) { switch (transmissionMode) { case DvbTTransponder::TransmissionMode2k: return "2k"; case DvbTTransponder::TransmissionMode4k: return "4k"; case DvbTTransponder::TransmissionMode8k: return "8k"; case DvbTTransponder::TransmissionModeAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbTTransponder::GuardInterval guardInterval) { switch (guardInterval) { case DvbTTransponder::GuardInterval1_4: return "1/4"; case DvbTTransponder::GuardInterval1_8: return "1/8"; case DvbTTransponder::GuardInterval1_16: return "1/16"; case DvbTTransponder::GuardInterval1_32: return "1/32"; case DvbTTransponder::GuardIntervalAuto: return "AUTO"; } return QString(); } static QString enumToString(DvbTTransponder::Hierarchy hierarchy) { switch (hierarchy) { case DvbTTransponder::HierarchyNone: return "NONE"; case DvbTTransponder::Hierarchy1: return "1"; case DvbTTransponder::Hierarchy2: return "2"; case DvbTTransponder::Hierarchy4: return "4"; case DvbTTransponder::HierarchyAuto: return "AUTO"; } return QString(); } static QString enumToString(AtscTransponder::Modulation modulation) { switch (modulation) { case AtscTransponder::Qam64: return "64-QAM"; case AtscTransponder::Qam256: return "256-QAM"; case AtscTransponder::Vsb8: return "8-VSB"; case AtscTransponder::Vsb16: return "16-VSB"; case AtscTransponder::ModulationAuto: return "AUTO"; } return QString(); } DvbChannelEditor::DvbChannelEditor(DvbChannelTableModel *model_, const DvbSharedChannel &channel_, QWidget *parent) : KDialog(parent), model(model_), channel(channel_) { setCaption(i18nc("@title:window", "Edit Channel")); QWidget *widget = new QWidget(this); QBoxLayout *mainLayout = new QVBoxLayout(widget); QGridLayout *gridLayout = new QGridLayout(); nameEdit = new KLineEdit(widget); nameEdit->setText(channel->name); gridLayout->addWidget(nameEdit, 0, 1); QLabel *label = new QLabel(i18nc("@label tv channel", "Name:"), widget); label->setBuddy(nameEdit); gridLayout->addWidget(label, 0, 0); numberBox = new QSpinBox(widget); numberBox->setRange(1, 99999); numberBox->setValue(channel->number); gridLayout->addWidget(numberBox, 0, 3); label = new QLabel(i18nc("@label tv channel", "Number:"), widget); label->setBuddy(numberBox); gridLayout->addWidget(label, 0, 2); mainLayout->addLayout(gridLayout); QBoxLayout *boxLayout = new QHBoxLayout(); QGroupBox *groupBox = new QGroupBox(widget); gridLayout = new QGridLayout(groupBox); gridLayout->addWidget(new QLabel(i18nc("@label tv channel", "Source:")), 0, 0); gridLayout->addWidget(new QLabel(channel->source), 0, 1); switch (channel->transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: { const DvbCTransponder *tp = channel->transponder.as(); gridLayout->addWidget(new QLabel(i18n("Frequency (MHz):")), 1, 0); gridLayout->addWidget( new QLabel(QString::number(tp->frequency / 1000000.0)), 1, 1); gridLayout->addWidget(new QLabel(i18n("Symbol rate (kS/s):")), 2, 0); gridLayout->addWidget(new QLabel(QString::number(tp->symbolRate / 1000.0)), 2, 1); gridLayout->addWidget(new QLabel(i18n("Modulation:")), 3, 0); gridLayout->addWidget(new QLabel(enumToString(tp->modulation)), 3, 1); gridLayout->addWidget(new QLabel(i18n("FEC rate:")), 4, 0); gridLayout->addWidget(new QLabel(enumToString(tp->fecRate)), 4, 1); break; } case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: { const DvbS2Transponder *tp2 = channel->transponder.as(); const DvbSTransponder *tp = channel->transponder.as(); if (tp == NULL) { tp = tp2; } gridLayout->addWidget(new QLabel(i18n("Polarization:")), 1, 0); gridLayout->addWidget(new QLabel(enumToString(tp->polarization)), 1, 1); gridLayout->addWidget(new QLabel(i18n("Frequency (MHz):")), 2, 0); gridLayout->addWidget(new QLabel(QString::number(tp->frequency / 1000.0)), 2, 1); gridLayout->addWidget(new QLabel(i18n("Symbol rate (kS/s):")), 3, 0); gridLayout->addWidget(new QLabel(QString::number(tp->symbolRate / 1000.0)), 3, 1); gridLayout->addWidget(new QLabel(i18n("FEC rate:")), 4, 0); gridLayout->addWidget(new QLabel(enumToString(tp->fecRate)), 4, 1); if (tp2 != NULL) { gridLayout->addWidget(new QLabel(i18n("Modulation:")), 5, 0); gridLayout->addWidget(new QLabel(enumToString(tp2->modulation)), 5, 1); gridLayout->addWidget(new QLabel(i18n("Roll-off:")), 6, 0); gridLayout->addWidget(new QLabel(enumToString(tp2->rollOff)), 6, 1); } break; } case DvbTransponderBase::DvbT: { const DvbTTransponder *tp = channel->transponder.as(); gridLayout->addWidget(new QLabel(i18n("Frequency (MHz):")), 1, 0); gridLayout->addWidget( new QLabel(QString::number(tp->frequency / 1000000.0)), 1, 1); gridLayout->addWidget(new QLabel(i18n("Bandwidth:")), 2, 0); gridLayout->addWidget(new QLabel(enumToString(tp->bandwidth)), 2, 1); gridLayout->addWidget(new QLabel(i18n("Modulation:")), 3, 0); gridLayout->addWidget(new QLabel(enumToString(tp->modulation)), 3, 1); gridLayout->addWidget(new QLabel(i18n("FEC rate:")), 4, 0); gridLayout->addWidget(new QLabel(enumToString(tp->fecRateHigh)), 4, 1); gridLayout->addWidget(new QLabel(i18n("FEC rate LP:")), 5, 0); gridLayout->addWidget(new QLabel(enumToString(tp->fecRateLow)), 5, 1); gridLayout->addWidget(new QLabel(i18n("Transmission mode:")), 6, 0); gridLayout->addWidget(new QLabel(enumToString(tp->transmissionMode)), 6, 1); gridLayout->addWidget(new QLabel(i18n("Guard interval:")), 7, 0); gridLayout->addWidget(new QLabel(enumToString(tp->guardInterval)), 7, 1); gridLayout->addWidget(new QLabel(i18n("Hierarchy:")), 8, 0); gridLayout->addWidget(new QLabel(enumToString(tp->hierarchy)), 8, 1); break; } case DvbTransponderBase::Atsc: { const AtscTransponder *tp = channel->transponder.as(); gridLayout->addWidget(new QLabel(i18n("Frequency (MHz):")), 1, 0); gridLayout->addWidget( new QLabel(QString::number(tp->frequency / 1000000.0)), 1, 1); gridLayout->addWidget(new QLabel(i18n("Modulation:")), 2, 0); gridLayout->addWidget(new QLabel(enumToString(tp->modulation)), 2, 1); break; } } gridLayout->addWidget(new QLabel(), 10, 0, 1, 2); gridLayout->addWidget(new QLabel(i18n("PMT PID:")), 11, 0); gridLayout->addWidget(new QLabel(QString::number(channel->pmtPid)), 11, 1); DvbPmtParser pmtParser(DvbPmtSection(channel->pmtSectionData)); int row = 12; if (pmtParser.videoPid >= 0) { gridLayout->addWidget(new QLabel(i18n("Video PID:")), row, 0); gridLayout->addWidget(new QLabel(QString::number(pmtParser.videoPid)), row++, 1); } if (!pmtParser.subtitlePids.isEmpty()) { gridLayout->addWidget(new QLabel(i18n("Subtitle PID:")), row, 0); } for (int i = 0; i < pmtParser.subtitlePids.size(); ++i) { const QPair &it = pmtParser.subtitlePids.at(i); gridLayout->addWidget(new QLabel(QString("%1 (%2)").arg(it.first).arg(it.second)), row++, 1); } if (pmtParser.teletextPid != -1) { gridLayout->addWidget(new QLabel(i18n("Teletext PID:")), row, 0); gridLayout->addWidget( new QLabel(QString::number(pmtParser.teletextPid)), row++, 1); } gridLayout->addItem(new QSpacerItem(0, 0), row, 0, 1, 2); gridLayout->setRowStretch(row, 1); boxLayout->addWidget(groupBox); groupBox = new QGroupBox(widget); gridLayout = new QGridLayout(groupBox); gridLayout->addWidget(new QLabel(i18n("Network ID:")), 0, 0); networkIdBox = new QSpinBox(groupBox); networkIdBox->setRange(-1, (1 << 16) - 1); networkIdBox->setValue(channel->networkId); gridLayout->addWidget(networkIdBox, 0, 1); gridLayout->addWidget(new QLabel(i18n("Transport stream ID:")), 1, 0); transportStreamIdBox = new QSpinBox(groupBox); transportStreamIdBox->setRange(0, (1 << 16) - 1); transportStreamIdBox->setValue(channel->transportStreamId); gridLayout->addWidget(transportStreamIdBox, 1, 1); gridLayout->addWidget(new QLabel(i18n("Service ID:")), 2, 0); serviceIdBox = new QSpinBox(groupBox); serviceIdBox->setRange(0, (1 << 16) - 1); serviceIdBox->setValue(channel->serviceId); gridLayout->addWidget(serviceIdBox, 2, 1); gridLayout->addWidget(new QLabel(i18n("Audio channel:")), 3, 0); audioChannelBox = new KComboBox(groupBox); for (int i = 0; i < pmtParser.audioPids.size(); ++i) { const QPair &it = pmtParser.audioPids.at(i); QString text = QString::number(it.first); if (!it.second.isEmpty()) { text = text + " (" + it.second + ')'; } audioChannelBox->addItem(text); audioPids.append(it.first); } audioChannelBox->setCurrentIndex(audioPids.indexOf(channel->audioPid)); if (audioPids.size() <= 1) { audioChannelBox->setEnabled(false); } gridLayout->addWidget(audioChannelBox, 3, 1); gridLayout->addWidget(new QLabel(i18n("Scrambled:")), 4, 0); scrambledBox = new QCheckBox(groupBox); scrambledBox->setChecked(channel->isScrambled); gridLayout->addWidget(scrambledBox, 4, 1); gridLayout->addItem(new QSpacerItem(0, 0), 5, 0, 1, 2); gridLayout->setRowStretch(5, 1); boxLayout->addWidget(groupBox); mainLayout->addLayout(boxLayout); setMainWidget(widget); } DvbChannelEditor::~DvbChannelEditor() { } void DvbChannelEditor::accept() { DvbChannel updatedChannel = *channel; updatedChannel.name = nameEdit->text(); updatedChannel.number = numberBox->value(); updatedChannel.networkId = networkIdBox->value(); updatedChannel.transportStreamId = transportStreamIdBox->value(); updatedChannel.serviceId = serviceIdBox->value(); if (audioChannelBox->currentIndex() != -1) { updatedChannel.audioPid = audioPids.at(audioChannelBox->currentIndex()); } updatedChannel.isScrambled = scrambledBox->isChecked(); model->getChannelModel()->updateChannel(channel, updatedChannel); KDialog::accept(); } kaffeine-1.2.2/src/dvb/dvbdevice_linux.cpp0000644000175000017500000006004411552636277020154 0ustar lxuserlxuser/* * dvbdevice_linux.cpp * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbdevice_linux.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "dvbtransponder.h" // krazy:excludeall=syscalls DvbLinuxDevice::DvbLinuxDevice(QObject *parent) : QThread(parent), ready(false), frontend(NULL), enabled(false), frontendFd(-1), dvrFd(-1), dvrBuffer(NULL, 0) { dvrPipe[0] = -1; dvrPipe[1] = -1; } DvbLinuxDevice::~DvbLinuxDevice() { stopDevice(); } bool DvbLinuxDevice::isReady() const { return ready; } void DvbLinuxDevice::startDevice(const QString &deviceId_) { Q_ASSERT(!ready); int fd = open(QFile::encodeName(frontendPath), O_RDONLY | O_NONBLOCK); if (fd < 0) { kWarning() << "cannot open frontend" << frontendPath; return; } dvb_frontend_info frontend_info; memset(&frontend_info, 0, sizeof(frontend_info)); if (ioctl(fd, FE_GET_INFO, &frontend_info) != 0) { kWarning() << "ioctl FE_GET_INFO failed for frontend" << frontendPath; close(fd); return; } close(fd); deviceId = deviceId_; frontendName = QString::fromUtf8(frontend_info.name); switch (frontend_info.type) { case FE_QAM: transmissionTypes = DvbC; break; case FE_QPSK: transmissionTypes = DvbS; if (((frontend_info.caps & FE_CAN_2G_MODULATION) != 0) || (strcmp(frontend_info.name, "Conexant CX24116/CX24118") == 0) || (strcmp(frontend_info.name, "Genpix 8psk-to-USB2 DVB-S") == 0) || (strcmp(frontend_info.name, "STB0899 Multistandard") == 0)) { transmissionTypes |= DvbS2; } break; case FE_OFDM: transmissionTypes = DvbT; break; case FE_ATSC: transmissionTypes = Atsc; break; default: kWarning() << "unknown type" << frontend_info.type << "for frontend" << frontendPath; return; } capabilities = 0; if ((frontend_info.caps & FE_CAN_QAM_AUTO) != 0) { capabilities |= DvbTModulationAuto; } if ((frontend_info.caps & FE_CAN_FEC_AUTO) != 0) { capabilities |= DvbTFecAuto; } if ((frontend_info.caps & FE_CAN_TRANSMISSION_MODE_AUTO) != 0) { capabilities |= DvbTTransmissionModeAuto; } if ((frontend_info.caps & FE_CAN_GUARD_INTERVAL_AUTO) != 0) { capabilities |= DvbTGuardIntervalAuto; } kDebug() << "found dvb device" << deviceId << '/' << frontendName; ready = true; } void DvbLinuxDevice::startCa() { Q_ASSERT(ready && !caPath.isEmpty()); if (enabled) { cam.startCa(caPath); } } void DvbLinuxDevice::stopCa() { Q_ASSERT(ready && caPath.isEmpty()); if (enabled) { cam.stopCa(); } } void DvbLinuxDevice::stopDevice() { setDeviceEnabled(false); ready = false; } QString DvbLinuxDevice::getDeviceId() { Q_ASSERT(ready); return deviceId; } QString DvbLinuxDevice::getFrontendName() { Q_ASSERT(ready); return frontendName; } DvbLinuxDevice::TransmissionTypes DvbLinuxDevice::getTransmissionTypes() { Q_ASSERT(ready); return transmissionTypes; } DvbLinuxDevice::Capabilities DvbLinuxDevice::getCapabilities() { Q_ASSERT(ready); return capabilities; } void DvbLinuxDevice::setFrontendDevice(DvbFrontendDevice *frontend_) { frontend = frontend_; } void DvbLinuxDevice::setDeviceEnabled(bool enabled_) { Q_ASSERT(ready); if (enabled != enabled_) { enabled = enabled_; if (enabled) { if (!caPath.isEmpty()) { cam.startCa(caPath); } } else { release(); cam.stopCa(); } } } bool DvbLinuxDevice::acquire() { Q_ASSERT(enabled && (frontendFd < 0) && (dvrFd < 0)); frontendFd = open(QFile::encodeName(frontendPath), O_RDWR | O_NONBLOCK); if (frontendFd < 0) { kWarning() << "cannot open frontend" << frontendPath; return false; } dvrFd = open(QFile::encodeName(dvrPath), O_RDONLY | O_NONBLOCK); if (dvrFd < 0) { kWarning() << "cannot open dvr" << dvrPath; close(frontendFd); frontendFd = -1; return false; } return true; } bool DvbLinuxDevice::setTone(SecTone tone) { Q_ASSERT(frontendFd >= 0); if (ioctl(frontendFd, FE_SET_TONE, (tone == ToneOn) ? SEC_TONE_ON : SEC_TONE_OFF) != 0) { kWarning() << "ioctl FE_SET_TONE failed for frontend" << frontendPath; return false; } return true; } bool DvbLinuxDevice::setVoltage(SecVoltage voltage) { Q_ASSERT(frontendFd >= 0); if (ioctl(frontendFd, FE_SET_VOLTAGE, (voltage == Voltage18V) ? SEC_VOLTAGE_18 : SEC_VOLTAGE_13) != 0) { kWarning() << "ioctl FE_SET_VOLTAGE failed for frontend" << frontendPath; return false; } return true; } bool DvbLinuxDevice::sendMessage(const char *message, int length) { Q_ASSERT((frontendFd >= 0) && (length >= 0) && (length <= 6)); dvb_diseqc_master_cmd cmd; memset(&cmd, 0, sizeof(cmd)); memcpy(&cmd.msg, message, length); cmd.msg_len = length; if (ioctl(frontendFd, FE_DISEQC_SEND_MASTER_CMD, &cmd) != 0) { kWarning() << "ioctl FE_DISEQC_SEND_MASTER_CMD failed for frontend" << frontendPath; return false; } return true; } bool DvbLinuxDevice::sendBurst(SecBurst burst) { Q_ASSERT(frontendFd >= 0); if (ioctl(frontendFd, FE_DISEQC_SEND_BURST, (burst == BurstMiniA) ? SEC_MINI_A : SEC_MINI_B) != 0) { kWarning() << "ioctl FE_DISEQC_SEND_BURST failed for frontend" << frontendPath; return false; } return true; } static fe_modulation_t convertDvbModulation(DvbCTransponder::Modulation modulation) { switch (modulation) { case DvbCTransponder::Qam16: return QAM_16; case DvbCTransponder::Qam32: return QAM_32; case DvbCTransponder::Qam64: return QAM_64; case DvbCTransponder::Qam128: return QAM_128; case DvbCTransponder::Qam256: return QAM_256; case DvbCTransponder::ModulationAuto: return QAM_AUTO; } return QAM_AUTO; } static fe_modulation_t convertDvbModulation(DvbS2Transponder::Modulation modulation) { switch (modulation) { case DvbS2Transponder::Qpsk: return QPSK; case DvbS2Transponder::Psk8: return PSK_8; case DvbS2Transponder::Apsk16: return APSK_16; case DvbS2Transponder::Apsk32: return APSK_32; case DvbS2Transponder::ModulationAuto: return QAM_AUTO; } return QAM_AUTO; } static fe_rolloff convertDvbRollOff(DvbS2Transponder::RollOff rollOff) { switch (rollOff) { case DvbS2Transponder::RollOff20: return ROLLOFF_20; case DvbS2Transponder::RollOff25: return ROLLOFF_25; case DvbS2Transponder::RollOff35: return ROLLOFF_35; case DvbS2Transponder::RollOffAuto: return ROLLOFF_AUTO; } return ROLLOFF_AUTO; } static fe_modulation_t convertDvbModulation(DvbTTransponder::Modulation modulation) { switch (modulation) { case DvbTTransponder::Qpsk: return QPSK; case DvbTTransponder::Qam16: return QAM_16; case DvbTTransponder::Qam64: return QAM_64; case DvbTTransponder::ModulationAuto: return QAM_AUTO; } return QAM_AUTO; } static fe_modulation_t convertDvbModulation(AtscTransponder::Modulation modulation) { switch (modulation) { case AtscTransponder::Qam64: return QAM_64; case AtscTransponder::Qam256: return QAM_256; case AtscTransponder::Vsb8: return VSB_8; case AtscTransponder::Vsb16: return VSB_16; case AtscTransponder::ModulationAuto: return QAM_AUTO; } return QAM_AUTO; } static fe_code_rate convertDvbFecRate(DvbTransponderBase::FecRate fecRate) { switch (fecRate) { case DvbTransponderBase::FecNone: return FEC_NONE; case DvbTransponderBase::Fec1_2: return FEC_1_2; case DvbTransponderBase::Fec1_3: return FEC_AUTO; // FIXME case DvbTransponderBase::Fec1_4: return FEC_AUTO; // FIXME case DvbTransponderBase::Fec2_3: return FEC_2_3; case DvbTransponderBase::Fec2_5: return FEC_AUTO; // FIXME case DvbTransponderBase::Fec3_4: return FEC_3_4; case DvbTransponderBase::Fec3_5: return FEC_3_5; case DvbTransponderBase::Fec4_5: return FEC_4_5; case DvbTransponderBase::Fec5_6: return FEC_5_6; case DvbTransponderBase::Fec6_7: return FEC_6_7; case DvbTransponderBase::Fec7_8: return FEC_7_8; case DvbTransponderBase::Fec8_9: return FEC_8_9; case DvbTransponderBase::Fec9_10: return FEC_9_10; case DvbTransponderBase::FecAuto: return FEC_AUTO; } return FEC_AUTO; } static fe_bandwidth convertDvbBandwidth(DvbTTransponder::Bandwidth bandwidth) { switch (bandwidth) { case DvbTTransponder::Bandwidth6MHz: return BANDWIDTH_6_MHZ; case DvbTTransponder::Bandwidth7MHz: return BANDWIDTH_7_MHZ; case DvbTTransponder::Bandwidth8MHz: return BANDWIDTH_8_MHZ; case DvbTTransponder::BandwidthAuto: return BANDWIDTH_AUTO; } return BANDWIDTH_AUTO; } static fe_transmit_mode convertDvbTransmissionMode(DvbTTransponder::TransmissionMode mode) { switch (mode) { case DvbTTransponder::TransmissionMode2k: return TRANSMISSION_MODE_2K; case DvbTTransponder::TransmissionMode4k: return TRANSMISSION_MODE_4K; case DvbTTransponder::TransmissionMode8k: return TRANSMISSION_MODE_8K; case DvbTTransponder::TransmissionModeAuto: return TRANSMISSION_MODE_AUTO; } return TRANSMISSION_MODE_AUTO; } static fe_guard_interval convertDvbGuardInterval(DvbTTransponder::GuardInterval guardInterval) { switch (guardInterval) { case DvbTTransponder::GuardInterval1_4: return GUARD_INTERVAL_1_4; case DvbTTransponder::GuardInterval1_8: return GUARD_INTERVAL_1_8; case DvbTTransponder::GuardInterval1_16: return GUARD_INTERVAL_1_16; case DvbTTransponder::GuardInterval1_32: return GUARD_INTERVAL_1_32; case DvbTTransponder::GuardIntervalAuto: return GUARD_INTERVAL_AUTO; } return GUARD_INTERVAL_AUTO; } static fe_hierarchy convertDvbHierarchy(DvbTTransponder::Hierarchy hierarchy) { switch (hierarchy) { case DvbTTransponder::HierarchyNone: return HIERARCHY_NONE; case DvbTTransponder::Hierarchy1: return HIERARCHY_1; case DvbTTransponder::Hierarchy2: return HIERARCHY_2; case DvbTTransponder::Hierarchy4: return HIERARCHY_4; case DvbTTransponder::HierarchyAuto: return HIERARCHY_AUTO; } return HIERARCHY_AUTO; } bool DvbLinuxDevice::tune(const DvbTransponder &transponder) { Q_ASSERT(frontendFd >= 0); stopDvr(); dvb_frontend_parameters params; switch (transponder.getTransmissionType()) { case DvbTransponderBase::DvbC: { const DvbCTransponder *dvbCTransponder = transponder.as(); memset(¶ms, 0, sizeof(params)); params.frequency = dvbCTransponder->frequency; params.inversion = INVERSION_AUTO; params.u.qam.symbol_rate = dvbCTransponder->symbolRate; params.u.qam.fec_inner = convertDvbFecRate(dvbCTransponder->fecRate); params.u.qam.modulation = convertDvbModulation(dvbCTransponder->modulation); break; } case DvbTransponderBase::DvbS: { const DvbSTransponder *dvbSTransponder = transponder.as(); memset(¶ms, 0, sizeof(params)); params.frequency = dvbSTransponder->frequency; params.inversion = INVERSION_AUTO; params.u.qpsk.symbol_rate = dvbSTransponder->symbolRate; params.u.qpsk.fec_inner = convertDvbFecRate(dvbSTransponder->fecRate); break; } case DvbTransponderBase::DvbS2: { const DvbS2Transponder *dvbS2Transponder = transponder.as(); dtv_property properties[9]; memset(properties, 0, sizeof(properties)); properties[0].cmd = DTV_DELIVERY_SYSTEM; properties[0].u.data = SYS_DVBS2; properties[1].cmd = DTV_FREQUENCY; properties[1].u.data = dvbS2Transponder->frequency; properties[2].cmd = DTV_SYMBOL_RATE; properties[2].u.data = dvbS2Transponder->symbolRate; properties[3].cmd = DTV_MODULATION; properties[3].u.data = convertDvbModulation(dvbS2Transponder->modulation); properties[4].cmd = DTV_ROLLOFF; properties[4].u.data = convertDvbRollOff(dvbS2Transponder->rollOff); properties[5].cmd = DTV_INVERSION; properties[5].u.data = INVERSION_AUTO; properties[6].cmd = DTV_PILOT; properties[6].u.data = PILOT_AUTO; properties[7].cmd = DTV_INNER_FEC; properties[7].u.data = convertDvbFecRate(dvbS2Transponder->fecRate); properties[8].cmd = DTV_TUNE; dtv_properties propertyList; memset(&propertyList, 0, sizeof(propertyList)); propertyList.props = properties; propertyList.num = (sizeof(properties) / sizeof(properties[0])); if (ioctl(frontendFd, FE_SET_PROPERTY, &propertyList) != 0) { kWarning() << "ioctl FE_SET_PROPERTY failed for frontend" << frontendPath; return false; } startDvr(); return true; } case DvbTransponderBase::DvbT: { const DvbTTransponder *dvbTTransponder = transponder.as(); memset(¶ms, 0, sizeof(params)); params.frequency = dvbTTransponder->frequency; params.inversion = INVERSION_AUTO; params.u.ofdm.bandwidth = convertDvbBandwidth(dvbTTransponder->bandwidth); params.u.ofdm.code_rate_HP = convertDvbFecRate(dvbTTransponder->fecRateHigh); params.u.ofdm.code_rate_LP = convertDvbFecRate(dvbTTransponder->fecRateLow); params.u.ofdm.constellation = convertDvbModulation(dvbTTransponder->modulation); params.u.ofdm.transmission_mode = convertDvbTransmissionMode(dvbTTransponder->transmissionMode); params.u.ofdm.guard_interval = convertDvbGuardInterval(dvbTTransponder->guardInterval); params.u.ofdm.hierarchy_information = convertDvbHierarchy(dvbTTransponder->hierarchy); break; } case DvbTransponderBase::Atsc: { const AtscTransponder *atscTransponder = transponder.as(); memset(¶ms, 0, sizeof(params)); params.frequency = atscTransponder->frequency; params.inversion = INVERSION_AUTO; params.u.vsb.modulation = convertDvbModulation(atscTransponder->modulation); break; } default: kWarning() << "unknown transmission type" << transponder.getTransmissionType(); return false; } if (ioctl(frontendFd, FE_SET_FRONTEND, ¶ms) != 0) { kWarning() << "ioctl FE_SET_FRONTEND failed for frontend" << frontendPath; return false; } startDvr(); return true; } bool DvbLinuxDevice::isTuned() { Q_ASSERT(frontendFd >= 0); fe_status_t status; memset(&status, 0, sizeof(status)); if (ioctl(frontendFd, FE_READ_STATUS, &status) != 0) { kWarning() << "ioctl FE_READ_STATUS failed for frontend" << frontendPath; return false; } return ((status & FE_HAS_LOCK) != 0); } int DvbLinuxDevice::getSignal() { Q_ASSERT(frontendFd >= 0); quint16 signal = 0; if (ioctl(frontendFd, FE_READ_SIGNAL_STRENGTH, &signal) != 0) { kWarning() << "ioctl FE_READ_SIGNAL_STRENGTH failed for frontend" << frontendPath; return -1; } if (signal == 0) { // assume that reading signal strength isn't supported return -1; } return ((signal * 100 + 0x8001) >> 16); } int DvbLinuxDevice::getSnr() { Q_ASSERT(frontendFd >= 0); quint16 snr = 0; if (ioctl(frontendFd, FE_READ_SNR, &snr) != 0) { kWarning() << "ioctl FE_READ_SNR failed for frontend" << frontendPath; return -1; } if (snr == 0) { // assume that reading snr isn't supported return -1; } return ((snr * 100 + 0x8001) >> 16); } bool DvbLinuxDevice::addPidFilter(int pid) { Q_ASSERT(frontendFd >= 0); if (dmxFds.contains(pid)) { kWarning() << "pid filter already set up for pid" << pid; return false; } int dmxFd = open(QFile::encodeName(demuxPath), O_RDONLY | O_NONBLOCK); if (dmxFd < 0) { kWarning() << "cannot open demux" << demuxPath; return false; } dmx_pes_filter_params pes_filter; memset(&pes_filter, 0, sizeof(pes_filter)); pes_filter.pid = pid; pes_filter.input = DMX_IN_FRONTEND; pes_filter.output = DMX_OUT_TS_TAP; pes_filter.pes_type = DMX_PES_OTHER; pes_filter.flags = DMX_IMMEDIATE_START; if (ioctl(dmxFd, DMX_SET_PES_FILTER, &pes_filter) != 0) { kWarning() << "cannot set up pid filter for demux" << demuxPath; close(dmxFd); return false; } dmxFds.insert(pid, dmxFd); return true; } void DvbLinuxDevice::removePidFilter(int pid) { Q_ASSERT(frontendFd >= 0); if (!dmxFds.contains(pid)) { kWarning() << "no pid filter set up for pid" << pid; return; } close(dmxFds.take(pid)); } void DvbLinuxDevice::startDescrambling(const QByteArray &pmtSectionData) { cam.startDescrambling(pmtSectionData); } void DvbLinuxDevice::stopDescrambling(int serviceId) { cam.stopDescrambling(serviceId); } void DvbLinuxDevice::release() { stopDvr(); if (dvrBuffer.data != NULL) { dvrBuffer.dataSize = 0; frontend->writeBuffer(dvrBuffer); dvrBuffer.data = NULL; } if (dvrPipe[0] >= 0) { close(dvrPipe[0]); dvrPipe[0] = -1; } if (dvrPipe[1] >= 0) { close(dvrPipe[1]); dvrPipe[1] = -1; } if (dvrFd >= 0) { close(dvrFd); dvrFd = -1; } foreach (int dmxFd, dmxFds) { close(dmxFd); } dmxFds.clear(); if (frontendFd >= 0) { close(frontendFd); frontendFd = -1; } } void DvbLinuxDevice::startDvr() { Q_ASSERT((dvrFd >= 0) && !isRunning()); if ((dvrPipe[0] < 0) || (dvrPipe[1] < 0)) { if (pipe(dvrPipe) != 0) { dvrPipe[0] = -1; dvrPipe[1] = -1; } if ((dvrPipe[0] < 0) || (dvrPipe[1] < 0)) { kWarning() << "cannot create pipe"; return; } } if (dvrBuffer.data == NULL) { dvrBuffer = frontend->getBuffer(); } while (true) { int bufferSize = dvrBuffer.bufferSize; int dataSize = read(dvrFd, dvrBuffer.data, bufferSize); if (dataSize < 0) { if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { break; } if (errno == EINTR) { continue; } dataSize = read(dvrFd, dvrBuffer.data, bufferSize); if (dataSize < 0) { if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { break; } if (errno == EINTR) { continue; } kWarning() << "cannot read from dvr" << dvrPath; return; } } if (dataSize != bufferSize) { break; } } start(); } void DvbLinuxDevice::stopDvr() { if (isRunning()) { Q_ASSERT((dvrPipe[0] >= 0) && (dvrPipe[1] >= 0)); if (write(dvrPipe[1], " ", 1) != 1) { kWarning() << "cannot write to pipe"; } wait(); char data; if (read(dvrPipe[0], &data, 1) != 1) { kWarning() << "cannot read from pipe"; } } } void DvbLinuxDevice::run() { Q_ASSERT((dvrFd >= 0) && (dvrPipe[0] >= 0) && (dvrBuffer.data != NULL)); pollfd pollFds[2]; memset(&pollFds, 0, sizeof(pollFds)); pollFds[0].fd = dvrPipe[0]; pollFds[0].events = POLLIN; pollFds[1].fd = dvrFd; pollFds[1].events = POLLIN; while (true) { if (poll(pollFds, 2, -1) < 0) { if (errno == EINTR) { continue; } kWarning() << "poll failed"; return; } if ((pollFds[0].revents & POLLIN) != 0) { return; } while (true) { int bufferSize = dvrBuffer.bufferSize; int dataSize = read(dvrFd, dvrBuffer.data, bufferSize); if (dataSize < 0) { if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { break; } if (errno == EINTR) { continue; } kWarning() << "cannot read from dvr" << dvrPath; dataSize = read(dvrFd, dvrBuffer.data, bufferSize); if (dataSize < 0) { if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { break; } if (errno == EINTR) { continue; } kWarning() << "cannot read from dvr" << dvrPath; return; } } if (dataSize > 0) { dvrBuffer.dataSize = dataSize; frontend->writeBuffer(dvrBuffer); dvrBuffer = frontend->getBuffer(); } if (dataSize != bufferSize) { break; } } msleep(10); } } DvbLinuxDeviceManager::DvbLinuxDeviceManager(QObject *parent) : QObject(parent) { QObject *notifier = Solid::DeviceNotifier::instance(); connect(notifier, SIGNAL(deviceAdded(QString)), this, SLOT(componentAdded(QString))); connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(componentRemoved(QString))); } DvbLinuxDeviceManager::~DvbLinuxDeviceManager() { } void DvbLinuxDeviceManager::doColdPlug() { foreach (const Solid::Device &device, Solid::Device::listFromType(Solid::DeviceInterface::DvbInterface)) { componentAdded(device.udi()); } } void DvbLinuxDeviceManager::componentAdded(const QString &udi) { const Solid::DvbInterface *dvbInterface = Solid::Device(udi).as(); if (dvbInterface == NULL) { return; } int adapter = dvbInterface->deviceAdapter(); int index = dvbInterface->deviceIndex(); QString devicePath = dvbInterface->device(); if ((adapter < 0) || (adapter > 0x7fff) || (index < 0) || (index > 0x7fff)) { kWarning() << "cannot determine adapter or index for device" << udi; return; } if (devicePath.isEmpty()) { kWarning() << "cannot determine path for device" << udi; return; } int deviceIndex = ((adapter << 16) | index); DvbLinuxDevice *device = devices.value(deviceIndex); if (device == NULL) { device = new DvbLinuxDevice(this); devices.insert(deviceIndex, device); } bool addDevice = false; switch (dvbInterface->deviceType()) { case Solid::DvbInterface::DvbCa: if (device->caPath.isEmpty()) { device->caPath = devicePath; device->caUdi = udi; udis.insert(udi, device); if (device->isReady()) { device->startCa(); } } break; case Solid::DvbInterface::DvbDemux: if (device->demuxPath.isEmpty()) { device->demuxPath = devicePath; device->demuxUdi = udi; udis.insert(udi, device); addDevice = true; } break; case Solid::DvbInterface::DvbDvr: if (device->dvrPath.isEmpty()) { device->dvrPath = devicePath; device->dvrUdi = udi; udis.insert(udi, device); addDevice = true; } break; case Solid::DvbInterface::DvbFrontend: if (device->frontendPath.isEmpty()) { device->frontendPath = devicePath; device->frontendUdi = udi; udis.insert(udi, device); addDevice = true; } break; default: break; } if (addDevice && !device->demuxPath.isEmpty() && !device->dvrPath.isEmpty() && !device->frontendPath.isEmpty()) { QString path = QString("/sys/class/dvb/dvb%1.frontend%2/").arg(adapter).arg(index); QString deviceId; if (QFile::exists(path + "device/vendor")) { // PCI device int vendor = readSysAttr(path + "device/vendor"); int device = readSysAttr(path + "device/device"); int subsystem_vendor = readSysAttr(path + "device/subsystem_vendor"); int subsystem_device = readSysAttr(path + "device/subsystem_device"); if ((vendor >= 0) && (device >= 0) && (subsystem_vendor >= 0) && (subsystem_device >= 0)) { deviceId = 'P'; deviceId += QString("%1").arg(vendor, 4, 16, QChar('0')); deviceId += QString("%1").arg(device, 4, 16, QChar('0')); deviceId += QString("%1").arg(subsystem_vendor, 4, 16, QChar('0')); deviceId += QString("%1").arg(subsystem_device, 4, 16, QChar('0')); } } else if (QFile::exists(path + "device/idVendor")) { // USB device int vendor = readSysAttr(path + "device/idVendor"); int product = readSysAttr(path + "device/idProduct"); if ((vendor >= 0) && (product >= 0)) { deviceId = 'U'; deviceId += QString("%1").arg(vendor, 4, 16, QChar('0')); deviceId += QString("%1").arg(product, 4, 16, QChar('0')); } } device->startDevice(deviceId); if (device->isReady()) { emit deviceAdded(device); } } } void DvbLinuxDeviceManager::componentRemoved(const QString &udi) { DvbLinuxDevice *device = udis.take(udi); if (device == NULL) { return; } bool removeDevice = false; if (udi == device->caUdi) { device->caPath.clear(); device->caUdi.clear(); if (device->isReady()) { device->stopCa(); } } else if (udi == device->demuxUdi) { device->demuxPath.clear(); device->demuxUdi.clear(); removeDevice = true; } else if (udi == device->dvrUdi) { device->dvrPath.clear(); device->dvrUdi.clear(); removeDevice = true; } else if (udi == device->frontendUdi) { device->frontendPath.clear(); device->frontendUdi.clear(); removeDevice = true; } if (removeDevice && device->isReady()) { emit deviceRemoved(device); device->stopDevice(); } } int DvbLinuxDeviceManager::readSysAttr(const QString &path) { QFile file(path); if (!file.open(QIODevice::ReadOnly)) { return -1; } QByteArray data = file.read(8); if ((data.size() == 0) || (data.size() == 8)) { return -1; } bool ok = false; int value = data.simplified().toInt(&ok, 0); if (!ok || (value < 0) || (value > 0xffff)) { return -1; } return value; } kaffeine-1.2.2/src/dvb/dvbtab.h0000644000175000017500000000533211552636277015710 0ustar lxuserlxuser/* * dvbtab.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBTAB_H #define DVBTAB_H #include #include #include "../tabbase.h" #include "dvbrecording.h" class QModelIndex; class QSplitter; class KAction; class KActionCollection; class KMenu; class DvbChannelTableModel; class DvbChannelView; class DvbTimeShiftCleaner; class MediaWidget; class DvbTab : public TabBase { Q_OBJECT public: DvbTab(KMenu *menu, KActionCollection *collection, MediaWidget *mediaWidget_); ~DvbTab(); void playChannel(const QString &nameOrNumber); void playLastChannel(); void toggleOsd(); void toggleInstantRecord(); DvbManager *getManager() const { return manager; } void enableDvbDump(); public slots: void osdKeyPressed(int key); void mayCloseApplication(bool *ok, QWidget *parent); private slots: void showChannelDialog(); void showEpgDialog(); void showRecordingDialog(); void instantRecord(bool checked); void recordingRemoved(const DvbSharedRecording &recording); void configureDvb(); void tuneOsdChannel(); void playChannel(const QModelIndex &index); void previousChannel(); void nextChannel(); void cleanTimeShiftFiles(); private: void activate(); void playChannel(const DvbSharedChannel &channel, const QModelIndex &index); MediaWidget *mediaWidget; DvbManager *manager; KAction *instantRecordAction; DvbSharedRecording instantRecording; QSplitter *splitter; DvbChannelTableModel *channelProxyModel; DvbChannelView *channelView; QLayout *mediaLayout; QString osdChannel; QTimer osdChannelTimer; QString currentChannel; QString lastChannel; DvbTimeShiftCleaner *timeShiftCleaner; }; #ifndef HAVE_DVB #error HAVE_DVB must be defined #endif /* HAVE_DVB */ #if HAVE_DVB == 0 inline void DvbTab::playChannel(QString const &) { } inline void DvbTab::playLastChannel() { } inline void DvbTab::toggleOsd() { } inline void DvbTab::toggleInstantRecord() { } inline void DvbTab::osdKeyPressed(int) { } #endif /* HAVE_DVB == 0 */ #endif /* DVBTAB_H */ kaffeine-1.2.2/src/dvb/dvbrecording.h0000644000175000017500000000562611552636277017124 0ustar lxuserlxuser/* * dvbrecording.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBRECORDING_H #define DVBRECORDING_H #include #include "dvbchannel.h" class DvbManager; class DvbRecordingFile; class DvbRecording : public SharedData, public SqlKey { public: DvbRecording() : repeat(0), status(Inactive) { } ~DvbRecording() { } // checks that all variables are ok and updates 'end' // 'sqlKey' and 'status' are ignored bool validate(); enum Status { Inactive, Recording, Error }; QString name; DvbSharedChannel channel; QDateTime begin; // UTC QDateTime end; // UTC, read-only QTime duration; int repeat; // (1 << 0) (monday) | (1 << 1) (tuesday) | ... | (1 << 6) (sunday) Status status; // read-only }; typedef ExplicitlySharedDataPointer DvbSharedRecording; Q_DECLARE_TYPEINFO(DvbSharedRecording, Q_MOVABLE_TYPE); class DvbRecordingModel : public QObject, private SqlInterface { Q_OBJECT public: DvbRecordingModel(DvbManager *manager_, QObject *parent); ~DvbRecordingModel(); bool hasRecordings() const; bool hasActiveRecordings() const; DvbSharedRecording findRecordingByKey(const SqlKey &sqlKey) const; QMap getRecordings() const; DvbSharedRecording addRecording(DvbRecording &recording); void updateRecording(DvbSharedRecording recording, DvbRecording &modifiedRecording); void removeRecording(DvbSharedRecording recording); signals: void recordingAdded(const DvbSharedRecording &recording); // updating doesn't change the recording pointer (modifies existing content) void recordingAboutToBeUpdated(const DvbSharedRecording &recording); void recordingUpdated(const DvbSharedRecording &recording); void recordingRemoved(const DvbSharedRecording &recording); private: void timerEvent(QTimerEvent *event); void bindToSqlQuery(SqlKey sqlKey, QSqlQuery &query, int index) const; bool insertFromSqlQuery(SqlKey sqlKey, const QSqlQuery &query, int index); bool updateStatus(DvbRecording &recording); DvbManager *manager; QMap recordings; QMap > recordingFiles; bool hasPendingOperation; }; #endif /* DVBRECORDING_H */ kaffeine-1.2.2/src/dvb/dvbepgdialog_p.h0000644000175000017500000000657311552636277017424 0ustar lxuserlxuser/* * dvbepgdialog_p.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBEPGDIALOG_P_H #define DVBEPGDIALOG_P_H #include "dvbchanneldialog.h" #include "dvbepg.h" class DvbEpgEntryLessThan { public: DvbEpgEntryLessThan() { } ~DvbEpgEntryLessThan() { } enum SortOrder { }; SortOrder getSortOrder() const { return SortOrder(); } void setSortOrder(SortOrder sortOrder_) { Q_UNUSED(sortOrder_) } bool operator()(const DvbSharedEpgEntry &x, const DvbSharedEpgEntry &y) const; }; class DvbEpgChannelTableModelHelper { public: DvbEpgChannelTableModelHelper() { } ~DvbEpgChannelTableModelHelper() { } typedef DvbSharedChannel ItemType; typedef DvbChannelLessThan LessThanType; int columnCount() const { return 1; } bool filterAcceptsItem(const DvbSharedChannel &channel) const { Q_UNUSED(channel) return true; } }; class DvbEpgChannelTableModel : public TableModel { Q_OBJECT public: explicit DvbEpgChannelTableModel(QObject *parent); ~DvbEpgChannelTableModel(); void setManager(DvbManager *manager); QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; private slots: void epgChannelAdded(const DvbSharedChannel &channel); void epgChannelRemoved(const DvbSharedChannel &channel); }; class DvbEpgTableModelHelper { public: DvbEpgTableModelHelper() : filterType(ChannelFilter) { } ~DvbEpgTableModelHelper() { } typedef DvbSharedEpgEntry ItemType; typedef DvbEpgEntryLessThan LessThanType; enum FilterType { ChannelFilter, ContentFilter }; int columnCount() const { return 4; } bool filterAcceptsItem(const DvbSharedEpgEntry &epgEntry) const; DvbSharedChannel channelFilter; QStringMatcher contentFilter; FilterType filterType; private: Q_DISABLE_COPY(DvbEpgTableModelHelper) }; class DvbEpgTableModel : public TableModel { Q_OBJECT public: explicit DvbEpgTableModel(QObject *parent); ~DvbEpgTableModel(); void setEpgModel(DvbEpgModel *epgModel_); void setChannelFilter(const DvbSharedChannel &channel); QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; public slots: void setContentFilter(const QString &pattern); private slots: void entryAdded(const DvbSharedEpgEntry &entry); void entryAboutToBeUpdated(const DvbSharedEpgEntry &entry); void entryUpdated(const DvbSharedEpgEntry &entry); void entryRemoved(const DvbSharedEpgEntry &entry); private: void customEvent(QEvent *event); DvbEpgModel *epgModel; bool contentFilterEventPending; }; #endif /* DVBEPGDIALOG_P_H */ kaffeine-1.2.2/src/dvb/dvbconfigdialog.h0000644000175000017500000001304511552636277017567 0ustar lxuserlxuser/* * dvbconfigdialog.h * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBCONFIGDIALOG_H #define DVBCONFIGDIALOG_H #include class QBoxLayout; class QButtonGroup; class QCheckBox; class QGridLayout; class QLabel; class QProgressBar; class QSpinBox; class QTreeWidget; class KComboBox; class KJob; class KLineEdit; class KTabWidget; namespace KIO { class Job; class TransferJob; } class DvbConfig; class DvbConfigBase; class DvbConfigPage; class DvbDeviceConfig; class DvbManager; class DvbSConfigObject; class DvbSLnbConfigObject; class DvbConfigDialog : public KDialog { Q_OBJECT public: DvbConfigDialog(DvbManager *manager_, QWidget *parent); ~DvbConfigDialog(); private slots: void changeRecordingFolder(); void changeTimeShiftFolder(); void updateScanFile(); void latitudeChanged(const QString &text); void longitudeChanged(const QString &text); void moveLeft(DvbConfigPage *configPage); void moveRight(DvbConfigPage *configPage); void remove(DvbConfigPage *configPage); private: static double toLatitude(const QString &text, bool *ok); static double toLongitude(const QString &text, bool *ok); void accept(); DvbManager *manager; KTabWidget *tabWidget; KLineEdit *recordingFolderEdit; KLineEdit *timeShiftFolderEdit; QSpinBox *beginMarginBox; QSpinBox *endMarginBox; QCheckBox *override6937CharsetBox; KLineEdit *latitudeEdit; KLineEdit *longitudeEdit; QPixmap validPixmap; QPixmap invalidPixmap; QLabel *latitudeValidLabel; QLabel *longitudeValidLabel; QList configPages; }; class DvbScanFileDownloadDialog : public KDialog { Q_OBJECT public: DvbScanFileDownloadDialog(DvbManager *manager_, QWidget *parent); ~DvbScanFileDownloadDialog(); private slots: void progressChanged(KJob *, unsigned long percent); void dataArrived(KIO::Job *, const QByteArray &data); void jobFinished(); private: DvbManager *manager; QProgressBar *progressBar; QLabel *label; KIO::TransferJob *job; QByteArray scanData; }; class DvbConfigPage : public QWidget { Q_OBJECT public: DvbConfigPage(QWidget *parent, DvbManager *manager, const DvbDeviceConfig *deviceConfig_); ~DvbConfigPage(); void setMoveLeftEnabled(bool enabled); void setMoveRightEnabled(bool enabled); const DvbDeviceConfig *getDeviceConfig() const; QList getConfigs(); signals: void moveLeft(DvbConfigPage *page); void moveRight(DvbConfigPage *page); void remove(DvbConfigPage *page); void resetConfig(); private slots: void moveLeft(); void moveRight(); void removeConfig(); private: void addHSeparator(const QString &title); const DvbDeviceConfig *deviceConfig; QBoxLayout *boxLayout; QPushButton *moveLeftButton; QPushButton *moveRightButton; QList configs; DvbSConfigObject *dvbSObject; }; class DvbConfigObject : public QObject { Q_OBJECT public: DvbConfigObject(QWidget *parent, QBoxLayout *layout, DvbManager *manager, DvbConfigBase *config_); ~DvbConfigObject(); private slots: void timeoutChanged(int timeout); void sourceChanged(int index); void nameChanged(); void resetConfig(); private: DvbConfigBase *config; QString defaultName; QSpinBox *timeoutBox; KComboBox *sourceBox; KLineEdit *nameEdit; }; class DvbSConfigObject : public QObject { Q_OBJECT public: DvbSConfigObject(QWidget *parent_, QBoxLayout *boxLayout, DvbManager *manager, const QList &configs, bool dvbS2); ~DvbSConfigObject(); void appendConfigs(QList &list); signals: void setDiseqcVisible(bool visible); void setRotorVisible(bool visible); // common parts of usals / positions ui void setUsalsVisible(bool visible); // usals-specific parts of ui void setPositionsVisible(bool visible); // positions-specific parts of ui private slots: void configChanged(int index); void addSatellite(); void removeSatellite(); void resetConfig(); private: DvbConfigBase *createConfig(int lnbNumber); QWidget *parent; DvbConfigBase *lnbConfig; QList diseqcConfigs; QList lnbConfigs; QStringList sources; QGridLayout *layout; QSpinBox *timeoutBox; KComboBox *configBox; KComboBox *sourceBox; QSpinBox *rotorSpinBox; QTreeWidget *satelliteView; }; class DvbSLnbConfigObject : public QObject { Q_OBJECT public: DvbSLnbConfigObject(QSpinBox *timeoutSpinBox, KComboBox *sourceBox_, QPushButton *configureButton_, DvbConfigBase *config_); ~DvbSLnbConfigObject(); void resetConfig(); private slots: void timeoutChanged(int value); void sourceChanged(int index); void configure(); void selectType(int type); void dialogAccepted(); private: KComboBox *sourceBox; QPushButton *configureButton; DvbConfigBase *config; QButtonGroup *lnbSelectionGroup; QLabel *lowBandLabel; QLabel *switchLabel; QLabel *highBandLabel; QSpinBox *lowBandSpinBox; QSpinBox *switchSpinBox; QSpinBox *highBandSpinBox; int currentType; }; #endif /* DVBCONFIGDIALOG_H */ kaffeine-1.2.2/src/dvb/dvbrecording_p.h0000644000175000017500000000341611552636277017436 0ustar lxuserlxuser/* * dvbrecording_p.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBRECORDING_P_H #define DVBRECORDING_P_H #include #include #include "dvbchannel.h" #include "dvbsi.h" class DvbDevice; class DvbManager; class DvbRecording; class DvbRecordingFile : private QObject, public QSharedData, private DvbPidFilter { Q_OBJECT public: explicit DvbRecordingFile(DvbManager *manager_); ~DvbRecordingFile(); // start() returns true if the recording is already running bool start(const DvbRecording &recording); void stop(); private slots: void deviceStateChanged(); void pmtSectionChanged(const QByteArray &pmtSectionData_); void insertPatPmt(); private: void processData(const char data[188]); DvbManager *manager; DvbSharedChannel channel; QFile file; QList buffers; DvbDevice *device; QList pids; DvbPmtFilter pmtFilter; QByteArray pmtSectionData; DvbSectionGenerator patGenerator; DvbSectionGenerator pmtGenerator; QTimer patPmtTimer; bool pmtValid; }; #endif /* DVBRECORDING_P_H */ kaffeine-1.2.2/src/dvb/dvbcam_linux.cpp0000644000175000017500000004011711552636277017454 0ustar lxuserlxuser/* * dvbcam_linux.cpp * * Copyright (C) 2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbcam_linux.h" #include #include #include #include #include #include #include #include #include #include "dvbsi.h" // krazy:excludeall=syscalls class DvbLinuxCamService { public: DvbLinuxCamService() : pendingAction(Add) { } ~DvbLinuxCamService() { } enum PendingActions { Nothing, Add, Update, Remove }; PendingActions pendingAction; QByteArray pmtSectionData; }; DvbLinuxCam::DvbLinuxCam() : caFd(-1), socketNotifier(NULL), ready(false), eventPosted(false) { connect(&pollTimer, SIGNAL(timeout()), this, SLOT(pollModule())); } DvbLinuxCam::~DvbLinuxCam() { } void DvbLinuxCam::startCa(const QString &path) { Q_ASSERT(caFd < 0); caFd = open(QFile::encodeName(path), O_RDWR | O_NONBLOCK); if (caFd < 0) { kWarning() << "cannot open" << path; return; } slot = -1; pollTimer.start(5000); pendingCommands = ResetCa; if (!detectSlot()) { pendingCommands = 0; } } void DvbLinuxCam::startDescrambling(const QByteArray &pmtSectionData) { DvbPmtSection pmtSection(pmtSectionData); if (!pmtSection.isValid()) { kWarning() << "pmt section is invalid"; return; } int serviceId = pmtSection.programNumber(); QMap::iterator it = services.find(serviceId); if (it == services.end()) { it = services.insert(serviceId, DvbLinuxCamService()); } if (it->pendingAction != DvbLinuxCamService::Add) { it->pendingAction = DvbLinuxCamService::Update; } it->pmtSectionData = pmtSectionData; if (ready && !eventPosted) { eventPosted = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } } void DvbLinuxCam::stopDescrambling(int serviceId) { QMap::iterator it = services.find(serviceId); if (it == services.end()) { kWarning() << "cannot find service id" << serviceId; return; } switch (it->pendingAction) { case DvbLinuxCamService::Nothing: case DvbLinuxCamService::Update: it->pendingAction = DvbLinuxCamService::Remove; break; case DvbLinuxCamService::Add: services.erase(it); return; case DvbLinuxCamService::Remove: kWarning() << "service is already being removed"; services.erase(it); return; } if (ready && !eventPosted) { eventPosted = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } } void DvbLinuxCam::stopCa() { services.clear(); ready = false; eventPosted = false; delete socketNotifier; socketNotifier = NULL; pollTimer.stop(); if (caFd >= 0) { close(caFd); caFd = -1; } } void DvbLinuxCam::pollModule() { if (slot < 0) { detectSlot(); } else { if ((pendingCommands & ExpectingReply) != 0) { pendingCommands &= ~ExpectingReply; kDebug() << "request timed out"; } if (pendingCommands == 0) { pendingCommands |= SendPoll; } handlePendingCommands(); } } void DvbLinuxCam::readyRead() { QByteArray buffer; buffer.resize(256); int size = 0; while (true) { int bytesRead = read(caFd, buffer.data() + size, buffer.size() - size); if ((bytesRead < 0) && (errno == EINTR)) { continue; } if (bytesRead == (buffer.size() - size)) { size += bytesRead; buffer.resize(4 * buffer.size()); continue; } if (bytesRead > 0) { size += bytesRead; } break; } const unsigned char *data = reinterpret_cast(buffer.constData()); if ((size >= 2) && (data[0] == slot) && (data[1] == ConnectionId)) { pendingCommands &= ~ExpectingReply; handleTransportLayer(data + 2, size - 2); handlePendingCommands(); } else { kDebug() << "unknown recipient"; } } bool DvbLinuxCam::detectSlot() { Q_ASSERT((caFd >= 0) && (slot < 0)); ca_caps_t caInfo; memset(&caInfo, 0, sizeof(caInfo)); if (ioctl(caFd, CA_GET_CAP, &caInfo) != 0) { kWarning() << "cannot perform ioctl CA_GET_CAP"; return false; } for (uint i = 0; i < caInfo.slot_num; ++i) { ca_slot_info_t slotInfo; memset(&slotInfo, 0, sizeof(slotInfo)); slotInfo.num = i; if (ioctl(caFd, CA_GET_SLOT_INFO, &slotInfo) != 0) { kWarning() << "cannot perform ioctl CA_GET_SLOT_INFO for slot" << slot; continue; } if ((slotInfo.type & CA_CI_LINK) == 0) { kWarning() << "unknown type" << slotInfo.type << "of slot" << slot; continue; } if ((slotInfo.flags & CA_CI_MODULE_READY) != 0) { slot = i; break; } } if (slot < 0) { return false; } if (socketNotifier == NULL) { socketNotifier = new QSocketNotifier(caFd, QSocketNotifier::Read, this); connect(socketNotifier, SIGNAL(activated(int)), this, SLOT(readyRead())); } if (pendingCommands == 0) { pendingCommands |= SendCreateTransportConnection; } message.resize(64); messageData = message.data() + HeaderSize; handlePendingCommands(); return true; } int DvbLinuxCam::decodeLength(const unsigned char *&data, int &size) { int length = 0; if (size > 0) { length = data[0]; } if ((length & 0x80) == 0) { ++data; --size; } else { int temp = (length & 0x7f) + 1; length = 0; if (temp <= size) { for (int i = 1; i < temp; ++i) { length = ((length << 8) | data[i]); } } data += temp; size -= temp; } if (length > size) { length = size; } return length; } void DvbLinuxCam::resize(int messageSize) { if (message.size() < (messageSize + HeaderSize)) { message.resize(2 * (messageSize + HeaderSize)); messageData = message.data() + HeaderSize; } } void DvbLinuxCam::handleTransportLayer(const unsigned char *data, int size) { while (size > 0) { int tag = data[0]; ++data; --size; int length = decodeLength(data, size); switch (tag) { case StatusByte: if ((length < 2) || (data[0] != ConnectionId)) { size = 0; kDebug() << "invalid StatusByte object"; break; } if ((data[1] & 0x80) != 0) { pendingCommands |= SendReceiveData; } break; case CreateTransportConnectionReply: if ((length < 1) || (data[0] != ConnectionId)) { size = 0; kDebug() << "invalid CreateTransportConnectionReply object"; break; } pendingCommands &= ~(SendCreateTransportConnection); break; case DataLast: if ((length < 1) || (data[0] != ConnectionId)) { size = 0; kDebug() << "invalid DataLast object"; break; } handleSessionLayer(data + 1, length - 1); break; default: kDebug() << "unknown tag" << tag; break; } data += length; size -= length; } } void DvbLinuxCam::handleSessionLayer(const unsigned char *data, int size) { if (size > 0) { int tag = data[0]; ++data; --size; int length = decodeLength(data, size); switch (tag) { case OpenSessionRequest: { if (length < 4) { kDebug() << "invalid OpenSessionRequest object"; break; } unsigned int resource = ((data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]); messageData[0] = 0x00; messageData[1] = (resource >> 24); messageData[2] = (resource >> 16); messageData[3] = (resource >> 8); messageData[4] = resource; messageData[5] = 0x00; messageData[6] = 0x00; switch (resource) { case ResourceManager: messageData[6] = ResourceManagerSession; pendingCommands |= SendProfileEnquiry; break; case ApplicationInformation: messageData[6] = ApplicationInformationSession; pendingCommands |= SendApplicationInfoEnquiry; break; case ConditionalAccess: messageData[6] = ConditionalAccessSession; pendingCommands |= SendCaInfoEnquiry; break; default: messageData[0] = 0xf0; break; } sendSessionLayerMessage(OpenSessionResponse, messageData, messageData + 7); break; } case SessionNumber: if (length < 2) { kDebug() << "invalid SessionNumber object"; break; } handleApplicationLayer(data + length, size - length); break; default: kDebug() << "unknown tag" << tag; break; } } } void DvbLinuxCam::handleApplicationLayer(const unsigned char *data, int size) { while (size >= 3) { int tag = ((data[0] << 16) | (data[1] << 8) | data[2]); data += 3; size -= 3; int length = decodeLength(data, size); switch (tag) { case ProfileEnquiry: messageData[0] = ((ResourceManager >> 24) & 0xff); messageData[1] = ((ResourceManager >> 16) & 0xff); messageData[2] = ((ResourceManager >> 8) & 0xff); messageData[3] = (ResourceManager & 0xff); messageData[4] = ((ApplicationInformation >> 24) & 0xff); messageData[5] = ((ApplicationInformation >> 16) & 0xff); messageData[6] = ((ApplicationInformation >> 8) & 0xff); messageData[7] = (ApplicationInformation & 0xff); messageData[8] = ((ConditionalAccess >> 24) & 0xff); messageData[9] = ((ConditionalAccess >> 16) & 0xff); messageData[10] = ((ConditionalAccess >> 8) & 0xff); messageData[11] = (ConditionalAccess & 0xff); sendApplicationLayerMessage(ProfileReply, messageData, messageData + 12); break; case ProfileReply: pendingCommands |= SendProfileChange; break; case ApplicationInfo: break; case CaInfo: ready = true; eventPosted = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); break; default: kDebug() << "unknown tag" << tag; break; } data += length; size -= length; } } void DvbLinuxCam::handlePendingCommands() { if ((pendingCommands & ExpectingReply) == 0) { int pendingCommand = pendingCommands & (~pendingCommands + 1); pendingCommands &= ~pendingCommand; switch (pendingCommand) { case 0: break; case ResetCa: if (ioctl(caFd, CA_RESET, 0xff) != 0) { kWarning() << "cannot perform ioctl CA_RESET"; } kDebug() << "--> reset"; slot = -1; pollTimer.start(100); pendingCommands = 0; break; case SendCreateTransportConnection: messageData[0] = ConnectionId; sendTransportLayerMessage(CreateTransportConnection, messageData, messageData + 1); pendingCommands |= SendCreateTransportConnection; break; case SendPoll: messageData[0] = ConnectionId; sendTransportLayerMessage(DataLast, messageData, messageData + 1); break; case SendReceiveData: messageData[0] = ConnectionId; sendTransportLayerMessage(ReceiveData, messageData, messageData + 1); break; case SendProfileEnquiry: sendApplicationLayerMessage(ProfileEnquiry, messageData, messageData); break; case SendProfileChange: sendApplicationLayerMessage(ProfileChange, messageData, messageData); break; case SendApplicationInfoEnquiry: sendApplicationLayerMessage(ApplicationInfoEnquiry, messageData, messageData); break; case SendCaInfoEnquiry: sendApplicationLayerMessage(CaInfoEnquiry, messageData, messageData); break; default: kWarning() << "unknown pending command" << pendingCommand; break; } } } void DvbLinuxCam::customEvent(QEvent *event) { Q_UNUSED(event) if (!ready) { return; } int activeCaPmts = 0; for (QMap::iterator it = services.begin(); it != services.end();) { if (it->pendingAction == DvbLinuxCamService::Remove) { sendCaPmt(DvbPmtSection(it->pmtSectionData), Update, StopDescrambling); it = services.erase(it); } else { ++activeCaPmts; ++it; } } for (QMap::iterator it = services.begin(); it != services.end(); ++it) { switch (it->pendingAction) { case DvbLinuxCamService::Nothing: continue; case DvbLinuxCamService::Add: if (activeCaPmts == 1) { sendCaPmt(DvbPmtSection(it->pmtSectionData), Only, Descramble); } else { sendCaPmt(DvbPmtSection(it->pmtSectionData), Add, Descramble); } break; case DvbLinuxCamService::Update: sendCaPmt(DvbPmtSection(it->pmtSectionData), Update, Descramble); break; case DvbLinuxCamService::Remove: kWarning() << "impossible"; break; } it->pendingAction = DvbLinuxCamService::Nothing; } eventPosted = false; } void DvbLinuxCam::sendCaPmt(const DvbPmtSection &pmtSection, CaPmtListManagement listManagement, CaPmtCommand command) { messageData[0] = listManagement; messageData[1] = ((pmtSection.programNumber() >> 8) & 0xff); messageData[2] = (pmtSection.programNumber() & 0xff); messageData[3] = ((pmtSection.versionNumber() << 1) | (pmtSection.currentNextIndicator() ? 0x01 : 0x00)); int index = 6; int lengthIndex = 4; int length = 0; for (DvbDescriptor descriptor = pmtSection.descriptors(); descriptor.isValid(); descriptor.advance()) { if (descriptor.descriptorTag() == 0x09) { resize(index + 1 + descriptor.getLength()); if (length == 0) { messageData[index++] = command; ++length; } memcpy(messageData + index, descriptor.getData(), descriptor.getLength()); index += descriptor.getLength(); length += descriptor.getLength(); } } messageData[lengthIndex] = ((length >> 8) & 0xff); messageData[lengthIndex + 1] = (length & 0xff); for (DvbPmtSectionEntry entry = pmtSection.entries(); entry.isValid(); entry.advance()) { resize(index + 5); messageData[index++] = entry.streamType(); messageData[index++] = ((entry.pid() >> 8) & 0xff); messageData[index++] = (entry.pid() & 0xff); lengthIndex = index; index += 2; length = 0; for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { if (descriptor.descriptorTag() == 0x09) { resize(index + 1 + descriptor.getLength()); if (length == 0) { messageData[index++] = command; ++length; } memcpy(messageData + index, descriptor.getData(), descriptor.getLength()); index += descriptor.getLength(); length += descriptor.getLength(); } } messageData[lengthIndex] = ((length >> 8) & 0xff); messageData[lengthIndex + 1] = (length & 0xff); } sendApplicationLayerMessage(CaPmt, messageData, messageData + index); } void DvbLinuxCam::sendTransportLayerMessage(TransportLayerTag tag, char *data, char *end) { int length = end - data; Q_ASSERT(length < 0x10000); if (length < 0x80) { *(--data) = length; } else { *(--data) = length; *(--data) = (length >> 8); *(--data) = 0x82; } *(--data) = tag; *(--data) = ConnectionId; *(--data) = slot; length = end - data; if (write(caFd, data, length) != length) { kWarning() << "cannot send message of length" << length; } pendingCommands |= ExpectingReply; pollTimer.start(400); } void DvbLinuxCam::sendSessionLayerMessage(SessionLayerTag tag, char *data, char *end) { switch (tag) { case OpenSessionResponse: Q_ASSERT((end - data) == 0x07); *(--data) = 0x07; break; case SessionNumber: Q_ASSERT((end - data) >= 0x02); *(--data) = 0x02; break; default: Q_ASSERT(false); return; } *(--data) = tag; *(--data) = ConnectionId; sendTransportLayerMessage(DataLast, data, end); } void DvbLinuxCam::sendApplicationLayerMessage(ApplicationLayerTag tag, char *data, char *end) { int length = end - data; Q_ASSERT(length < 0x10000); if (length < 0x80) { *(--data) = length; } else { *(--data) = (length & 0xff); *(--data) = ((length >> 8) & 0xff); *(--data) = 0x82; } *(--data) = tag; *(--data) = (tag >> 8); *(--data) = (tag >> 16); switch (tag) { case ProfileEnquiry: case ProfileReply: case ProfileChange: *(--data) = ResourceManagerSession; *(--data) = (ResourceManagerSession >> 8); break; case ApplicationInfoEnquiry: *(--data) = ApplicationInformationSession; *(--data) = (ApplicationInformationSession >> 8); break; case CaInfoEnquiry: case CaPmt: *(--data) = ConditionalAccessSession; *(--data) = (ConditionalAccessSession >> 8); break; default: Q_ASSERT(false); return; } sendSessionLayerMessage(SessionNumber, data, end); } kaffeine-1.2.2/src/dvb/dvbconfigdialog.cpp0000644000175000017500000010362511552636277020126 0ustar lxuserlxuser/* * dvbconfigdialog.cpp * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbconfigdialog.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dvbconfig.h" #include "dvbdevice.h" #include "dvbmanager.h" DvbConfigDialog::DvbConfigDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_) { setCaption(i18nc("@title:window", "Configure Television")); tabWidget = new KTabWidget(this); setMainWidget(tabWidget); QWidget *widget = new QWidget(tabWidget); QBoxLayout *boxLayout = new QVBoxLayout(widget); QGridLayout *gridLayout = new QGridLayout(); gridLayout->addWidget(new QLabel(i18n("Recording folder:")), 0, 0); recordingFolderEdit = new KLineEdit(widget); recordingFolderEdit->setText(manager->getRecordingFolder()); gridLayout->addWidget(recordingFolderEdit, 0, 1); QToolButton *toolButton = new QToolButton(widget); toolButton->setIcon(KIcon("document-open-folder")); toolButton->setToolTip(i18n("Select Folder")); connect(toolButton, SIGNAL(clicked()), this, SLOT(changeRecordingFolder())); gridLayout->addWidget(toolButton, 0, 2); gridLayout->addWidget(new QLabel(i18n("Time shift folder:")), 1, 0); timeShiftFolderEdit = new KLineEdit(widget); timeShiftFolderEdit->setText(manager->getTimeShiftFolder()); gridLayout->addWidget(timeShiftFolderEdit, 1, 1); toolButton = new QToolButton(widget); toolButton->setIcon(KIcon("document-open-folder")); toolButton->setToolTip(i18n("Select Folder")); connect(toolButton, SIGNAL(clicked()), this, SLOT(changeTimeShiftFolder())); gridLayout->addWidget(toolButton, 1, 2); boxLayout->addLayout(gridLayout); gridLayout = new QGridLayout(); gridLayout->addWidget(new QLabel(i18n("Begin margin (minutes):")), 2, 0); beginMarginBox = new QSpinBox(widget); beginMarginBox->setRange(0, 99); beginMarginBox->setValue(manager->getBeginMargin() / 60); gridLayout->addWidget(beginMarginBox, 2, 1); gridLayout->addWidget(new QLabel(i18n("End margin (minutes):")), 3, 0); endMarginBox = new QSpinBox(widget); endMarginBox->setRange(0, 99); endMarginBox->setValue(manager->getEndMargin() / 60); gridLayout->addWidget(endMarginBox, 3, 1); boxLayout->addLayout(gridLayout); gridLayout = new QGridLayout(); gridLayout->addWidget(new QLabel(i18n("Use ISO 8859-1 charset instead of ISO 6937:")), 1, 0); override6937CharsetBox = new QCheckBox(widget); override6937CharsetBox->setChecked(manager->override6937Charset()); gridLayout->addWidget(override6937CharsetBox, 1, 1); boxLayout->addLayout(gridLayout); QFrame *frame = new QFrame(widget); frame->setFrameShape(QFrame::HLine); boxLayout->addWidget(frame); boxLayout->addWidget(new QLabel(i18n("Scan data last updated on %1", KGlobal::locale()->formatDate(manager->getScanDataDate(), KLocale::ShortDate)))); QPushButton *pushButton = new QPushButton(i18n("Update scan data over Internet"), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(updateScanFile())); boxLayout->addWidget(pushButton); frame = new QFrame(widget); frame->setFrameShape(QFrame::HLine); boxLayout->addWidget(frame); boxLayout->addWidget(new QLabel(i18n("Your position (only needed for USALS rotor)"))); gridLayout = new QGridLayout(); gridLayout->addWidget(new QLabel(i18n("Latitude:")), 0, 0); gridLayout->addWidget(new QLabel(i18n("[S -90 ... 90 N]")), 0, 1); latitudeEdit = new KLineEdit(widget); latitudeEdit->setText(QString::number(manager->getLatitude(), 'g', 10)); connect(latitudeEdit, SIGNAL(textChanged(QString)), this, SLOT(latitudeChanged(QString))); gridLayout->addWidget(latitudeEdit, 0, 2); validPixmap = KIcon("dialog-ok-apply").pixmap(KIconLoader::SizeSmallMedium); invalidPixmap = KIcon("dialog-cancel").pixmap(KIconLoader::SizeSmallMedium); latitudeValidLabel = new QLabel(widget); latitudeValidLabel->setPixmap(validPixmap); gridLayout->addWidget(latitudeValidLabel, 0, 3); gridLayout->addWidget(new QLabel(i18n("Longitude:")), 1, 0); gridLayout->addWidget(new QLabel(i18n("[W -180 ... 180 E]")), 1, 1); longitudeEdit = new KLineEdit(widget); longitudeEdit->setText(QString::number(manager->getLongitude(), 'g', 10)); connect(longitudeEdit, SIGNAL(textChanged(QString)), this, SLOT(longitudeChanged(QString))); gridLayout->addWidget(longitudeEdit, 1, 2); longitudeValidLabel = new QLabel(widget); longitudeValidLabel->setPixmap(validPixmap); gridLayout->addWidget(longitudeValidLabel, 1, 3); boxLayout->addLayout(gridLayout); boxLayout->addStretch(); // FIXME more general options tabWidget->addTab(widget, KIcon("configure"), i18n("General Options")); int i = 1; foreach (const DvbDeviceConfig &deviceConfig, manager->getDeviceConfigs()) { DvbConfigPage *configPage = new DvbConfigPage(tabWidget, manager, &deviceConfig); connect(configPage, SIGNAL(moveLeft(DvbConfigPage*)), this, SLOT(moveLeft(DvbConfigPage*))); connect(configPage, SIGNAL(moveRight(DvbConfigPage*)), this, SLOT(moveRight(DvbConfigPage*))); connect(configPage, SIGNAL(remove(DvbConfigPage*)), this, SLOT(remove(DvbConfigPage*))); tabWidget->addTab(configPage, KIcon("video-television"), i18n("Device %1", i)); configPages.append(configPage); ++i; } if (!configPages.isEmpty()) { configPages.at(0)->setMoveLeftEnabled(false); configPages.at(configPages.size() - 1)->setMoveRightEnabled(false); } } DvbConfigDialog::~DvbConfigDialog() { } void DvbConfigDialog::changeRecordingFolder() { QString path = KFileDialog::getExistingDirectory(recordingFolderEdit->text(), this); if (path.isEmpty()) { return; } recordingFolderEdit->setText(path); } void DvbConfigDialog::changeTimeShiftFolder() { QString path = KFileDialog::getExistingDirectory(timeShiftFolderEdit->text(), this); if (path.isEmpty()) { return; } timeShiftFolderEdit->setText(path); } void DvbConfigDialog::updateScanFile() { KDialog *dialog = new DvbScanFileDownloadDialog(manager, this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void DvbConfigDialog::latitudeChanged(const QString &text) { bool ok; toLatitude(text, &ok); if (ok) { latitudeValidLabel->setPixmap(validPixmap); } else { latitudeValidLabel->setPixmap(invalidPixmap); } } void DvbConfigDialog::longitudeChanged(const QString &text) { bool ok; toLongitude(text, &ok); if (ok) { longitudeValidLabel->setPixmap(validPixmap); } else { longitudeValidLabel->setPixmap(invalidPixmap); } } void DvbConfigDialog::moveLeft(DvbConfigPage *configPage) { int index = configPages.indexOf(configPage); if (index <= 0) { return; } configPages.swap(index, index - 1); if (index == 1) { configPages.at(0)->setMoveLeftEnabled(false); configPages.at(1)->setMoveLeftEnabled(true); } if (index == (configPages.size() - 1)) { configPages.at(index)->setMoveRightEnabled(false); configPages.at(index - 1)->setMoveRightEnabled(true); } // configPages and tabWidget indexes differ by one tabWidget->insertTab(index, configPages.at(index - 1), KIcon("video-television"), i18n("Device %1", index)); tabWidget->setTabText(index + 1, i18n("Device %1", index + 1)); tabWidget->setCurrentIndex(index); } void DvbConfigDialog::moveRight(DvbConfigPage *configPage) { int index = configPages.indexOf(configPage) + 1; if ((index <= 0) || (index == configPages.size())) { return; } configPages.swap(index, index - 1); if (index == 1) { configPages.at(0)->setMoveLeftEnabled(false); configPages.at(1)->setMoveLeftEnabled(true); } if (index == (configPages.size() - 1)) { configPages.at(index)->setMoveRightEnabled(false); configPages.at(index - 1)->setMoveRightEnabled(true); } // configPages and tabWidget indexes differ by one tabWidget->insertTab(index, configPages.at(index - 1), KIcon("video-television"), i18n("Device %1", index)); tabWidget->setTabText(index + 1, i18n("Device %1", index + 1)); tabWidget->setCurrentIndex(index + 1); } void DvbConfigDialog::remove(DvbConfigPage *configPage) { int index = configPages.indexOf(configPage); if (index < 0) { return; } delete configPages.takeAt(index); if ((index == 0) && !configPages.isEmpty()) { configPages.at(0)->setMoveLeftEnabled(false); } if ((index > 0) && (index == configPages.size())) { configPages.at(index - 1)->setMoveRightEnabled(false); } for (; index < configPages.size(); ++index) { // configPages and tabWidget indexes differ by one tabWidget->setTabText(index + 1, i18n("Device %1", index + 1)); } } double DvbConfigDialog::toLatitude(const QString &text, bool *ok) { if (text.isEmpty()) { *ok = true; return 0; } double value = text.toDouble(ok); if (qAbs(value) > 90) { *ok = false; } return value; } double DvbConfigDialog::toLongitude(const QString &text, bool *ok) { if (text.isEmpty()) { *ok = true; return 0; } double value = text.toDouble(ok); if (qAbs(value) > 180) { *ok = false; } return value; } void DvbConfigDialog::accept() { manager->setRecordingFolder(recordingFolderEdit->text()); manager->setTimeShiftFolder(timeShiftFolderEdit->text()); manager->setBeginMargin(beginMarginBox->value() * 60); manager->setEndMargin(endMarginBox->value() * 60); manager->setOverride6937Charset(override6937CharsetBox->isChecked()); bool latitudeOk; bool longitudeOk; double latitude = toLatitude(latitudeEdit->text(), &latitudeOk); double longitude = toLongitude(longitudeEdit->text(), &longitudeOk); if (latitudeOk && longitudeOk) { manager->setLatitude(latitude); manager->setLongitude(longitude); } QList configUpdates; foreach (DvbConfigPage *configPage, configPages) { DvbDeviceConfigUpdate configUpdate(configPage->getDeviceConfig()); configUpdate.configs = configPage->getConfigs(); configUpdates.append(configUpdate); } manager->updateDeviceConfigs(configUpdates); KDialog::accept(); } DvbScanFileDownloadDialog::DvbScanFileDownloadDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_) { setButtons(KDialog::Cancel); setCaption(i18n("Update Scan Data")); QWidget *widget = new QWidget(this); setMainWidget(widget); QBoxLayout *layout = new QVBoxLayout(widget); label = new QLabel(i18n("Downloading scan data"), widget); layout->addWidget(label); progressBar = new QProgressBar(widget); progressBar->setRange(0, 100); layout->addWidget(progressBar); job = KIO::get(KUrl("http://kaffeine.kde.org/scanfile.dvb.qz"), KIO::NoReload, KIO::HideProgressInfo); // FIXME NoReload or Reload? job->setAutoDelete(false); connect(job, SIGNAL(percent(KJob*,unsigned long)), this, SLOT(progressChanged(KJob*,unsigned long))); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(dataArrived(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(jobFinished())); } DvbScanFileDownloadDialog::~DvbScanFileDownloadDialog() { delete job; } void DvbScanFileDownloadDialog::progressChanged(KJob *, unsigned long percent) { progressBar->setValue(percent); } void DvbScanFileDownloadDialog::dataArrived(KIO::Job *, const QByteArray &data) { if ((scanData.size() + data.size()) <= (64 * 1024)) { scanData.append(data); } else { job->kill(KJob::EmitResult); } } void DvbScanFileDownloadDialog::jobFinished() { progressBar->setValue(100); setButtons(KDialog::Close); if (job->error() != 0) { if (job->error() == KJob::KilledJobError) { label->setText(i18n("Scan data update failed.")); } else { label->setText(job->errorString()); } return; } if (manager->updateScanData(scanData)) { label->setText(i18n("Scan data successfully updated. Changes take\n" "effect after you have closed the configuration dialog.")); } else { label->setText(i18n("Scan data update failed.")); } } DvbConfigPage::DvbConfigPage(QWidget *parent, DvbManager *manager, const DvbDeviceConfig *deviceConfig_) : QWidget(parent), deviceConfig(deviceConfig_), dvbSObject(NULL) { boxLayout = new QVBoxLayout(this); boxLayout->addWidget(new QLabel(i18n("Name: %1", deviceConfig->frontendName))); QBoxLayout *horizontalLayout = new QHBoxLayout(); moveLeftButton = new QPushButton(KIcon("arrow-left"), i18n("Move Left"), this); connect(moveLeftButton, SIGNAL(clicked()), this, SLOT(moveLeft())); horizontalLayout->addWidget(moveLeftButton); if (deviceConfig->device != NULL) { QPushButton *pushButton = new QPushButton(KIcon("edit-undo"), i18n("Reset"), this); connect(pushButton, SIGNAL(clicked()), this, SIGNAL(resetConfig())); horizontalLayout->addWidget(pushButton); } else { QPushButton *pushButton = new QPushButton(KIcon("edit-delete"), i18nc("@action", "Remove"), this); connect(pushButton, SIGNAL(clicked()), this, SLOT(removeConfig())); horizontalLayout->addWidget(pushButton); } moveRightButton = new QPushButton(KIcon("arrow-right"), i18n("Move Right"), this); connect(moveRightButton, SIGNAL(clicked()), this, SLOT(moveRight())); horizontalLayout->addWidget(moveRightButton); boxLayout->addLayout(horizontalLayout); if (deviceConfig->device == NULL) { addHSeparator(i18n("Device not connected.")); boxLayout->addStretch(); configs = deviceConfig->configs; return; } DvbDevice::TransmissionTypes transmissionTypes = deviceConfig->device->getTransmissionTypes(); DvbConfig dvbCConfig; QList dvbSConfigs; DvbConfig dvbTConfig; DvbConfig atscConfig; foreach (const DvbConfig &config, deviceConfig->configs) { switch (config->getTransmissionType()) { case DvbConfigBase::DvbC: dvbCConfig = config; break; case DvbConfigBase::DvbS: dvbSConfigs.append(config); break; case DvbConfigBase::DvbT: dvbTConfig = config; break; case DvbConfigBase::Atsc: atscConfig = config; break; } } if ((transmissionTypes & DvbDevice::DvbC) != 0) { addHSeparator(i18n("DVB-C")); if (dvbCConfig.constData() == NULL) { DvbConfigBase *config = new DvbConfigBase(DvbConfigBase::DvbC); config->timeout = 1500; dvbCConfig = DvbConfig(config); } new DvbConfigObject(this, boxLayout, manager, dvbCConfig.data()); configs.append(dvbCConfig); } if ((transmissionTypes & (DvbDevice::DvbS | DvbDevice::DvbS2)) != 0) { bool dvbS2 = ((transmissionTypes & DvbDevice::DvbS2) != 0); if (dvbS2) { addHSeparator(i18n("DVB-S2")); } else { addHSeparator(i18n("DVB-S")); } dvbSObject = new DvbSConfigObject(this, boxLayout, manager, dvbSConfigs, dvbS2); } if ((transmissionTypes & DvbDevice::DvbT) != 0) { addHSeparator(i18n("DVB-T")); if (dvbTConfig.constData() == NULL) { DvbConfigBase *config = new DvbConfigBase(DvbConfigBase::DvbT); config->timeout = 1500; dvbTConfig = DvbConfig(config); } new DvbConfigObject(this, boxLayout, manager, dvbTConfig.data()); configs.append(dvbTConfig); } if ((transmissionTypes & DvbDevice::Atsc) != 0) { addHSeparator(i18n("ATSC")); if (atscConfig.constData() == NULL) { DvbConfigBase *config = new DvbConfigBase(DvbConfigBase::Atsc); config->timeout = 1500; atscConfig = DvbConfig(config); } new DvbConfigObject(this, boxLayout, manager, atscConfig.data()); configs.append(atscConfig); } boxLayout->addStretch(); } DvbConfigPage::~DvbConfigPage() { } void DvbConfigPage::setMoveLeftEnabled(bool enabled) { moveLeftButton->setEnabled(enabled); } void DvbConfigPage::setMoveRightEnabled(bool enabled) { moveRightButton->setEnabled(enabled); } const DvbDeviceConfig *DvbConfigPage::getDeviceConfig() const { return deviceConfig; } QList DvbConfigPage::getConfigs() { if (dvbSObject != NULL) { dvbSObject->appendConfigs(configs); } for (int i = 0; i < configs.count(); ++i) { const DvbConfig &config = configs.at(i); if (config->name.isEmpty() || config->scanSource.isEmpty()) { configs.removeAt(i); --i; } } return configs; } void DvbConfigPage::moveLeft() { emit moveLeft(this); } void DvbConfigPage::moveRight() { emit moveRight(this); } void DvbConfigPage::removeConfig() { emit remove(this); } void DvbConfigPage::addHSeparator(const QString &title) { QFrame *frame = new QFrame(this); frame->setFrameShape(QFrame::HLine); boxLayout->addWidget(frame); boxLayout->addWidget(new QLabel(title, this)); } DvbConfigObject::DvbConfigObject(QWidget *parent, QBoxLayout *layout, DvbManager *manager, DvbConfigBase *config_) : QObject(parent), config(config_) { QStringList sources; int sourceIndex = -1; switch (config->getTransmissionType()) { case DvbConfigBase::DvbC: defaultName = i18n("Cable"); sources = manager->getScanSources(DvbManager::DvbC); sourceIndex = sources.indexOf(config->scanSource); break; case DvbConfigBase::DvbS: // handled separately break; case DvbConfigBase::DvbT: defaultName = i18n("Terrestrial"); sources.append("AUTO-Normal"); sources.append("AUTO-Offsets"); sources.append("AUTO-Australia"); sources.append("AUTO-Italy"); sources.append("AUTO-Taiwan"); sources += manager->getScanSources(DvbManager::DvbT); sourceIndex = sources.indexOf(config->scanSource); sources.replace(0, i18n("Autoscan")); sources.replace(1, i18n("Autoscan with 167 kHz Offsets")); sources.replace(2, i18n("Autoscan Australia")); sources.replace(3, i18n("Autoscan Italy")); sources.replace(4, i18n("Autoscan Taiwan")); break; case DvbConfigBase::Atsc: defaultName = i18n("Atsc"); sources = manager->getScanSources(DvbManager::Atsc); sourceIndex = sources.indexOf(config->scanSource); break; } QGridLayout *gridLayout = new QGridLayout(); layout->addLayout(gridLayout); gridLayout->addWidget(new QLabel(i18n("Tuner timeout (ms):")), 0, 0); timeoutBox = new QSpinBox(parent); timeoutBox->setRange(100, 5000); timeoutBox->setSingleStep(100); timeoutBox->setValue(config->timeout); connect(timeoutBox, SIGNAL(valueChanged(int)), this, SLOT(timeoutChanged(int))); gridLayout->addWidget(timeoutBox, 0, 1); gridLayout->addWidget(new QLabel(i18n("Source:")), 1, 0); sourceBox = new KComboBox(parent); sourceBox->addItem(i18n("No Source")); sourceBox->addItems(sources); sourceBox->setCurrentIndex(sourceIndex + 1); connect(sourceBox, SIGNAL(currentIndexChanged(int)), this, SLOT(sourceChanged(int))); gridLayout->addWidget(sourceBox, 1, 1); gridLayout->addWidget(new QLabel(i18n("Name:")), 2, 0); nameEdit = new KLineEdit(parent); nameEdit->setText(config->name); connect(nameEdit, SIGNAL(editingFinished()), this, SLOT(nameChanged())); gridLayout->addWidget(nameEdit, 2, 1); timeoutChanged(timeoutBox->value()); sourceChanged(sourceBox->currentIndex()); nameChanged(); connect(parent, SIGNAL(resetConfig()), this, SLOT(resetConfig())); } DvbConfigObject::~DvbConfigObject() { } void DvbConfigObject::timeoutChanged(int timeout) { config->timeout = timeout; } void DvbConfigObject::sourceChanged(int index) { if (index <= 0) { // no source selected nameEdit->setEnabled(false); config->scanSource.clear(); } else if ((index <= 5) && (config->getTransmissionType() == DvbConfigBase::DvbT)) { nameEdit->setEnabled(true); switch (index - 1) { case 0: config->scanSource = "AUTO-Normal"; break; case 1: config->scanSource = "AUTO-Offsets"; break; case 2: config->scanSource = "AUTO-Australia"; break; case 3: config->scanSource = "AUTO-Italy"; break; case 4: config->scanSource = "AUTO-Taiwan"; break; } } else { nameEdit->setEnabled(true); config->scanSource = sourceBox->currentText(); } } void DvbConfigObject::nameChanged() { QString name = nameEdit->text(); if (name.isEmpty()) { nameEdit->setText(defaultName); config->name = defaultName; } else { config->name = name; } } void DvbConfigObject::resetConfig() { timeoutBox->setValue(1500); // FIXME hardcoded sourceBox->setCurrentIndex(0); nameEdit->setText(defaultName); } DvbSConfigObject::DvbSConfigObject(QWidget *parent_, QBoxLayout *boxLayout, DvbManager *manager, const QList &configs, bool dvbS2) : QObject(parent_), parent(parent_) { if (!configs.isEmpty()) { lnbConfig = new DvbConfigBase(*configs.at(0)); } else { lnbConfig = createConfig(0); } if (dvbS2) { sources = manager->getScanSources(DvbManager::DvbS2); } else { sources = manager->getScanSources(DvbManager::DvbS); } layout = new QGridLayout(); boxLayout->addLayout(layout); layout->addWidget(new QLabel(i18n("Tuner timeout (ms):")), 0, 0); timeoutBox = new QSpinBox(parent); timeoutBox->setRange(100, 5000); timeoutBox->setSingleStep(100); timeoutBox->setValue(lnbConfig->timeout); layout->addWidget(timeoutBox, 0, 1); layout->addWidget(new QLabel(i18n("Configuration:")), 1, 0); configBox = new KComboBox(parent); configBox->addItem(i18n("DiSEqC Switch")); configBox->addItem(i18n("USALS Rotor")); configBox->addItem(i18n("Positions Rotor")); configBox->setCurrentIndex(lnbConfig->configuration); connect(configBox, SIGNAL(currentIndexChanged(int)), this, SLOT(configChanged(int))); layout->addWidget(configBox, 1, 1); // Diseqc switch for (int lnbNumber = 0; lnbNumber < 4; ++lnbNumber) { DvbConfigBase *config; if ((lnbConfig->configuration == DvbConfigBase::DiseqcSwitch) && (lnbNumber < configs.size())) { config = new DvbConfigBase(*configs.at(lnbNumber)); } else { config = createConfig(lnbNumber); } QPushButton *pushButton = new QPushButton(i18n("LNB %1 Settings", lnbNumber + 1), parent); connect(this, SIGNAL(setDiseqcVisible(bool)), pushButton, SLOT(setVisible(bool))); layout->addWidget(pushButton, lnbNumber + 2, 0); KComboBox *comboBox = new KComboBox(parent); comboBox->addItem(i18n("No Source")); comboBox->addItems(sources); comboBox->setCurrentIndex(sources.indexOf(config->scanSource) + 1); connect(this, SIGNAL(setDiseqcVisible(bool)), comboBox, SLOT(setVisible(bool))); layout->addWidget(comboBox, lnbNumber + 2, 1); diseqcConfigs.append(DvbConfig(config)); lnbConfigs.append(new DvbSLnbConfigObject(timeoutBox, comboBox, pushButton, config)); } // USALS rotor / Positions rotor QPushButton *pushButton = new QPushButton(i18n("LNB Settings"), parent); connect(this, SIGNAL(setRotorVisible(bool)), pushButton, SLOT(setVisible(bool))); layout->addWidget(pushButton, 6, 0); lnbConfigs.append(new DvbSLnbConfigObject(timeoutBox, NULL, pushButton, lnbConfig)); sourceBox = new KComboBox(parent); sourceBox->addItems(sources); connect(this, SIGNAL(setRotorVisible(bool)), sourceBox, SLOT(setVisible(bool))); layout->addWidget(sourceBox, 6, 1); satelliteView = new QTreeWidget(parent); // Usals rotor pushButton = new QPushButton(i18n("Add Satellite"), parent); connect(this, SIGNAL(setUsalsVisible(bool)), pushButton, SLOT(setVisible(bool))); connect(pushButton, SIGNAL(clicked()), this, SLOT(addSatellite())); layout->addWidget(pushButton, 7, 0, 1, 2); // Positions rotor rotorSpinBox = new QSpinBox(parent); rotorSpinBox->setRange(0, 255); connect(this, SIGNAL(setPositionsVisible(bool)), rotorSpinBox, SLOT(setVisible(bool))); layout->addWidget(rotorSpinBox, 8, 0); pushButton = new QPushButton(i18n("Add Satellite"), parent); connect(pushButton, SIGNAL(clicked()), this, SLOT(addSatellite())); connect(this, SIGNAL(setPositionsVisible(bool)), pushButton, SLOT(setVisible(bool))); layout->addWidget(pushButton, 8, 1); // USALS rotor / Positions rotor satelliteView->setColumnCount(2); satelliteView->setHeaderLabels(QStringList() << i18n("Satellite") << i18n("Position")); satelliteView->setMinimumHeight(100); satelliteView->setRootIsDecorated(false); satelliteView->sortByColumn(0, Qt::AscendingOrder); satelliteView->setSortingEnabled(true); connect(this, SIGNAL(setRotorVisible(bool)), satelliteView, SLOT(setVisible(bool))); layout->addWidget(satelliteView, 9, 0, 1, 2); if ((lnbConfig->configuration == DvbConfigBase::UsalsRotor) || (lnbConfig->configuration == DvbConfigBase::PositionsRotor)) { foreach (const DvbConfig &config, configs) { QStringList stringList; stringList << config->scanSource << QString::number(config->lnbNumber); satelliteView->addTopLevelItem(new QTreeWidgetItem(stringList)); } } pushButton = new QPushButton(i18n("Remove Satellite"), parent); connect(this, SIGNAL(setRotorVisible(bool)), pushButton, SLOT(setVisible(bool))); connect(pushButton, SIGNAL(clicked()), this, SLOT(removeSatellite())); layout->addWidget(pushButton, 10, 0, 1, 2); configChanged(configBox->currentIndex()); connect(parent, SIGNAL(resetConfig()), this, SLOT(resetConfig())); } DvbSConfigObject::~DvbSConfigObject() { delete lnbConfig; } void DvbSConfigObject::appendConfigs(QList &list) { int index = configBox->currentIndex(); if (index == 0) { // Diseqc switch list += diseqcConfigs; } else if ((index == 1) || (index == 2)) { // Usals rotor / Positions rotor for (int i = 0;; ++i) { QTreeWidgetItem *item = satelliteView->topLevelItem(i); if (item == NULL) { break; } QString satellite = item->text(0); DvbConfigBase *config = new DvbConfigBase(*lnbConfig); config->name = satellite; config->scanSource = satellite; if (index == 1) { // USALS rotor config->configuration = DvbConfigBase::UsalsRotor; } else { // Positions rotor config->configuration = DvbConfigBase::PositionsRotor; config->lnbNumber = item->text(1).toInt(); } list.append(DvbConfig(config)); } } } void DvbSConfigObject::configChanged(int index) { if (index == 0) { // Diseqc switch emit setDiseqcVisible(true); emit setRotorVisible(false); emit setUsalsVisible(false); emit setPositionsVisible(false); } else if (index == 1) { // Usals rotor satelliteView->hideColumn(1); emit setDiseqcVisible(false); emit setRotorVisible(true); emit setUsalsVisible(true); emit setPositionsVisible(false); } else if (index == 2) { // Positions rotor if (satelliteView->isColumnHidden(1)) { int width = satelliteView->columnWidth(0); satelliteView->showColumn(1); satelliteView->setColumnWidth(0, width / 2); } emit setDiseqcVisible(false); emit setRotorVisible(true); emit setUsalsVisible(false); emit setPositionsVisible(true); } } void DvbSConfigObject::addSatellite() { QString satellite = sourceBox->currentText(); QString index = rotorSpinBox->text(); QStringList stringList = QStringList() << satellite << index; if (configBox->currentIndex() == 1) { // USALS rotor if (satelliteView->findItems(satellite, Qt::MatchExactly).isEmpty()) { satelliteView->addTopLevelItem(new QTreeWidgetItem(stringList)); } } else { // Positions rotor QList items = satelliteView->findItems(index, Qt::MatchExactly, 1); if (!items.isEmpty()) { items.at(0)->setText(0, sourceBox->currentText()); } else { satelliteView->addTopLevelItem(new QTreeWidgetItem(stringList)); } } } void DvbSConfigObject::removeSatellite() { qDeleteAll(satelliteView->selectedItems()); } void DvbSConfigObject::resetConfig() { timeoutBox->setValue(1500); configBox->setCurrentIndex(0); for (int i = 0; i < lnbConfigs.size(); ++i) { lnbConfigs[i]->resetConfig(); } satelliteView->clear(); } DvbConfigBase *DvbSConfigObject::createConfig(int lnbNumber) { DvbConfigBase *config = new DvbConfigBase(DvbConfigBase::DvbS); config->timeout = 1500; config->configuration = DvbConfigBase::DiseqcSwitch; config->lnbNumber = lnbNumber; config->lowBandFrequency = 9750000; config->switchFrequency = 11700000; config->highBandFrequency = 10600000; return config; } DvbSLnbConfigObject::DvbSLnbConfigObject(QSpinBox *timeoutSpinBox, KComboBox *sourceBox_, QPushButton *configureButton_, DvbConfigBase *config_) : QObject(timeoutSpinBox), sourceBox(sourceBox_), configureButton(configureButton_), config(config_) { connect(timeoutSpinBox, SIGNAL(valueChanged(int)), this, SLOT(timeoutChanged(int))); connect(configureButton, SIGNAL(clicked()), this, SLOT(configure())); if (sourceBox != NULL) { connect(sourceBox, SIGNAL(currentIndexChanged(int)), this, SLOT(sourceChanged(int))); sourceChanged(sourceBox->currentIndex()); } timeoutChanged(timeoutSpinBox->value()); } DvbSLnbConfigObject::~DvbSLnbConfigObject() { } void DvbSLnbConfigObject::resetConfig() { config->lowBandFrequency = 9750000; config->switchFrequency = 11700000; config->highBandFrequency = 10600000; if (sourceBox != NULL) { sourceBox->setCurrentIndex(0); } } void DvbSLnbConfigObject::timeoutChanged(int value) { config->timeout = value; } void DvbSLnbConfigObject::sourceChanged(int index) { if (index <= 0) { // no source selected configureButton->setEnabled(false); config->name.clear(); config->scanSource.clear(); } else { configureButton->setEnabled(true); config->name = sourceBox->currentText(); config->scanSource = config->name; } } void DvbSLnbConfigObject::configure() { KDialog *dialog = new KDialog(configureButton); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setCaption(i18n("LNB Settings")); QWidget *mainWidget = new QWidget(dialog); QGridLayout *gridLayout = new QGridLayout(mainWidget); dialog->setMainWidget(mainWidget); lnbSelectionGroup = new QButtonGroup(mainWidget); connect(lnbSelectionGroup, SIGNAL(buttonClicked(int)), this, SLOT(selectType(int))); QRadioButton *radioButton = new QRadioButton(i18n("Universal LNB"), mainWidget); lnbSelectionGroup->addButton(radioButton, 1); gridLayout->addWidget(radioButton, 0, 0, 1, 2); radioButton = new QRadioButton(i18n("C-band LNB"), mainWidget); lnbSelectionGroup->addButton(radioButton, 2); gridLayout->addWidget(radioButton, 1, 0, 1, 2); radioButton = new QRadioButton(i18n("C-band Multipoint LNB"), mainWidget); lnbSelectionGroup->addButton(radioButton, 3); gridLayout->addWidget(radioButton, 2, 0, 1, 2); radioButton = new QRadioButton(i18n("Custom LNB"), mainWidget); lnbSelectionGroup->addButton(radioButton, 4); gridLayout->addWidget(radioButton, 3, 0, 1, 2); QFrame *frame = new QFrame(mainWidget); frame->setFrameShape(QFrame::HLine); gridLayout->addWidget(frame, 4, 0, 1, 2); lowBandLabel = new QLabel(mainWidget); gridLayout->addWidget(lowBandLabel, 5, 0); switchLabel = new QLabel(i18n("Switch frequency (MHz)"), mainWidget); gridLayout->addWidget(switchLabel, 6, 0); highBandLabel = new QLabel(mainWidget); gridLayout->addWidget(highBandLabel, 7, 0); lowBandSpinBox = new QSpinBox(mainWidget); lowBandSpinBox->setRange(0, 13000); lowBandSpinBox->setValue(config->lowBandFrequency / 1000); gridLayout->addWidget(lowBandSpinBox, 5, 1); switchSpinBox = new QSpinBox(mainWidget); switchSpinBox->setRange(0, 13000); switchSpinBox->setValue(config->switchFrequency / 1000); gridLayout->addWidget(switchSpinBox, 6, 1); highBandSpinBox = new QSpinBox(mainWidget); highBandSpinBox->setRange(0, 13000); highBandSpinBox->setValue(config->highBandFrequency / 1000); gridLayout->addWidget(highBandSpinBox, 7, 1); gridLayout->addItem(new QSpacerItem(0, 0), 8, 0, 1, 2); gridLayout->setRowStretch(8, 1); int lnbType; if ((config->lowBandFrequency == 9750000) && (config->switchFrequency == 11700000) && (config->highBandFrequency == 10600000)) { lnbType = 1; } else if ((config->lowBandFrequency == 5150000) && (config->switchFrequency == 0) && (config->highBandFrequency == 0)) { lnbType = 2; } else if ((config->lowBandFrequency == 5750000) && (config->switchFrequency == 0) && (config->highBandFrequency == 5150000)) { lnbType = 3; } else { lnbType = 4; } currentType = 4; lnbSelectionGroup->button(lnbType)->setChecked(true); selectType(lnbType); connect(dialog, SIGNAL(accepted()), this, SLOT(dialogAccepted())); dialog->setModal(true); dialog->show(); } void DvbSLnbConfigObject::selectType(int type) { switch (type) { case 1: lowBandSpinBox->setValue(9750); switchSpinBox->setValue(11700); highBandSpinBox->setValue(10600); break; case 2: lowBandSpinBox->setValue(5150); switchSpinBox->setValue(0); highBandSpinBox->setValue(0); break; case 3: lowBandSpinBox->setValue(5750); switchSpinBox->setValue(0); highBandSpinBox->setValue(5150); break; } if (switchSpinBox->value() != 0) { if (currentType != 1) { lowBandLabel->setText(i18n("Low band LOF (MHz)")); switchLabel->show(); switchSpinBox->show(); highBandLabel->setText(i18n("High band LOF (MHz)")); highBandLabel->show(); highBandSpinBox->show(); } } else if (highBandSpinBox->value() != 0) { if (currentType != 3) { lowBandLabel->setText(i18n("Horizontal LOF (MHz)")); switchLabel->hide(); switchSpinBox->hide(); highBandLabel->setText(i18n("Vertical LOF (MHz)")); highBandLabel->show(); highBandSpinBox->show(); } } else { if (currentType != 2) { lowBandLabel->setText(i18n("LOF (MHz)")); switchLabel->hide(); switchSpinBox->hide(); highBandLabel->hide(); highBandSpinBox->hide(); } } if ((currentType == 4) != (type == 4)) { if (type == 4) { lowBandLabel->setEnabled(true); switchLabel->setEnabled(true); highBandLabel->setEnabled(true); lowBandSpinBox->setEnabled(true); switchSpinBox->setEnabled(true); highBandSpinBox->setEnabled(true); } else { lowBandLabel->setEnabled(false); switchLabel->setEnabled(false); highBandLabel->setEnabled(false); lowBandSpinBox->setEnabled(false); switchSpinBox->setEnabled(false); highBandSpinBox->setEnabled(false); } } currentType = type; } void DvbSLnbConfigObject::dialogAccepted() { config->lowBandFrequency = lowBandSpinBox->value() * 1000; config->switchFrequency = switchSpinBox->value() * 1000; config->highBandFrequency = highBandSpinBox->value() * 1000; } kaffeine-1.2.2/src/dvb/dvbdevice.cpp0000644000175000017500000005504011552636277016735 0ustar lxuserlxuser/* * dvbdevice.cpp * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbdevice.h" #include "dvbdevice_p.h" #include #include #include #include #include #include "dvbconfig.h" #include "dvbmanager.h" #include "dvbsi.h" class DvbFilterInternal { public: DvbFilterInternal() : activeFilters(0) { } ~DvbFilterInternal() { } QList filters; int activeFilters; }; class DvbSectionFilterInternal : public DvbPidFilter { public: DvbSectionFilterInternal() : activeSectionFilters(0), continuityCounter(0), wrongCrcIndex(0), bufferValid(false) { memset(wrongCrcs, 0, sizeof(wrongCrcs)); } ~DvbSectionFilterInternal() { } QList sectionFilters; int activeSectionFilters; private: void processData(const char [188]); void processSections(bool force); unsigned char continuityCounter; unsigned char wrongCrcIndex; bool bufferValid; QByteArray buffer; int wrongCrcs[8]; }; // FIXME some debug messages may be printed too often void DvbSectionFilterInternal::processData(const char data[188]) { if ((data[3] & 0x10) == 0) { // no payload kDebug() << "no payload"; return; } unsigned char continuity = (data[3] & 0x0f); if (bufferValid) { if (continuity == continuityCounter) { kDebug() << "duplicate packets"; return; } if (continuity != ((continuityCounter + 1) & 0x0f)) { kDebug() << "discontinuity"; bufferValid = false; } } continuityCounter = continuity; bool sectionStart = ((data[1] & 0x40) != 0); const char *payload; int payloadLength; if ((data[3] & 0x20) == 0) { // adaptation field not present payload = (data + 4); payloadLength = (188 - 4); } else { // adaptation field present unsigned char length = data[4]; if (length > 182) { kDebug() << "no payload or corrupt"; return; } payload = (data + 5 + length); payloadLength = (188 - 5 - length); } // be careful that playloadLength is > 0 at this point if (sectionStart) { unsigned char pointer = payload[0]; if (pointer >= payloadLength) { kDebug() << "invalid pointer"; pointer = (payloadLength - 1); } if (bufferValid) { buffer.append(payload + 1, pointer); processSections(true); } else { bufferValid = true; } payload += (pointer + 1); payloadLength -= (pointer + 1); } buffer.append(payload, payloadLength); processSections(false); } void DvbSectionFilterInternal::processSections(bool force) { const char *it = buffer.constBegin(); const char *end = buffer.constEnd(); while (it != end) { if (static_cast(it[0]) == 0xff) { // table id == 0xff means padding it = end; break; } if ((end - it) < 3) { if (force) { kDebug() << "stray data"; it = end; } break; } const char *sectionEnd = (it + (((static_cast(it[1]) & 0x0f) << 8) | static_cast(it[2])) + 3); if (force && (sectionEnd > end)) { kDebug() << "short section"; sectionEnd = end; } if (sectionEnd <= end) { int size = (sectionEnd - it); int crc = DvbStandardSection::verifyCrc32(it, size); bool crcOk; if (crc == 0) { crcOk = true; } else { for (int i = 0;; ++i) { if (i == (sizeof(wrongCrcs) / sizeof(wrongCrcs[0]))) { crcOk = false; wrongCrcs[wrongCrcIndex] = crc; if ((++wrongCrcIndex) == i) { wrongCrcIndex = 0; } break; } if (wrongCrcs[i] == crc) { crcOk = true; break; } } } if (crcOk) { for (int i = 0; i < sectionFilters.size(); ++i) { sectionFilters.at(i)->processSection(it, size); } } it = sectionEnd; continue; } break; } buffer.remove(0, it - buffer.constBegin()); } class DvbDataDumper : public QFile, public DvbPidFilter { public: DvbDataDumper(); ~DvbDataDumper(); void processData(const char [188]); }; DvbDataDumper::DvbDataDumper() { setFileName(QDir::homePath() + '/' + "KaffeineDvbDump-" + QString::number(qrand(), 16) + ".bin"); if (!open(QIODevice::WriteOnly | QIODevice::Truncate)) { kWarning() << "cannot open" << fileName(); } } DvbDataDumper::~DvbDataDumper() { } void DvbDataDumper::processData(const char data[188]) { write(data, 188); } DvbDevice::DvbDevice(DvbBackendDevice *backend_, QObject *parent) : QObject(parent), backend(backend_), deviceState(DeviceReleased), dataDumper(NULL), cleanUpFilters(false), isAuto(false), unusedBuffersHead(NULL), usedBuffersHead(NULL), usedBuffersTail(NULL) { backend->setFrontendDevice(this); backend->setDeviceEnabled(true); // FIXME connect(&frontendTimer, SIGNAL(timeout()), this, SLOT(frontendEvent())); } DvbDevice::~DvbDevice() { backend->release(); for (DvbDeviceDataBuffer *buffer = unusedBuffersHead; buffer != NULL;) { DvbDeviceDataBuffer *nextBuffer = buffer->next; delete buffer; buffer = nextBuffer; } for (DvbDeviceDataBuffer *buffer = usedBuffersHead; buffer != NULL;) { DvbDeviceDataBuffer *nextBuffer = buffer->next; delete buffer; buffer = nextBuffer; } } DvbDevice::TransmissionTypes DvbDevice::getTransmissionTypes() const { return backend->getTransmissionTypes(); } QString DvbDevice::getDeviceId() const { return backend->getDeviceId(); } QString DvbDevice::getFrontendName() const { return backend->getFrontendName(); } void DvbDevice::tune(const DvbTransponder &transponder) { DvbTransponderBase::TransmissionType transmissionType = transponder.getTransmissionType(); if ((transmissionType != DvbTransponderBase::DvbS) && (transmissionType != DvbTransponderBase::DvbS2)) { if (backend->tune(transponder)) { setDeviceState(DeviceTuning); frontendTimeout = config->timeout; frontendTimer.start(100); discardBuffers(); } else { setDeviceState(DeviceTuning); setDeviceState(DeviceIdle); } return; } DvbTransponder intermediate = transponder; DvbSTransponder *dvbSTransponder = NULL; DvbS2Transponder *dvbS2Transponder = NULL; bool moveRotor = false; if (transmissionType == DvbTransponderBase::DvbS) { dvbSTransponder = intermediate.as(); } else { // DVB-S2 dvbS2Transponder = intermediate.as(); dvbSTransponder = dvbS2Transponder; } // parameters bool horPolar = (dvbSTransponder->polarization == DvbSTransponder::Horizontal) || (dvbSTransponder->polarization == DvbSTransponder::CircularLeft); int frequency = dvbSTransponder->frequency; bool highBand = false; if (config->switchFrequency != 0) { // dual LO (low / high) if (frequency < config->switchFrequency) { frequency = abs(frequency - config->lowBandFrequency); } else { frequency = abs(frequency - config->highBandFrequency); highBand = true; } } else if (config->highBandFrequency != 0) { // single LO (horizontal / vertical) if (horPolar) { frequency = abs(frequency - config->lowBandFrequency); } else { frequency = abs(frequency - config->highBandFrequency); } } else { // single LO frequency = abs(frequency - config->lowBandFrequency); } // tone off backend->setTone(ToneOff); // horizontal / circular left --> 18V ; vertical / circular right --> 13V backend->setVoltage(horPolar ? Voltage18V : Voltage13V); // diseqc / rotor usleep(15000); switch (config->configuration) { case DvbConfigBase::DiseqcSwitch: { char cmd[] = { 0xe0, 0x10, 0x38, 0x00 }; cmd[3] = 0xf0 | (config->lnbNumber << 2) | (horPolar ? 2 : 0) | (highBand ? 1 : 0); backend->sendMessage(cmd, sizeof(cmd)); usleep(15000); backend->sendBurst(((config->lnbNumber & 0x1) == 0) ? BurstMiniA : BurstMiniB); usleep(15000); break; } case DvbConfigBase::UsalsRotor: { QString source = config->scanSource; source.remove(0, source.lastIndexOf('-') + 1); bool ok = false; double orbitalPosition = 0; if (source.endsWith('E')) { source.chop(1); orbitalPosition = source.toDouble(&ok); } else if (source.endsWith('W')) { source.chop(1); orbitalPosition = (-source.toDouble(&ok)); } if (!ok) { kWarning() << "cannot extract orbital position from" << config->scanSource; } double radius = 6378; double semiMajorAxis = 42164; double temp = (radius * cos(DvbManager::getLatitude() * M_PI / 180)); double temp2 = ((orbitalPosition - DvbManager::getLongitude()) * M_PI / 180); double angle = (temp2 + atan(sin(temp2) / ((semiMajorAxis / temp) - cos(temp2)))); int value = 0; if (angle >= 0) { // east value = ((16 * angle * 180 / M_PI) + 0.5); value |= 0xe000; } else { // west value = ((16 * (-angle) * 180 / M_PI) + 0.5); value |= 0xd000; } char cmd[] = { 0xe0, 0x31, 0x6e, (value / 256), (value % 256) }; backend->sendMessage(cmd, sizeof(cmd)); usleep(15000); moveRotor = true; break; } case DvbConfigBase::PositionsRotor: { char cmd[] = { 0xe0, 0x31, 0x6b, config->lnbNumber }; backend->sendMessage(cmd, sizeof(cmd)); usleep(15000); moveRotor = true; break; } } // low band --> tone off ; high band --> tone on backend->setTone(highBand ? ToneOn : ToneOff); // tune dvbSTransponder->frequency = frequency; if (backend->tune(intermediate)) { if (!moveRotor) { setDeviceState(DeviceTuning); frontendTimeout = config->timeout; } else { setDeviceState(DeviceRotorMoving); frontendTimeout = 15000; } frontendTimer.start(100); discardBuffers(); } else { setDeviceState(DeviceTuning); setDeviceState(DeviceIdle); } } void DvbDevice::autoTune(const DvbTransponder &transponder) { if (transponder.getTransmissionType() != DvbTransponderBase::DvbT) { kWarning() << "can't handle != DVB-T"; return; } isAuto = true; autoTransponder = transponder; DvbTTransponder *autoTTransponder = autoTransponder.as(); capabilities = backend->getCapabilities(); // we have to iterate over unsupported AUTO values if ((capabilities & DvbTFecAuto) == 0) { autoTTransponder->fecRateHigh = DvbTTransponder::Fec2_3; } if ((capabilities & DvbTGuardIntervalAuto) == 0) { autoTTransponder->guardInterval = DvbTTransponder::GuardInterval1_8; } if ((capabilities & DvbTModulationAuto) == 0) { autoTTransponder->modulation = DvbTTransponder::Qam64; } if ((capabilities & DvbTTransmissionModeAuto) == 0) { autoTTransponder->transmissionMode = DvbTTransponder::TransmissionMode8k; } tune(autoTransponder); } bool DvbDevice::addPidFilter(int pid, DvbPidFilter *filter) { QMap::iterator it = filters.find(pid); if (it == filters.end()) { it = filters.insert(pid, DvbFilterInternal()); if (dataDumper != NULL) { it->filters.append(dataDumper); } } if (it->activeFilters == 0) { if (!backend->addPidFilter(pid)) { cleanUpFilters = true; return false; } } if (it->filters.contains(filter)) { kWarning() << "using the same filter for the same pid more than once"; return true; } it->filters.append(filter); ++it->activeFilters; return true; } bool DvbDevice::addSectionFilter(int pid, DvbSectionFilter *filter) { QMap::iterator it = sectionFilters.find(pid); if (it == sectionFilters.end()) { it = sectionFilters.insert(pid, DvbSectionFilterInternal()); } if (it->activeSectionFilters == 0) { if (!addPidFilter(pid, &(*it))) { cleanUpFilters = true; return false; } } if (it->sectionFilters.contains(filter)) { kWarning() << "using the same filter for the same pid more than once"; return true; } it->sectionFilters.append(filter); ++it->activeSectionFilters; return true; } void DvbDevice::removePidFilter(int pid, DvbPidFilter *filter) { QMap::iterator it = filters.find(pid); int index; if (it != filters.end()) { index = it->filters.indexOf(filter); } else { index = -1; } if (index < 0) { kWarning() << "trying to remove a nonexistent filter"; return; } it->filters.replace(index, &dummyPidFilter); --it->activeFilters; if (it->activeFilters == 0) { backend->removePidFilter(pid); } cleanUpFilters = true; } void DvbDevice::removeSectionFilter(int pid, DvbSectionFilter *filter) { QMap::iterator it = sectionFilters.find(pid); int index; if (it != sectionFilters.end()) { index = it->sectionFilters.indexOf(filter); } else { index = -1; } if (index < 0) { kWarning() << "trying to remove a nonexistent filter"; return; } it->sectionFilters.replace(index, &dummySectionFilter); --it->activeSectionFilters; if (it->activeSectionFilters == 0) { removePidFilter(pid, &(*it)); } cleanUpFilters = true; } void DvbDevice::startDescrambling(const QByteArray &pmtSectionData, QObject *user) { DvbPmtSection pmtSection(pmtSectionData); if (!pmtSection.isValid()) { kWarning() << "pmt section is not valid"; } int serviceId = pmtSection.programNumber(); if (!descramblingServices.contains(serviceId)) { backend->startDescrambling(pmtSectionData); } if (!descramblingServices.contains(serviceId, user)) { descramblingServices.insert(serviceId, user); } } void DvbDevice::stopDescrambling(const QByteArray &pmtSectionData, QObject *user) { DvbPmtSection pmtSection(pmtSectionData); if (!pmtSection.isValid()) { kWarning() << "pmt section is not valid"; } int serviceId = pmtSection.programNumber(); if (!descramblingServices.contains(serviceId, user)) { kWarning() << "service has not been started"; return; } descramblingServices.remove(serviceId, user); if (!descramblingServices.contains(serviceId)) { backend->stopDescrambling(serviceId); } } bool DvbDevice::isTuned() const { return backend->isTuned(); } int DvbDevice::getSignal() const { return backend->getSignal(); } int DvbDevice::getSnr() const { return backend->getSnr(); } DvbTransponder DvbDevice::getAutoTransponder() const { // FIXME query back information like frequency - tuning parameters - ... return autoTransponder; } bool DvbDevice::acquire(const DvbConfigBase *config_) { Q_ASSERT(deviceState == DeviceReleased); if (backend->acquire()) { config = config_; setDeviceState(DeviceIdle); return true; } return false; } void DvbDevice::reacquire(const DvbConfigBase *config_) { Q_ASSERT(deviceState != DeviceReleased); setDeviceState(DeviceReleased); stop(); config = config_; setDeviceState(DeviceIdle); } void DvbDevice::release() { setDeviceState(DeviceReleased); stop(); backend->release(); } void DvbDevice::enableDvbDump() { if (dataDumper != NULL) { return; } dataDumper = new DvbDataDumper(); QMap::iterator it = filters.begin(); QMap::iterator end = filters.end(); for (; it != end; ++it) { it->filters.append(dataDumper); } } void DvbDevice::frontendEvent() { if (backend->isTuned()) { kDebug() << "tuning succeeded"; frontendTimer.stop(); setDeviceState(DeviceTuned); return; } // FIXME progress bar when moving rotor frontendTimeout -= 100; if (frontendTimeout <= 0) { frontendTimer.stop(); if (!isAuto) { kWarning() << "tuning failed"; setDeviceState(DeviceIdle); return; } DvbTTransponder *autoTTransponder = autoTransponder.as(); int signal = backend->getSignal(); if ((signal != -1) && (signal < 15)) { // signal too weak kWarning() << "tuning failed"; setDeviceState(DeviceIdle); return; } bool carry = true; if (carry && ((capabilities & DvbTFecAuto) == 0)) { switch (autoTTransponder->fecRateHigh) { case DvbTTransponder::Fec2_3: autoTTransponder->fecRateHigh = DvbTTransponder::Fec3_4; carry = false; break; case DvbTTransponder::Fec3_4: autoTTransponder->fecRateHigh = DvbTTransponder::Fec1_2; carry = false; break; case DvbTTransponder::Fec1_2: autoTTransponder->fecRateHigh = DvbTTransponder::Fec5_6; carry = false; break; case DvbTTransponder::Fec5_6: autoTTransponder->fecRateHigh = DvbTTransponder::Fec7_8; carry = false; break; default: autoTTransponder->fecRateHigh = DvbTTransponder::Fec2_3; break; } } if (carry && ((capabilities & DvbTGuardIntervalAuto) == 0)) { switch (autoTTransponder->guardInterval) { case DvbTTransponder::GuardInterval1_8: autoTTransponder->guardInterval = DvbTTransponder::GuardInterval1_32; carry = false; break; case DvbTTransponder::GuardInterval1_32: autoTTransponder->guardInterval = DvbTTransponder::GuardInterval1_4; carry = false; break; case DvbTTransponder::GuardInterval1_4: autoTTransponder->guardInterval = DvbTTransponder::GuardInterval1_16; carry = false; break; case DvbTTransponder::GuardInterval1_16: case DvbTTransponder::GuardIntervalAuto: autoTTransponder->guardInterval = DvbTTransponder::GuardInterval1_8; break; } } if (carry && ((capabilities & DvbTModulationAuto) == 0)) { switch (autoTTransponder->modulation) { case DvbTTransponder::Qam64: autoTTransponder->modulation = DvbTTransponder::Qam16; carry = false; break; case DvbTTransponder::Qam16: autoTTransponder->modulation = DvbTTransponder::Qpsk; carry = false; break; case DvbTTransponder::Qpsk: case DvbTTransponder::ModulationAuto: autoTTransponder->modulation = DvbTTransponder::Qam64; break; } } if (carry && ((capabilities & DvbTTransmissionModeAuto) == 0)) { switch (autoTTransponder->transmissionMode) { case DvbTTransponder::TransmissionMode8k: autoTTransponder->transmissionMode = DvbTTransponder::TransmissionMode2k; carry = false; break; case DvbTTransponder::TransmissionMode2k: /* outcommented so that clearly no compatibility problem arises autoTTransponder->transmissionMode = DvbTTransponder::TransmissionMode4k; carry = false; break; */ case DvbTTransponder::TransmissionMode4k: case DvbTTransponder::TransmissionModeAuto: autoTTransponder->transmissionMode = DvbTTransponder::TransmissionMode8k; break; } } if (!carry) { tune(autoTransponder); } else { kWarning() << "tuning failed"; setDeviceState(DeviceIdle); } } } void DvbDevice::setDeviceState(DeviceState newState) { if (deviceState != newState) { deviceState = newState; emit stateChanged(); } } void DvbDevice::discardBuffers() { dataChannelMutex.lock(); if (usedBuffersHead != NULL) { usedBuffersHead->size = 0; DvbDeviceDataBuffer *nextBuffer = usedBuffersHead->next; usedBuffersHead->next = NULL; if (nextBuffer != NULL) { nextBuffer->next = unusedBuffersHead; unusedBuffersHead = nextBuffer; } } dataChannelMutex.unlock(); } void DvbDevice::stop() { isAuto = false; frontendTimer.stop(); for (QMap::ConstIterator it = filters.constBegin(); it != filters.constEnd(); ++it) { foreach (DvbPidFilter *filter, it->filters) { if ((filter != &dummyPidFilter) && (filter != dataDumper)) { int pid = it.key(); kWarning() << "removing pending filter" << pid << filter; removePidFilter(pid, filter); } } } for (QMap::ConstIterator it = sectionFilters.constBegin(); it != sectionFilters.constEnd(); ++it) { foreach (DvbSectionFilter *sectionFilter, it->sectionFilters) { if (sectionFilter != &dummySectionFilter) { int pid = it.key(); kWarning() << "removing pending filter" << pid << sectionFilter; removeSectionFilter(pid, sectionFilter); } } } } DvbDataBuffer DvbDevice::getBuffer() { dataChannelMutex.lock(); DvbDeviceDataBuffer *buffer = unusedBuffersHead; if (buffer != NULL) { unusedBuffersHead = buffer->next; dataChannelMutex.unlock(); } else { dataChannelMutex.unlock(); buffer = new DvbDeviceDataBuffer; } return DvbDataBuffer(buffer->data, sizeof(buffer->data)); } void DvbDevice::writeBuffer(const DvbDataBuffer &dataBuffer) { DvbDeviceDataBuffer *buffer = reinterpret_cast(dataBuffer.data); Q_ASSERT(buffer->data == dataBuffer.data); if (dataBuffer.dataSize > 0) { buffer->size = dataBuffer.dataSize; dataChannelMutex.lock(); bool wakeUp = false; if (usedBuffersHead != NULL) { usedBuffersTail->next = buffer; } else { usedBuffersHead = buffer; wakeUp = true; } usedBuffersTail = buffer; usedBuffersTail->next = NULL; dataChannelMutex.unlock(); if (wakeUp) { QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } } else { dataChannelMutex.lock(); buffer->next = unusedBuffersHead; unusedBuffersHead = buffer; dataChannelMutex.unlock(); } } void DvbDevice::customEvent(QEvent *) { if (cleanUpFilters) { cleanUpFilters = false; { QMap::iterator it = filters.begin(); QMap::iterator end = filters.end(); while (it != end) { if (it->activeFilters == 0) { it = filters.erase(it); } else { it->filters.removeAll(&dummyPidFilter); ++it; } } } { QMap::iterator it = sectionFilters.begin(); QMap::iterator end = sectionFilters.end(); while (it != end) { if (it->activeSectionFilters == 0) { it = sectionFilters.erase(it); } else { it->sectionFilters.removeAll(&dummySectionFilter); ++it; } } } } DvbDeviceDataBuffer *buffer = NULL; while (true) { dataChannelMutex.lock(); if (buffer != NULL) { usedBuffersHead = buffer->next; buffer->next = unusedBuffersHead; unusedBuffersHead = buffer; } buffer = usedBuffersHead; dataChannelMutex.unlock(); if (buffer == NULL) { break; } for (int i = 0; i < buffer->size; i += 188) { char *packet = (buffer->data + i); if ((packet[1] & 0x80) != 0) { // transport error indicator continue; } int pid = ((static_cast(packet[1]) << 8) | static_cast(packet[2])) & ((1 << 13) - 1); QMap::const_iterator it = filters.constFind(pid); if (it == filters.constEnd()) { continue; } const QList &pidFilters = it->filters; int pidFiltersSize = pidFilters.size(); for (int j = 0; j < pidFiltersSize; ++j) { pidFilters.at(j)->processData(packet); } } } } kaffeine-1.2.2/src/dvb/dvbepg.h0000644000175000017500000000734111552636277015717 0ustar lxuserlxuser/* * dvbepg.h * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBEPG_H #define DVBEPG_H #include "dvbrecording.h" class AtscEpgFilter; class DvbDevice; class DvbEpgFilter; class DvbEpgEntry : public SharedData { public: DvbEpgEntry() { } explicit DvbEpgEntry(const DvbSharedChannel &channel_) : channel(channel_) { } ~DvbEpgEntry() { } // checks that all variables are ok bool validate() const; DvbSharedChannel channel; QDateTime begin; // UTC QTime duration; QString title; QString subheading; QString details; DvbSharedRecording recording; }; typedef ExplicitlySharedDataPointer DvbSharedEpgEntry; Q_DECLARE_TYPEINFO(DvbSharedEpgEntry, Q_MOVABLE_TYPE); class DvbEpgEntryId { public: explicit DvbEpgEntryId(const DvbEpgEntry *entry_) : entry(entry_) { } explicit DvbEpgEntryId(const DvbSharedEpgEntry &entry_) : entry(entry_.constData()) { } ~DvbEpgEntryId() { } // compares entries, 'recording' is ignored // if one 'details' is empty, 'details' is ignored bool operator<(const DvbEpgEntryId &other) const; private: const DvbEpgEntry *entry; }; class DvbEpgModel : public QObject { Q_OBJECT typedef QMap::Iterator Iterator; typedef QMap::ConstIterator ConstIterator; public: DvbEpgModel(DvbManager *manager_, QObject *parent); ~DvbEpgModel(); QMap getEntries() const; QHash getEpgChannels() const; QList getCurrentNext(const DvbSharedChannel &channel) const; DvbSharedEpgEntry addEntry(const DvbEpgEntry &entry); void scheduleProgram(const DvbSharedEpgEntry &entry, int extraSecondsBefore, int extraSecondsAfter); void startEventFilter(DvbDevice *device, const DvbSharedChannel &channel); void stopEventFilter(DvbDevice *device, const DvbSharedChannel &channel); signals: void entryAdded(const DvbSharedEpgEntry &entry); // updating doesn't change the entry pointer (modifies existing content) void entryAboutToBeUpdated(const DvbSharedEpgEntry &entry); void entryUpdated(const DvbSharedEpgEntry &entry); void entryRemoved(const DvbSharedEpgEntry &entry); void epgChannelAdded(const DvbSharedChannel &channel); void epgChannelRemoved(const DvbSharedChannel &channel); private slots: void channelAboutToBeUpdated(const DvbSharedChannel &channel); void channelUpdated(const DvbSharedChannel &channel); void channelRemoved(const DvbSharedChannel &channel); void recordingRemoved(const DvbSharedRecording &recording); private: void timerEvent(QTimerEvent *event); Iterator removeEntry(Iterator it); DvbManager *manager; QDateTime currentDateTimeUtc; QMap entries; QMap recordings; QHash epgChannels; QList > dvbEpgFilters; QList > atscEpgFilters; DvbChannel updatingChannel; bool hasPendingOperation; }; #endif /* DVBEPG_H */ kaffeine-1.2.2/src/dvb/dvbtransponder.h0000644000175000017500000001475111552636277017506 0ustar lxuserlxuser/* * dvbtransponder.h * * Copyright (C) 2007-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef DVBTRANSPONDER_H #define DVBTRANSPONDER_H #include class QDataStream; class QString; class DvbTransponder; class DvbTransponderBase { public: enum TransmissionType { Invalid = 5, DvbC = 0, DvbS = 1, DvbS2 = 4, DvbT = 2, Atsc = 3 }; enum FecRate { FecNone = 0, Fec1_2 = 1, Fec1_3 = 10, Fec1_4 = 11, Fec2_3 = 2, Fec2_5 = 12, Fec3_4 = 3, Fec3_5 = 13, Fec4_5 = 4, Fec5_6 = 5, Fec6_7 = 6, Fec7_8 = 7, Fec8_9 = 8, Fec9_10 = 14, FecAuto = 9 }; private: TransmissionType transmissionType : 8; }; class DvbCTransponder : public DvbTransponderBase { public: enum Modulation { Qam16 = 0, Qam32 = 1, Qam64 = 2, Qam128 = 3, Qam256 = 4, ModulationAuto = 5 }; void readTransponder(QDataStream &stream); bool fromString(const QString &string); QString toString() const; bool corresponds(const DvbTransponder &transponder) const; Modulation modulation : 8; FecRate fecRate : 8; int frequency; // Hz int symbolRate; // symbols per second }; class DvbSTransponder : public DvbTransponderBase { public: enum Polarization { Horizontal = 0, Vertical = 1, CircularLeft = 2, CircularRight = 3 }; void readTransponder(QDataStream &stream); bool fromString(const QString &string); QString toString() const; bool corresponds(const DvbTransponder &transponder) const; Polarization polarization : 8; FecRate fecRate : 8; int frequency; // kHz int symbolRate; // symbols per second }; class DvbS2Transponder : public DvbSTransponder { public: enum Modulation { Qpsk = 0, Psk8 = 1, Apsk16 = 2, Apsk32 = 3, ModulationAuto = 4 }; enum RollOff { RollOff20 = 0, RollOff25 = 1, RollOff35 = 2, RollOffAuto = 3 }; void readTransponder(QDataStream &stream); bool fromString(const QString &string); QString toString() const; bool corresponds(const DvbTransponder &transponder) const; Modulation modulation : 8; RollOff rollOff : 8; }; class DvbTTransponder : public DvbTransponderBase { public: enum Bandwidth { Bandwidth6MHz = 0, Bandwidth7MHz = 1, Bandwidth8MHz = 2, BandwidthAuto = 3 }; enum Modulation { Qpsk = 0, Qam16 = 1, Qam64 = 2, ModulationAuto = 3 }; enum TransmissionMode { TransmissionMode2k = 0, TransmissionMode4k = 3, TransmissionMode8k = 1, TransmissionModeAuto = 2 }; enum GuardInterval { GuardInterval1_4 = 0, GuardInterval1_8 = 1, GuardInterval1_16 = 2, GuardInterval1_32 = 3, GuardIntervalAuto = 4 }; enum Hierarchy { HierarchyNone = 0, Hierarchy1 = 1, Hierarchy2 = 2, Hierarchy4 = 3, HierarchyAuto = 4 }; void readTransponder(QDataStream &stream); bool fromString(const QString &string); QString toString() const; bool corresponds(const DvbTransponder &transponder) const; Bandwidth bandwidth : 8; Modulation modulation : 8; FecRate fecRateHigh : 8; // high priority stream FecRate fecRateLow : 8; // low priority stream TransmissionMode transmissionMode : 8; GuardInterval guardInterval : 8; Hierarchy hierarchy : 8; int frequency; // Hz }; class AtscTransponder : public DvbTransponderBase { public: enum Modulation { Qam64 = 0, Qam256 = 1, Vsb8 = 2, Vsb16 = 3, ModulationAuto = 4 }; void readTransponder(QDataStream &stream); bool fromString(const QString &string); QString toString() const; bool corresponds(const DvbTransponder &transponder) const; Modulation modulation : 8; int frequency; // Hz }; class DvbTransponder { public: DvbTransponder() { data.transmissionType = DvbTransponderBase::Invalid; } explicit DvbTransponder(DvbTransponderBase::TransmissionType transmissionType_) { memset(&data, 0, sizeof(data)); data.transmissionType = transmissionType_; } ~DvbTransponder() { } DvbTransponderBase::TransmissionType getTransmissionType() const { return data.transmissionType; } bool isValid() const { return (data.transmissionType != DvbTransponderBase::Invalid); } static DvbTransponder fromString(const QString &string); // linuxtv scan file format QString toString() const; // linuxtv scan file format /* * corresponding in this context means that both tuning parameters will lead to the same * transponder; note the tuning parameters don't have to be equal, it's sufficient that * they can't coexist at the same time (for example the frequency difference between two * channels in the same network has to be big enough because of bandwidth) */ bool corresponds(const DvbTransponder &transponder) const; template const T *as() const { if (data.transmissionType == transmissionTypeFor(static_cast(NULL))) { return reinterpret_cast(&data); } return NULL; } template T *as() { if (data.transmissionType == transmissionTypeFor(static_cast(NULL))) { return reinterpret_cast(&data); } return NULL; } private: DvbTransponderBase::TransmissionType transmissionTypeFor(const DvbCTransponder *) const { return DvbTransponderBase::DvbC; } DvbTransponderBase::TransmissionType transmissionTypeFor(const DvbSTransponder *) const { return DvbTransponderBase::DvbS; } DvbTransponderBase::TransmissionType transmissionTypeFor(const DvbS2Transponder *) const { return DvbTransponderBase::DvbS2; } DvbTransponderBase::TransmissionType transmissionTypeFor(const DvbTTransponder *) const { return DvbTransponderBase::DvbT; } DvbTransponderBase::TransmissionType transmissionTypeFor(const AtscTransponder *) const { return DvbTransponderBase::Atsc; } union { DvbTransponderBase::TransmissionType transmissionType : 8; DvbCTransponder dvbCTransponder; DvbSTransponder dvbSTransponder; DvbS2Transponder dvbS2Transponder; DvbTTransponder dvbTTransponder; AtscTransponder atscTransponder; } data; }; #endif /* DVBTRANSPONDER_H */ kaffeine-1.2.2/src/dvb/dvbscandialog.cpp0000644000175000017500000003571111552636277017605 0ustar lxuserlxuser/* * dvbscandialog.cpp * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbscandialog.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dvbchanneldialog.h" #include "dvbdevice.h" #include "dvbliveview.h" #include "dvbmanager.h" #include "dvbscan.h" DvbGradProgress::DvbGradProgress(QWidget *parent) : QLabel(parent), value(0) { setAlignment(Qt::AlignCenter); setFrameShape(Box); setText(i18n("0%")); } DvbGradProgress::~DvbGradProgress() { } void DvbGradProgress::setValue(int value_) { value = value_; if (value == -1) { value = 0; } Q_ASSERT((value >= 0) && (value <= 100)); setText(i18n("%1%", value)); update(); } void DvbGradProgress::paintEvent(QPaintEvent *event) { { QPainter painter(this); int border = frameWidth(); QRect rect(border, border, width() - 2 * border, height() - 2 * border); QLinearGradient gradient(rect.topLeft(), rect.topRight()); gradient.setColorAt(0, Qt::red); gradient.setColorAt(1, Qt::green); rect.setWidth((rect.width() * value) / 100); painter.fillRect(rect, gradient); } QLabel::paintEvent(event); } class DvbPreviewChannelTableModel : public QAbstractTableModel { public: explicit DvbPreviewChannelTableModel(QObject *parent) : QAbstractTableModel(parent) { } ~DvbPreviewChannelTableModel() { } enum ItemDataRole { DvbPreviewChannelRole = Qt::UserRole }; QAbstractItemModel *createProxyModel(QObject *parent); int columnCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; void appendChannels(const QList &list) { beginInsertRows(QModelIndex(), channels.size(), channels.size() + list.size() - 1); channels += list; endInsertRows(); } const DvbPreviewChannel &getChannel(int pos) const { return channels.at(pos); } QList getChannels() const { return channels; } void removeChannels() { channels.clear(); reset(); } private: QList channels; }; Q_DECLARE_METATYPE(const DvbPreviewChannel *) QAbstractItemModel *DvbPreviewChannelTableModel::createProxyModel(QObject *parent) { QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(parent); proxyModel->setDynamicSortFilter(true); proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); proxyModel->setSortLocaleAware(true); proxyModel->setSourceModel(this); return proxyModel; } int DvbPreviewChannelTableModel::columnCount(const QModelIndex &parent) const { if (parent.isValid()) { return 0; } return 3; } int DvbPreviewChannelTableModel::rowCount(const QModelIndex &parent) const { if (parent.isValid()) { return 0; } return channels.size(); } QVariant DvbPreviewChannelTableModel::data(const QModelIndex &index, int role) const { const DvbPreviewChannel &channel = channels.at(index.row()); switch (role) { case Qt::DecorationRole: if (index.column() == 0) { if (channel.hasVideo) { if (!channel.isScrambled) { return KIcon("video-television"); } else { return KIcon("video-television-encrypted"); } } else { if (!channel.isScrambled) { return KIcon("text-speak"); } else { return KIcon("audio-radio-encrypted"); } } } break; case Qt::DisplayRole: switch (index.column()) { case 0: return channel.name; case 1: return channel.provider; case 2: return channel.snr; } break; case DvbPreviewChannelRole: return QVariant::fromValue(&channel); } return QVariant(); } QVariant DvbPreviewChannelTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation != Qt::Horizontal || role != Qt::DisplayRole) { return QVariant(); } switch (section) { case 0: return i18nc("@title:column tv show", "Channel"); case 1: return i18n("Provider"); case 2: return i18n("SNR"); } return QVariant(); } DvbScanDialog::DvbScanDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_), internal(NULL) { setCaption(i18n("Channels")); QWidget *mainWidget = new QWidget(this); QBoxLayout *mainLayout = new QHBoxLayout(mainWidget); QGroupBox *groupBox = new QGroupBox(i18n("Channels"), mainWidget); QBoxLayout *groupLayout = new QVBoxLayout(groupBox); QBoxLayout *boxLayout = new QHBoxLayout(); channelModel = new DvbChannelModel(this); channelModel->cloneFrom(manager->getChannelModel()); DvbChannelTableModel *channelTableModel = new DvbChannelTableModel(this); DvbChannelView *channelView = new DvbChannelView(groupBox); channelView->setContextMenuPolicy(Qt::ActionsContextMenu); channelView->setDragDropMode(QAbstractItemView::InternalMove); channelView->setModel(channelTableModel); channelView->setRootIsDecorated(false); channelView->setSelectionMode(QAbstractItemView::ExtendedSelection); QHeaderView *header = manager->getChannelView()->header(); channelView->sortByColumn(header->sortIndicatorSection(), header->sortIndicatorOrder()); channelView->setSortingEnabled(true); channelTableModel->setChannelModel(channelModel); connect(channelTableModel, SIGNAL(checkChannelDragAndDrop(bool*)), channelView, SLOT(checkChannelDragAndDrop(bool*))); KAction *action = channelView->addEditAction(); QPushButton *pushButton = new QPushButton(action->icon(), action->text(), groupBox); connect(pushButton, SIGNAL(clicked()), channelView, SLOT(editChannel())); boxLayout->addWidget(pushButton); action = channelView->addRemoveAction(); pushButton = new QPushButton(action->icon(), action->text(), groupBox); connect(pushButton, SIGNAL(clicked()), channelView, SLOT(removeChannel())); boxLayout->addWidget(pushButton); pushButton = new QPushButton(KIcon("edit-clear-list"), i18nc("remove all items from a list", "Clear"), groupBox); connect(pushButton, SIGNAL(clicked()), channelView, SLOT(removeAllChannels())); boxLayout->addWidget(pushButton); groupLayout->addLayout(boxLayout); groupLayout->addWidget(channelView); mainLayout->addWidget(groupBox); boxLayout = new QVBoxLayout(); groupBox = new QGroupBox(i18n("Channel Scan"), mainWidget); groupLayout = new QVBoxLayout(groupBox); groupLayout->addWidget(new QLabel(i18n("Source:"))); sourceBox = new KComboBox(groupBox); groupLayout->addWidget(sourceBox); scanButton = new QPushButton(KIcon("edit-find"), i18n("Start Scan"), groupBox); scanButton->setCheckable(true); connect(scanButton, SIGNAL(clicked(bool)), this, SLOT(scanButtonClicked(bool))); groupLayout->addWidget(scanButton); QLabel *label = new QLabel(i18n("Scan data last updated on %1", KGlobal::locale()->formatDate(manager->getScanDataDate(), KLocale::ShortDate))); label->setWordWrap(true); groupLayout->addWidget(label); QGridLayout *gridLayout = new QGridLayout(); gridLayout->addWidget(new QLabel(i18n("Signal:")), 0, 0); signalWidget = new DvbGradProgress(groupBox); gridLayout->addWidget(signalWidget, 0, 1); gridLayout->addWidget(new QLabel(i18n("SNR:")), 1, 0); snrWidget = new DvbGradProgress(groupBox); gridLayout->addWidget(snrWidget, 1, 1); gridLayout->addWidget(new QLabel(i18n("Tuned:")), 2, 0); tunedLed = new KLed(groupBox); gridLayout->addWidget(tunedLed, 2, 1); groupLayout->addLayout(gridLayout); progressBar = new QProgressBar(groupBox); progressBar->setValue(0); groupLayout->addWidget(progressBar); boxLayout->addWidget(groupBox); boxLayout->addStretch(); groupBox = new QGroupBox(i18n("Filter"), mainWidget); groupLayout = new QVBoxLayout(groupBox); ftaCheckBox = new QCheckBox(i18n("Free to air"), groupBox); groupLayout->addWidget(ftaCheckBox); radioCheckBox = new QCheckBox(i18n("Radio"), groupBox); groupLayout->addWidget(radioCheckBox); tvCheckBox = new QCheckBox(i18n("TV"), groupBox); groupLayout->addWidget(tvCheckBox); providerCheckBox = new QCheckBox(i18n("Provider:"), groupBox); groupLayout->addWidget(providerCheckBox); providerBox = new KComboBox(groupBox); providerBox->setEnabled(false); connect(providerCheckBox, SIGNAL(clicked(bool)), providerBox, SLOT(setEnabled(bool))); groupLayout->addWidget(providerBox); pushButton = new QPushButton(i18n("Add Filtered"), groupBox); connect(pushButton, SIGNAL(clicked()), this, SLOT(addFilteredChannels())); groupLayout->addWidget(pushButton); pushButton = new QPushButton(i18n("Add Selected"), groupBox); connect(pushButton, SIGNAL(clicked()), this, SLOT(addSelectedChannels())); groupLayout->addWidget(pushButton); boxLayout->addWidget(groupBox); mainLayout->addLayout(boxLayout); groupBox = new QGroupBox(i18n("Scan Results"), mainWidget); groupLayout = new QVBoxLayout(groupBox); previewModel = new DvbPreviewChannelTableModel(this); scanResultsView = new QTreeView(groupBox); scanResultsView->setModel(previewModel->createProxyModel(groupBox)); scanResultsView->setRootIsDecorated(false); scanResultsView->setSelectionMode(QAbstractItemView::ExtendedSelection); scanResultsView->sortByColumn(0, Qt::AscendingOrder); scanResultsView->setSortingEnabled(true); groupLayout->addWidget(scanResultsView); mainLayout->addWidget(groupBox); setDevice(manager->getLiveView()->getDevice()); if (device != NULL) { sourceBox->addItem(i18n("Current Transponder")); sourceBox->setEnabled(false); isLive = true; } else { QStringList list = manager->getSources(); if (!list.isEmpty()) { sourceBox->addItems(list); } else { sourceBox->setEnabled(false); scanButton->setEnabled(false); } isLive = false; } connect(this, SIGNAL(accepted()), this, SLOT(dialogAccepted())); connect(&statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); setMainWidget(mainWidget); } DvbScanDialog::~DvbScanDialog() { delete internal; } void DvbScanDialog::scanButtonClicked(bool checked) { if (!checked) { // stop scan Q_ASSERT(internal != NULL); scanButton->setText(i18n("Start Scan")); progressBar->setValue(0); delete internal; internal = NULL; if (!isLive) { manager->releaseDevice(device, DvbManager::Exclusive); setDevice(NULL); } return; } // start scan Q_ASSERT(internal == NULL); if (!manager->getLiveView()->getChannel().isValid()) { isLive = false; // FIXME workaround } if (isLive) { const DvbSharedChannel &channel = manager->getLiveView()->getChannel(); internal = new DvbScan(device, channel->source, channel->transponder); } else { QString source = sourceBox->currentText(); setDevice(manager->requestExclusiveDevice(source)); if (device != NULL) { // FIXME ugly QString autoScanSource = manager->getAutoScanSource(source); if (autoScanSource.isEmpty()) { internal = new DvbScan(device, source, manager->getTransponders(device, source)); } else { internal = new DvbScan(device, source, autoScanSource); } } else { scanButton->setChecked(false); KMessageBox::sorry(this, i18nc("message box", "No available device found.")); return; } } scanButton->setText(i18n("Stop Scan")); providers.clear(); providerBox->clear(); previewModel->removeChannels(); connect(internal, SIGNAL(foundChannels(QList)), this, SLOT(foundChannels(QList))); connect(internal, SIGNAL(scanProgress(int)), progressBar, SLOT(setValue(int))); // calling scanFinished() will delete internal, so we have to queue the signal! connect(internal, SIGNAL(scanFinished()), this, SLOT(scanFinished()), Qt::QueuedConnection); internal->start(); } void DvbScanDialog::dialogAccepted() { manager->getChannelModel()->cloneFrom(channelModel); } static bool localeAwareLessThan2(const QString &x, const QString &y) { return x.localeAwareCompare(y) < 0; } void DvbScanDialog::foundChannels(const QList &channels) { previewModel->appendChannels(channels); foreach (const DvbPreviewChannel &channel, channels) { if (channel.provider.isEmpty()) { continue; } QStringList::const_iterator it = qLowerBound(providers.constBegin(), providers.constEnd(), channel.provider, localeAwareLessThan2); if ((it != providers.constEnd()) && (*it == channel.provider)) { continue; } int pos = it - providers.constBegin(); providers.insert(pos, channel.provider); providerBox->insertItem(pos, channel.provider); } } void DvbScanDialog::scanFinished() { // the state may have changed because the signal is queued if (scanButton->isChecked()) { scanButton->setChecked(false); scanButtonClicked(false); } } void DvbScanDialog::updateStatus() { if (device->getDeviceState() != DvbDevice::DeviceIdle) { signalWidget->setValue(device->getSignal()); snrWidget->setValue(device->getSnr()); tunedLed->setState(device->isTuned() ? KLed::On : KLed::Off); } } void DvbScanDialog::addSelectedChannels() { QSet selectedRows; foreach (const QModelIndex &modelIndex, scanResultsView->selectionModel()->selectedIndexes()) { if (!selectedRows.contains(modelIndex.row())) { selectedRows.insert(modelIndex.row()); const DvbChannel *channel = scanResultsView->model()->data(modelIndex, DvbPreviewChannelTableModel::DvbPreviewChannelRole). value(); DvbChannel newChannel(*channel); channelModel->addChannel(newChannel); } } } void DvbScanDialog::addFilteredChannels() { foreach (const DvbPreviewChannel &channel, previewModel->getChannels()) { if (ftaCheckBox->isChecked()) { // only fta channels if (channel.isScrambled) { continue; } } if (radioCheckBox->isChecked()) { if (!tvCheckBox->isChecked()) { // only radio channels if (channel.hasVideo) { continue; } } } else { if (tvCheckBox->isChecked()) { // only tv channels if (!channel.hasVideo) { continue; } } } if (providerCheckBox->isChecked()) { // only channels from a certain provider if (channel.provider != providerBox->currentText()) { continue; } } DvbChannel newChannel(channel); channelModel->addChannel(newChannel); } } void DvbScanDialog::setDevice(DvbDevice *newDevice) { device = newDevice; if (device == NULL) { statusTimer.stop(); signalWidget->setValue(0); snrWidget->setValue(0); tunedLed->setState(KLed::Off); } else { statusTimer.start(1000); updateStatus(); } } kaffeine-1.2.2/src/dvb/dvbrecordingdialog.cpp0000644000175000017500000003604311552636277020634 0ustar lxuserlxuser/* * dvbrecordingdialog.cpp * * Copyright (C) 2009-2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbrecordingdialog.h" #include "dvbrecordingdialog_p.h" #include #include #include #include #include #include #include #include #include #include #include "../datetimeedit.h" #include "dvbchanneldialog.h" #include "dvbmanager.h" DvbRecordingDialog::DvbRecordingDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_) { setButtons(KDialog::Close); setCaption(i18nc("@title:window", "Recording Schedule")); QWidget *widget = new QWidget(this); model = new DvbRecordingTableModel(this); treeView = new QTreeView(widget); treeView->header()->setResizeMode(QHeaderView::ResizeToContents); treeView->setContextMenuPolicy(Qt::ActionsContextMenu); treeView->setModel(model); treeView->setRootIsDecorated(false); treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); treeView->sortByColumn(2, Qt::AscendingOrder); treeView->setSortingEnabled(true); model->setRecordingModel(manager->getRecordingModel()); QBoxLayout *boxLayout = new QHBoxLayout(); KAction *action = new KAction(KIcon("list-add"), i18nc("@action", "New"), widget); connect(action, SIGNAL(triggered()), this, SLOT(newRecording())); treeView->addAction(action); QPushButton *pushButton = new QPushButton(action->icon(), action->text(), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(newRecording())); boxLayout->addWidget(pushButton); action = new KAction(KIcon("configure"), i18nc("@action", "Edit"), widget); connect(action, SIGNAL(triggered()), this, SLOT(editRecording())); treeView->addAction(action); pushButton = new QPushButton(action->icon(), action->text(), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(editRecording())); boxLayout->addWidget(pushButton); action = new KAction(KIcon("edit-delete"), i18nc("@action", "Remove"), widget); connect(action, SIGNAL(triggered()), this, SLOT(removeRecording())); treeView->addAction(action); pushButton = new QPushButton(action->icon(), action->text(), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(removeRecording())); boxLayout->addWidget(pushButton); boxLayout->addStretch(); QBoxLayout *mainLayout = new QVBoxLayout(widget); mainLayout->addLayout(boxLayout); mainLayout->addWidget(treeView); setMainWidget(widget); resize(100 * fontMetrics().averageCharWidth(), 20 * fontMetrics().height()); } DvbRecordingDialog::~DvbRecordingDialog() { } void DvbRecordingDialog::showDialog(DvbManager *manager_, QWidget *parent) { KDialog *dialog = new DvbRecordingDialog(manager_, parent); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void DvbRecordingDialog::newRecording() { KDialog *dialog = new DvbRecordingEditor(manager, DvbSharedRecording(), this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } void DvbRecordingDialog::editRecording() { QModelIndex index = treeView->currentIndex(); if (index.isValid()) { KDialog *dialog = new DvbRecordingEditor(manager, model->value(index), this); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setModal(true); dialog->show(); } } void DvbRecordingDialog::removeRecording() { QSet recordings; foreach (const QModelIndex &modelIndex, treeView->selectionModel()->selectedIndexes()) { recordings.insert(model->value(modelIndex)); } DvbRecordingModel *recordingModel = manager->getRecordingModel(); foreach (const DvbSharedRecording &recording, recordings) { recordingModel->removeRecording(recording); } } void DvbRecordingLessThan::setSortOrder(SortOrder sortOrder_) { for (int index = 0; index < 4; ++index) { if ((sortOrder[index] >> 1) == (sortOrder_ >> 1)) { for (int j = index; j > 0; --j) { sortOrder[j] = sortOrder[j - 1]; } sortOrder[0] = sortOrder_; return; } } } bool DvbRecordingLessThan::operator()(const DvbSharedRecording &x, const DvbSharedRecording &y) const { for (int index = 0; index < 4; ++index) { switch (sortOrder[index]) { case NameAscending: if (x->name != y->name) { return (x->name.localeAwareCompare(y->name) < 0); } break; case NameDescending: if (x->name != y->name) { return (x->name.localeAwareCompare(y->name) > 0); } break; case ChannelAscending: if (x->channel->name != y->channel->name) { return (x->channel->name.localeAwareCompare(y->channel->name) < 0); } break; case ChannelDescending: if (x->channel->name != y->channel->name) { return (x->channel->name.localeAwareCompare(y->channel->name) > 0); } break; case BeginAscending: if (x->begin != y->begin) { return (x->begin < y->begin); } break; case BeginDescending: if (x->begin != y->begin) { return (x->begin > y->begin); } break; case DurationAscending: if (x->duration != y->duration) { return (x->duration < y->duration); } break; case DurationDescending: if (x->duration != y->duration) { return (x->duration > y->duration); } break; } } return (x < y); } DvbRecordingTableModel::DvbRecordingTableModel(QObject *parent) : TableModel(parent), recordingModel(NULL) { } DvbRecordingTableModel::~DvbRecordingTableModel() { } void DvbRecordingTableModel::setRecordingModel(DvbRecordingModel *recordingModel_) { if (recordingModel != NULL) { kWarning() << "recording model already set"; return; } recordingModel = recordingModel_; connect(recordingModel, SIGNAL(recordingAdded(DvbSharedRecording)), this, SLOT(recordingAdded(DvbSharedRecording))); connect(recordingModel, SIGNAL(recordingAboutToBeUpdated(DvbSharedRecording)), this, SLOT(recordingAboutToBeUpdated(DvbSharedRecording))); connect(recordingModel, SIGNAL(recordingUpdated(DvbSharedRecording)), this, SLOT(recordingUpdated(DvbSharedRecording))); connect(recordingModel, SIGNAL(recordingRemoved(DvbSharedRecording)), this, SLOT(recordingRemoved(DvbSharedRecording))); reset(recordingModel->getRecordings()); } QVariant DvbRecordingTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if ((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { switch (section) { case 0: return i18nc("@title:column recording", "Name"); case 1: return i18nc("@title:column tv show", "Channel"); case 2: return i18nc("@title:column tv show", "Start"); case 3: return i18nc("@title:column tv show", "Duration"); } } return QVariant(); } QVariant DvbRecordingTableModel::data(const QModelIndex &index, int role) const { const DvbSharedRecording &recording = value(index); if (recording.isValid()) { switch (role) { case Qt::DecorationRole: if (index.column() == 0) { switch (recording->status) { case DvbRecording::Inactive: break; case DvbRecording::Recording: return KIcon("media-record"); case DvbRecording::Error: return KIcon("dialog-error"); } if (recording->repeat != 0) { return KIcon("view-refresh"); } } break; case Qt::DisplayRole: switch (index.column()) { case 0: return recording->name; case 1: return recording->channel->name; case 2: return KGlobal::locale()->formatDateTime( recording->begin.toLocalTime()); case 3: return KGlobal::locale()->formatTime(recording->duration, false, true); } break; } } return QVariant(); } void DvbRecordingTableModel::sort(int column, Qt::SortOrder order) { DvbRecordingLessThan::SortOrder sortOrder; if (order == Qt::AscendingOrder) { switch (column) { case 0: sortOrder = DvbRecordingLessThan::NameAscending; break; case 1: sortOrder = DvbRecordingLessThan::ChannelAscending; break; case 2: sortOrder = DvbRecordingLessThan::BeginAscending; break; case 3: sortOrder = DvbRecordingLessThan::DurationAscending; break; default: return; } } else { switch (column) { case 0: sortOrder = DvbRecordingLessThan::NameDescending; break; case 1: sortOrder = DvbRecordingLessThan::ChannelDescending; break; case 2: sortOrder = DvbRecordingLessThan::BeginDescending; break; case 3: sortOrder = DvbRecordingLessThan::DurationDescending; break; default: return; } } internalSort(sortOrder); } void DvbRecordingTableModel::recordingAdded(const DvbSharedRecording &recording) { insert(recording); } void DvbRecordingTableModel::recordingAboutToBeUpdated(const DvbSharedRecording &recording) { aboutToUpdate(recording); } void DvbRecordingTableModel::recordingUpdated(const DvbSharedRecording &recording) { update(recording); } void DvbRecordingTableModel::recordingRemoved(const DvbSharedRecording &recording) { remove(recording); } DvbRecordingEditor::DvbRecordingEditor(DvbManager *manager_, const DvbSharedRecording &recording_, QWidget *parent) : KDialog(parent), manager(manager_), recording(recording_) { setCaption(i18nc("@title:window recording", "Edit Schedule Entry")); QWidget *widget = new QWidget(this); QGridLayout *gridLayout = new QGridLayout(widget); nameEdit = new KLineEdit(widget); connect(nameEdit, SIGNAL(textChanged(QString)), this, SLOT(checkValidity())); gridLayout->addWidget(nameEdit, 0, 1); QLabel *label = new QLabel(i18nc("@label recording", "Name:"), widget); label->setBuddy(nameEdit); gridLayout->addWidget(label, 0, 0); channelBox = new KComboBox(widget); DvbChannelTableModel *channelModel = new DvbChannelTableModel(widget); QHeaderView *header = manager->getChannelView()->header(); channelModel->sort(header->sortIndicatorSection(), header->sortIndicatorOrder()); channelModel->setChannelModel(manager->getChannelModel()); channelBox->setModel(channelModel); connect(channelBox, SIGNAL(currentIndexChanged(int)), this, SLOT(checkValidity())); gridLayout->addWidget(channelBox, 1, 1); label = new QLabel(i18nc("@label tv show", "Channel:"), widget); label->setBuddy(channelBox); gridLayout->addWidget(label, 1, 0); beginEdit = new DateTimeEdit(widget); beginEdit->setCurrentSection(DateTimeEdit::HourSection); connect(beginEdit, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(beginChanged(QDateTime))); gridLayout->addWidget(beginEdit, 2, 1); label = new QLabel(i18nc("@label tv show", "Start:"), widget); label->setBuddy(beginEdit); gridLayout->addWidget(label, 2, 0); durationEdit = new DurationEdit(widget); connect(durationEdit, SIGNAL(timeChanged(QTime)), this, SLOT(durationChanged(QTime))); gridLayout->addWidget(durationEdit, 3, 1); label = new QLabel(i18nc("@label tv show", "Duration:"), widget); label->setBuddy(durationEdit); gridLayout->addWidget(label, 3, 0); endEdit = new DateTimeEdit(widget); endEdit->setCurrentSection(DateTimeEdit::HourSection); connect(endEdit, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(endChanged(QDateTime))); gridLayout->addWidget(endEdit, 4, 1); label = new QLabel(i18nc("@label tv show", "End:"), widget); label->setBuddy(endEdit); gridLayout->addWidget(label, 4, 0); gridLayout->addWidget(new QLabel(i18nc("@label recording", "Repeat:"), widget), 5, 0); QBoxLayout *boxLayout = new QHBoxLayout(); QPushButton *pushButton = new QPushButton(i18nc("@action next to 'Repeat:'", "Never"), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(repeatNever())); boxLayout->addWidget(pushButton); pushButton = new QPushButton(i18nc("@action next to 'Repeat:'", "Daily"), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(repeatDaily())); boxLayout->addWidget(pushButton); gridLayout->addLayout(boxLayout, 5, 1); QGridLayout *dayLayout = new QGridLayout(); const KCalendarSystem *calendar = KGlobal::locale()->calendar(); for (int i = 0; i < 7; ++i) { dayCheckBoxes[i] = new QCheckBox( calendar->weekDayName(i + 1, KCalendarSystem::ShortDayName), widget); dayLayout->addWidget(dayCheckBoxes[i], (i >> 2), (i & 0x03)); } gridLayout->addLayout(dayLayout, 6, 1); setMainWidget(widget); if (recording.isValid()) { nameEdit->setText(recording->name); channelBox->setCurrentIndex(channelModel->find(recording->channel).row()); beginEdit->setDateTime(recording->begin.toLocalTime()); durationEdit->setTime(recording->duration); for (int i = 0; i < 7; ++i) { if ((recording->repeat & (1 << i)) != 0) { dayCheckBoxes[i]->setChecked(true); } } switch (recording->status) { case DvbRecording::Inactive: break; case DvbRecording::Recording: case DvbRecording::Error: nameEdit->setEnabled(false); channelBox->setEnabled(false); beginEdit->setEnabled(false); break; } } else { channelBox->setCurrentIndex(-1); beginEdit->setDateTime(QDateTime::currentDateTime()); durationEdit->setTime(QTime(2, 0)); } checkValidity(); if (nameEdit->text().isEmpty()) { nameEdit->setFocus(); } } DvbRecordingEditor::~DvbRecordingEditor() { } void DvbRecordingEditor::beginChanged(const QDateTime &begin) { // attention: setDateTimeRange and setDateTime influence each other! QTime duration = durationEdit->time(); endEdit->setDateTimeRange(begin, begin.addSecs((23 * 60 + 59) * 60)); endEdit->setDateTime(begin.addSecs(QTime().secsTo(duration))); } void DvbRecordingEditor::durationChanged(const QTime &duration) { endEdit->setDateTime(beginEdit->dateTime().addSecs(QTime().secsTo(duration))); } void DvbRecordingEditor::endChanged(const QDateTime &end) { durationEdit->setTime(QTime().addSecs(beginEdit->dateTime().secsTo(end))); } void DvbRecordingEditor::repeatNever() { for (int i = 0; i < 7; ++i) { dayCheckBoxes[i]->setChecked(false); } } void DvbRecordingEditor::repeatDaily() { for (int i = 0; i < 7; ++i) { dayCheckBoxes[i]->setChecked(true); } } void DvbRecordingEditor::checkValidity() { enableButtonOk(!nameEdit->text().isEmpty() && (channelBox->currentIndex() != -1)); } void DvbRecordingEditor::accept() { DvbRecording newRecording; newRecording.name = nameEdit->text(); newRecording.channel = manager->getChannelModel()->findChannelByName(channelBox->currentText()); newRecording.begin = beginEdit->dateTime().toUTC(); newRecording.duration = durationEdit->time(); for (int i = 0; i < 7; ++i) { if (dayCheckBoxes[i]->isChecked()) { newRecording.repeat |= (1 << i); } } if (!recording.isValid()) { manager->getRecordingModel()->addRecording(newRecording); } else { manager->getRecordingModel()->updateRecording(recording, newRecording); } KDialog::accept(); } kaffeine-1.2.2/src/dvb/dvbscan.cpp0000644000175000017500000006661411552636277016433 0ustar lxuserlxuser/* * dvbscan.cpp * * Copyright (C) 2008-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "dvbscan.h" #include #include #include "dvbdevice.h" #include "dvbsi.h" class DvbPatEntry { public: DvbPatEntry(int programNumber_, int pid_) : programNumber(programNumber_), pid(pid_) { } ~DvbPatEntry() { } int programNumber; int pid; }; Q_DECLARE_TYPEINFO(DvbPatEntry, Q_MOVABLE_TYPE); class DvbSdtEntry { public: DvbSdtEntry(int serviceId_, int networkId_, bool scrambled_) : serviceId(serviceId_), networkId(networkId_), scrambled(scrambled_) { } ~DvbSdtEntry() { } int serviceId; int networkId; bool scrambled; QString name; QString provider; }; class DvbScanFilter : public DvbSectionFilter, QObject { public: DvbScanFilter(DvbScan *scan_) : scan(scan_), pid(-1) { } ~DvbScanFilter() { stopFilter(); } bool isActive() const { return (pid != -1); } bool startFilter(int pid_, DvbScan::FilterType type_); void stopFilter(); private: bool checkMultipleSection(const DvbStandardSection §ion); void processSection(const char *data, int size); void timerEvent(QTimerEvent *); DvbScan *scan; int pid; DvbScan::FilterType type; QBitArray multipleSections; int timerId; }; bool DvbScanFilter::startFilter(int pid_, DvbScan::FilterType type_) { Q_ASSERT(pid == -1); pid = pid_; type = type_; multipleSections.clear(); if (!scan->device->addSectionFilter(pid, this)) { pid = -1; return false; } // FIXME check timings if (type != DvbScan::NitFilter) { timerId = startTimer(5000); } else { timerId = startTimer(20000); } return true; } void DvbScanFilter::stopFilter() { if (pid != -1) { killTimer(timerId); scan->device->removeSectionFilter(pid, this); pid = -1; } } bool DvbScanFilter::checkMultipleSection(const DvbStandardSection §ion) { int sectionCount = section.lastSectionNumber() + 1; if (section.sectionNumber() >= sectionCount) { kDebug() << "current > last"; sectionCount = section.sectionNumber() + 1; } if (multipleSections.isEmpty()) { multipleSections.resize(sectionCount); } else { if (multipleSections.size() != sectionCount) { kDebug() << "inconsistent number of sections"; if (multipleSections.size() < sectionCount) { multipleSections.resize(sectionCount); } } } if (multipleSections.testBit(section.sectionNumber())) { return false; } multipleSections.setBit(section.sectionNumber()); return true; } void DvbScanFilter::processSection(const char *data, int size) { switch (type) { case DvbScan::PatFilter: { DvbPatSection patSection(data, size); if (!patSection.isValid() || (patSection.tableId() != 0x0)) { return; } if (!checkMultipleSection(patSection)) { // already read this part return; } scan->processPat(patSection); break; } case DvbScan::PmtFilter: { DvbPmtSection pmtSection(data, size); if (!pmtSection.isValid() || (pmtSection.tableId() != 0x2)) { return; } if (!checkMultipleSection(pmtSection)) { // already read this part return; } scan->processPmt(pmtSection, pid); break; } case DvbScan::SdtFilter: { DvbSdtSection sdtSection(data, size); if (!sdtSection.isValid() || (sdtSection.tableId() != 0x42)) { // there are also other tables in the SDT return; } if (!checkMultipleSection(sdtSection)) { // already read this part return; } scan->processSdt(sdtSection); break; } case DvbScan::VctFilter: { AtscVctSection vctSection(data, size); if (!vctSection.isValid() || ((vctSection.tableId() != 0xc8) && (vctSection.tableId() != 0xc9))) { // there are also other tables in the VCT return; } if (!checkMultipleSection(vctSection)) { // already read this part return; } scan->processVct(vctSection); break; } case DvbScan::NitFilter: { DvbNitSection nitSection(data, size); if (!nitSection.isValid() || (nitSection.tableId() != 0x40)) { // we are only interested in the current network return; } if (!checkMultipleSection(nitSection)) { // already read this part return; } scan->processNit(nitSection); break; } } if (multipleSections.count(false) == 0) { scan->filterFinished(this); } } void DvbScanFilter::timerEvent(QTimerEvent *) { kWarning() << "timeout while reading section; type =" << type << "pid =" << pid; scan->filterFinished(this); } DvbScan::DvbScan(DvbDevice *device_, const QString &source_, const DvbTransponder &transponder_) : device(device_), source(source_), transponder(transponder_), isLive(true), isAuto(false), transponderIndex(-1), state(ScanPat), patIndex(0), activeFilters(0) { } DvbScan::DvbScan(DvbDevice *device_, const QString &source_, const QList &transponders_) : device(device_), source(source_), isLive(false), isAuto(false), transponders(transponders_), transponderIndex(0), state(ScanTune), patIndex(0), activeFilters(0) { } DvbScan::DvbScan(DvbDevice *device_, const QString &source_, const QString &autoScanSource) : device(device_), source(source_), isLive(false), isAuto(true), transponderIndex(0), state(ScanTune), patIndex(0), activeFilters(0) { if ((autoScanSource == "AUTO-Normal") || (autoScanSource == "AUTO-Offsets")) { bool offsets = (autoScanSource == "AUTO-Offsets"); for (int frequency = 177500000; frequency <= 226500000; frequency += 7000000) { DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth7MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } for (int frequency = 474000000; frequency <= 858000000; frequency += 8000000) { for (int i = 0; i < 3; ++i) { if ((i != 0) && (!offsets)) { break; } int offset = 0; if (i == 1) { offset = -167000; } else if (i == 2) { offset = 167000; } DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency + offset; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth8MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } } else if (autoScanSource == "AUTO-Australia") { for (int frequency = 177500000; frequency <= 226500000; frequency += 7000000) { for (int i = 0; i < 2; ++i) { int offset = 0; if (i == 1) { offset = 125000; } DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency + offset; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth7MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } for (int frequency = 529500000; frequency <= 816500000; frequency += 7000000) { for (int i = 0; i < 2; ++i) { int offset = 0; if (i == 1) { offset = 125000; } DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency + offset; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth7MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } } else if (autoScanSource == "AUTO-Italy") { static const int italyVhf[] = { 177500000, 186000000, 194500000, 203500000, 212500000, 219500000, 226500000 }; for (unsigned i = 0; i < (sizeof(italyVhf) / sizeof(italyVhf[0])); ++i) { for (int j = 0; j < 2; ++j) { DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = italyVhf[i]; dvbTTransponder->bandwidth = ((j == 0) ? DvbTTransponder::Bandwidth7MHz : DvbTTransponder::Bandwidth8MHz); dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } for (int frequency = 474000000; frequency <= 858000000; frequency += 8000000) { DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth8MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } else if (autoScanSource == "AUTO-Taiwan") { for (int frequency = 527000000; frequency <= 599000000; frequency += 6000000) { DvbTransponder transponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = transponder.as(); dvbTTransponder->frequency = frequency; dvbTTransponder->bandwidth = DvbTTransponder::Bandwidth6MHz; dvbTTransponder->modulation = DvbTTransponder::ModulationAuto; dvbTTransponder->fecRateHigh = DvbTTransponder::FecAuto; dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; dvbTTransponder->transmissionMode = DvbTTransponder::TransmissionModeAuto; dvbTTransponder->guardInterval = DvbTTransponder::GuardIntervalAuto; dvbTTransponder->hierarchy = DvbTTransponder::HierarchyNone; transponders.append(transponder); } } } DvbScan::~DvbScan() { qDeleteAll(filters); } void DvbScan::start() { connect(device, SIGNAL(stateChanged()), this, SLOT(deviceStateChanged())); updateState(); } void DvbScan::deviceStateChanged() { if (device->getDeviceState() == DvbDevice::DeviceReleased) { emit scanFinished(); return; } if (state == ScanTuning) { updateState(); } } bool DvbScan::startFilter(int pid, FilterType type) { if (activeFilters != filters.size()) { foreach (DvbScanFilter *filter, filters) { if (!filter->isActive()) { if (!filter->startFilter(pid, type)) { return false; } ++activeFilters; return true; } } Q_ASSERT(false); } else if (activeFilters < 10) { DvbScanFilter *filter = new DvbScanFilter(this); if (!filter->startFilter(pid, type)) { delete filter; return false; } filters.append(filter); ++activeFilters; return true; } return false; } void DvbScan::updateState() { while (true) { switch (state) { case ScanPat: { if (!startFilter(0x0, PatFilter)) { return; } snr = device->getSnr(); state = ScanNit; } // fall through case ScanNit: { if (!isLive && !isAuto && (transponder.getTransmissionType() != DvbTransponderBase::Atsc)) { if (!startFilter(0x10, NitFilter)) { return; } } state = ScanSdt; } // fall through case ScanSdt: { if (transponder.getTransmissionType() != DvbTransponderBase::Atsc) { if (!startFilter(0x11, SdtFilter)) { return; } } else { if (!startFilter(0x1ffb, VctFilter)) { return; } } state = ScanPmt; } // fall through case ScanPmt: { while (patIndex < patEntries.size()) { if (!startFilter(patEntries.at(patIndex).pid, PmtFilter)) { return; } ++patIndex; } if (activeFilters != 0) { return; } for (int i = 0; i < channels.size(); ++i) { DvbPreviewChannel &channel = channels[i]; foreach (const DvbSdtEntry &sdtEntry, sdtEntries) { if (channel.serviceId == sdtEntry.serviceId) { channel.name = sdtEntry.name; channel.networkId = sdtEntry.networkId; channel.isScrambled = sdtEntry.scrambled; channel.provider = sdtEntry.provider; break; } } if (channel.name.isEmpty()) { channel.name = QString("#0 %1:%2"). arg(channel.transportStreamId). arg(channel.serviceId); } } if (!channels.isEmpty()) { emit foundChannels(channels); } if (isLive) { emit scanFinished(); return; } patEntries.clear(); patIndex = 0; sdtEntries.clear(); channels.clear(); state = ScanTune; } // fall through case ScanTune: { if (transponders.size() > 0) { emit scanProgress((100 * transponderIndex) / transponders.size()); } if (transponderIndex >= transponders.size()) { emit scanFinished(); return; } transponder = transponders.at(transponderIndex); ++transponderIndex; state = ScanTuning; if (!isAuto) { device->tune(transponder); } else { device->autoTune(transponder); } return; } case ScanTuning: { switch (device->getDeviceState()) { case DvbDevice::DeviceIdle: state = ScanTune; break; case DvbDevice::DeviceTuned: if (isAuto) { transponders[transponderIndex - 1] = device->getAutoTransponder(); } state = ScanPat; break; default: return; } break; } } } } void DvbScan::processPat(const DvbPatSection §ion) { transportStreamId = section.transportStreamId(); for (DvbPatSectionEntry entry = section.entries(); entry.isValid(); entry.advance()) { if (entry.programNumber() != 0x0) { // skip 0x0 which has a special meaning patEntries.append(DvbPatEntry(entry.programNumber(), entry.pid())); } } } void DvbScan::processPmt(const DvbPmtSection §ion, int pid) { DvbPreviewChannel channel; DvbPmtParser parser(section); channel.hasVideo = (parser.videoPid >= 0); if (!parser.audioPids.isEmpty()) { channel.audioPid = parser.audioPids.at(0).first; } if (channel.hasVideo || (channel.audioPid >= 0)) { channel.source = source; channel.transponder = transponder; channel.transportStreamId = transportStreamId; channel.pmtPid = pid; channel.pmtSectionData = section.toByteArray(); channel.serviceId = section.programNumber(); channel.snr = snr; channels.append(channel); } } void DvbScan::processSdt(const DvbSdtSection §ion) { for (DvbSdtSectionEntry entry = section.entries(); entry.isValid(); entry.advance()) { DvbSdtEntry sdtEntry(entry.serviceId(), section.originalNetworkId(), entry.isScrambled()); for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { if (descriptor.descriptorTag() != 0x48) { continue; } DvbServiceDescriptor serviceDescriptor(descriptor); if (!serviceDescriptor.isValid()) { continue; } sdtEntry.name = serviceDescriptor.serviceName(); sdtEntry.provider = serviceDescriptor.providerName(); break; } sdtEntries.append(sdtEntry); } } void DvbScan::processVct(const AtscVctSection §ion) { int i = section.entryCount(); for (AtscVctSectionEntry entry = section.entries(); (i > 0) && (entry.isValid()); --i, entry.advance()) { QString majorminor = QString("%1-%2 "). arg(entry.majorNumber(), 3, 10, QLatin1Char('0')).arg(entry.minorNumber()); DvbSdtEntry sdtEntry(entry.programNumber(), entry.sourceId(), entry.isScrambled()); // Each VCT section has it's own list of descriptors // See A/65C table 6.25a for the list of descriptors for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { if (descriptor.descriptorTag() != 0xa0) { continue; } // Extended Channel Name Descriptor AtscChannelNameDescriptor nameDescriptor(descriptor); if (!nameDescriptor.isValid()) { continue; } sdtEntry.name = majorminor + nameDescriptor.name(); } if (sdtEntry.name.isEmpty()) { // Extended Channel name not available, fall back // to the short name QChar shortName[] = { entry.shortName1(), entry.shortName2(), entry.shortName3(), entry.shortName4(), entry.shortName5(), entry.shortName6(), entry.shortName7(), 0 }; int nameLength = 0; while (shortName[nameLength] != 0) { ++nameLength; } sdtEntry.name = majorminor + QString(shortName, nameLength); } sdtEntries.append(sdtEntry); } } void DvbScan::processNit(const DvbNitSection §ion) { for (DvbNitSectionEntry entry = section.entries(); entry.isValid(); entry.advance()) { for (DvbDescriptor descriptor = entry.descriptors(); descriptor.isValid(); descriptor.advance()) { processNitDescriptor(descriptor); } } } static DvbCTransponder::Modulation extractDvbCModulation(const DvbCableDescriptor &descriptor) { switch (descriptor.modulation()) { case 1: return DvbCTransponder::Qam16; case 2: return DvbCTransponder::Qam32; case 3: return DvbCTransponder::Qam64; case 4: return DvbCTransponder::Qam128; case 5: return DvbCTransponder::Qam256; default: return DvbCTransponder::ModulationAuto; } } static DvbCTransponder::FecRate extractDvbCFecRate(const DvbCableDescriptor &descriptor) { switch (descriptor.fecRate()) { case 1: return DvbTransponderBase::Fec1_2; case 2: return DvbTransponderBase::Fec2_3; case 3: return DvbTransponderBase::Fec3_4; case 4: return DvbTransponderBase::Fec5_6; case 5: return DvbTransponderBase::Fec7_8; case 6: return DvbTransponderBase::Fec8_9; case 7: return DvbTransponderBase::Fec3_5; case 8: return DvbTransponderBase::Fec4_5; case 9: return DvbTransponderBase::Fec9_10; case 15: return DvbTransponderBase::FecNone; default: return DvbTransponderBase::FecAuto; } } static DvbSTransponder::Polarization extractDvbSPolarization( const DvbSatelliteDescriptor &descriptor) { switch (descriptor.polarization()) { case 0: return DvbSTransponder::Horizontal; case 1: return DvbSTransponder::Vertical; case 2: return DvbSTransponder::CircularLeft; default: return DvbSTransponder::CircularRight; } } static DvbSTransponder::FecRate extractDvbSFecRate(const DvbSatelliteDescriptor &descriptor) { switch (descriptor.fecRate()) { case 1: return DvbTransponderBase::Fec1_2; case 2: return DvbTransponderBase::Fec2_3; case 3: return DvbTransponderBase::Fec3_4; case 4: return DvbTransponderBase::Fec5_6; case 5: return DvbTransponderBase::Fec7_8; case 6: return DvbTransponderBase::Fec8_9; case 7: return DvbTransponderBase::Fec3_5; case 8: return DvbTransponderBase::Fec4_5; case 9: return DvbTransponderBase::Fec9_10; default: return DvbTransponderBase::FecAuto; } } static DvbS2Transponder::Modulation extractDvbS2Modulation( const DvbSatelliteDescriptor &descriptor) { switch (descriptor.modulation()) { case 1: return DvbS2Transponder::Qpsk; case 2: return DvbS2Transponder::Psk8; default: return DvbS2Transponder::ModulationAuto; } } static DvbS2Transponder::RollOff extractDvbS2RollOff(const DvbSatelliteDescriptor &descriptor) { switch (descriptor.rollOff()) { case 0: return DvbS2Transponder::RollOff35; case 1: return DvbS2Transponder::RollOff25; case 2: return DvbS2Transponder::RollOff20; default: return DvbS2Transponder::RollOffAuto; } } static DvbTTransponder::Bandwidth extractDvbTBandwidth(const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.bandwidth()) { case 0: return DvbTTransponder::Bandwidth8MHz; case 1: return DvbTTransponder::Bandwidth7MHz; case 2: return DvbTTransponder::Bandwidth6MHz; default: // this includes 5 MHz return DvbTTransponder::BandwidthAuto; } } static DvbTTransponder::Modulation extractDvbTModulation( const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.constellation()) { case 0: return DvbTTransponder::Qpsk; case 1: return DvbTTransponder::Qam16; case 2: return DvbTTransponder::Qam64; default: return DvbTTransponder::ModulationAuto; } } static DvbTTransponder::FecRate extractDvbTFecRateHigh(const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.fecRateHigh()) { case 0: return DvbTTransponder::Fec1_2; case 1: return DvbTTransponder::Fec2_3; case 2: return DvbTTransponder::Fec3_4; case 3: return DvbTTransponder::Fec5_6; case 4: return DvbTTransponder::Fec7_8; default: return DvbTTransponder::FecAuto; } } static DvbTTransponder::FecRate extractDvbTFecRateLow(const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.fecRateLow()) { case 0: return DvbTTransponder::Fec1_2; case 1: return DvbTTransponder::Fec2_3; case 2: return DvbTTransponder::Fec3_4; case 3: return DvbTTransponder::Fec5_6; case 4: return DvbTTransponder::Fec7_8; default: return DvbTTransponder::FecAuto; } } static DvbTTransponder::TransmissionMode extractDvbTTransmissionMode( const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.transmissionMode()) { case 0: return DvbTTransponder::TransmissionMode2k; case 1: return DvbTTransponder::TransmissionMode8k; case 2: return DvbTTransponder::TransmissionMode4k; default: return DvbTTransponder::TransmissionModeAuto; } } static DvbTTransponder::GuardInterval extractDvbTGuardInterval( const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.guardInterval()) { case 0: return DvbTTransponder::GuardInterval1_32; case 1: return DvbTTransponder::GuardInterval1_16; case 2: return DvbTTransponder::GuardInterval1_8; default: return DvbTTransponder::GuardInterval1_4; } } static DvbTTransponder::Hierarchy extractDvbTHierarchy(const DvbTerrestrialDescriptor &descriptor) { switch (descriptor.hierarchy() & 0x3) { case 0: return DvbTTransponder::HierarchyNone; case 1: return DvbTTransponder::Hierarchy1; case 2: return DvbTTransponder::Hierarchy2; default: return DvbTTransponder::Hierarchy4; } } void DvbScan::processNitDescriptor(const DvbDescriptor &descriptor) { DvbTransponder newTransponder; switch (transponder.getTransmissionType()) { case DvbTransponderBase::Invalid: break; case DvbTransponderBase::DvbC: { if (descriptor.descriptorTag() != 0x44) { break; } DvbCableDescriptor cableDescriptor(descriptor); if (!cableDescriptor.isValid()) { break; } newTransponder = DvbTransponder(DvbTransponderBase::DvbC); DvbCTransponder *dvbCTransponder = newTransponder.as(); dvbCTransponder->frequency = DvbDescriptor::bcdToInt(cableDescriptor.frequency(), 100); dvbCTransponder->symbolRate = DvbDescriptor::bcdToInt(cableDescriptor.symbolRate(), 100); dvbCTransponder->modulation = extractDvbCModulation(cableDescriptor); dvbCTransponder->fecRate = extractDvbCFecRate(cableDescriptor); break; } case DvbTransponderBase::DvbS: case DvbTransponderBase::DvbS2: { if (descriptor.descriptorTag() != 0x43) { break; } DvbSatelliteDescriptor satelliteDescriptor(descriptor); if (!satelliteDescriptor.isValid()) { break; } DvbSTransponder *dvbSTransponder; if (!satelliteDescriptor.isDvbS2()) { newTransponder = DvbTransponder(DvbTransponderBase::DvbS); dvbSTransponder = newTransponder.as(); } else { if ((device->getTransmissionTypes() & DvbDevice::DvbS2) == 0) { break; } newTransponder = DvbTransponder(DvbTransponderBase::DvbS2); DvbS2Transponder *dvbS2Transponder = newTransponder.as(); dvbS2Transponder->modulation = extractDvbS2Modulation(satelliteDescriptor); dvbS2Transponder->rollOff = extractDvbS2RollOff(satelliteDescriptor); dvbSTransponder = dvbS2Transponder; } dvbSTransponder->frequency = DvbDescriptor::bcdToInt(satelliteDescriptor.frequency(), 10); dvbSTransponder->polarization = extractDvbSPolarization(satelliteDescriptor); dvbSTransponder->symbolRate = DvbDescriptor::bcdToInt(satelliteDescriptor.symbolRate(), 100); dvbSTransponder->fecRate = extractDvbSFecRate(satelliteDescriptor); break; } case DvbTransponderBase::DvbT: { if (descriptor.descriptorTag() != 0x5a) { break; } DvbTerrestrialDescriptor terrestrialDescriptor(descriptor); if (!terrestrialDescriptor.isValid()) { break; } newTransponder = DvbTransponder(DvbTransponderBase::DvbT); DvbTTransponder *dvbTTransponder = newTransponder.as(); dvbTTransponder->frequency = terrestrialDescriptor.frequency() * 10; dvbTTransponder->bandwidth = extractDvbTBandwidth(terrestrialDescriptor); dvbTTransponder->modulation = extractDvbTModulation(terrestrialDescriptor); dvbTTransponder->fecRateHigh = extractDvbTFecRateHigh(terrestrialDescriptor); dvbTTransponder->fecRateLow = extractDvbTFecRateLow(terrestrialDescriptor); dvbTTransponder->transmissionMode = extractDvbTTransmissionMode(terrestrialDescriptor); dvbTTransponder->guardInterval = extractDvbTGuardInterval(terrestrialDescriptor); dvbTTransponder->hierarchy = extractDvbTHierarchy(terrestrialDescriptor); if (dvbTTransponder->hierarchy == DvbTTransponder::HierarchyNone) { dvbTTransponder->fecRateLow = DvbTTransponder::FecNone; } break; } case DvbTransponderBase::Atsc: break; } if (newTransponder.isValid()) { bool duplicate = false; foreach (const DvbTransponder &existingTransponder, transponders) { if (existingTransponder.corresponds(newTransponder)) { duplicate = true; break; } } if (!duplicate) { transponders.append(newTransponder); } } } void DvbScan::filterFinished(DvbScanFilter *filter) { filter->stopFilter(); --activeFilters; updateState(); } kaffeine-1.2.2/src/config-kaffeine.h.cmake0000644000175000017500000000054011552636277017761 0ustar lxuserlxuser/* config-kaffeine.h - generated by cmake from config-kaffeine.h.cmake */ #ifndef CONFIG_KAFFEINE_H #define CONFIG_KAFFEINE_H #define KAFFEINE_BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" #define KAFFEINE_DATA_INSTALL_DIR "${DATA_INSTALL_DIR}" #define KAFFEINE_LIB_INSTALL_DIR "${LIB_INSTALL_DIR}" #define HAVE_DVB @HAVE_DVB@ #endif /* CONFIG_KAFFEINE_H */ kaffeine-1.2.2/src/CMakeLists.txt0000644000175000017500000000310611552636277016257 0ustar lxuserlxuserset(kaffeine_SRCS backend-xine/xinecommands.cpp backend-xine/xinemediawidget.cpp playlist/playlistmodel.cpp playlist/playlisttab.cpp datetimeedit.cpp dbusobjects.cpp ensurenopendingoperation.cpp main.cpp mainwindow.cpp mediawidget.cpp osdwidget.cpp sqlhelper.cpp sqlinterface.cpp) if(HAVE_DVB) set(kaffeinedvb_SRCS dvb/dvbcam_linux.cpp dvb/dvbchannel.cpp dvb/dvbchanneldialog.cpp dvb/dvbconfigdialog.cpp dvb/dvbdevice.cpp dvb/dvbdevice_linux.cpp dvb/dvbepg.cpp dvb/dvbepgdialog.cpp dvb/dvbliveview.cpp dvb/dvbmanager.cpp dvb/dvbrecording.cpp dvb/dvbrecordingdialog.cpp dvb/dvbscan.cpp dvb/dvbscandialog.cpp dvb/dvbsi.cpp dvb/dvbtab.cpp dvb/dvbtransponder.cpp) endif(HAVE_DVB) set(kaffeinexbu_SRCS backend-xine/xineapplication.cpp backend-xine/xinecommands.cpp) configure_file(config-kaffeine.h.cmake ${CMAKE_BINARY_DIR}/config-kaffeine.h) kde4_add_executable(kaffeine ${kaffeinedvb_SRCS} ${kaffeine_SRCS}) target_link_libraries(kaffeine ${QT_QTSQL_LIBRARY} ${KDE4_KFILE_LIBS} ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS} ${X11_Xscreensaver_LIB}) install(TARGETS kaffeine ${INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES scanfile.dvb DESTINATION ${DATA_INSTALL_DIR}/kaffeine) install(PROGRAMS kaffeine.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) kde4_add_executable(kaffeine-xbu ${kaffeinexbu_SRCS}) target_link_libraries(kaffeine-xbu ${X11_X11_LIB} ${XINE_LIBRARY} ${KDE4_KDEUI_LIBS}) install(TARGETS kaffeine-xbu ${INSTALL_TARGETS_DEFAULT_ARGS}) kaffeine-1.2.2/src/main.cpp0000644000175000017500000000425211552636277015152 0ustar lxuserlxuser/* * main.cpp * * Copyright (C) 2007-2009 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include "mainwindow.h" #include "sqlhelper.h" class KaffeineApplication : public KUniqueApplication { public: KaffeineApplication(); ~KaffeineApplication(); private: int newInstance(); QPointer mainWindow; }; KaffeineApplication::KaffeineApplication() { if (!SqlHelper::createInstance()) { return; } mainWindow = new MainWindow(); } KaffeineApplication::~KaffeineApplication() { // unlike qt, kde sets Qt::WA_DeleteOnClose and needs it to work properly delete mainWindow; // QPointer; needed if kaffeine is closed via QCoreApplication::quit() } int KaffeineApplication::newInstance() { if (mainWindow != NULL) { mainWindow->parseArgs(); } return KUniqueApplication::newInstance(); } int main(int argc, char *argv[]) { KAboutData aboutData("kaffeine", 0, ki18n("Kaffeine"), "1.2.2", ki18n("A media player for KDE with digital TV support."), KAboutData::License_GPL_V2, ki18n("(C) 2007-2010 The Kaffeine Authors"), KLocalizedString(), "http://kaffeine.kde.org"); aboutData.addAuthor(ki18n("Christoph Pfister"), ki18n("Maintainer"), "christophpfister@gmail.com"); KCmdLineArgs::init(argc, argv, &aboutData); KCmdLineArgs::addCmdLineOptions(MainWindow::cmdLineOptions()); KCmdLineArgs::addTempFileOption(); KaffeineApplication app; return app.exec(); } kaffeine-1.2.2/src/ensurenopendingoperation.h0000644000175000017500000000246411552636277021022 0ustar lxuserlxuser/* * ensurenopendingoperation.h * * Copyright (C) 2011 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef ENSURENOPENDINGOPERATION_H #define ENSURENOPENDINGOPERATION_H class EnsureNoPendingOperation { public: explicit EnsureNoPendingOperation(bool &hasPendingOperation_) : hasPendingOperation(hasPendingOperation_) { if (hasPendingOperation) { printFatalErrorMessage(); } hasPendingOperation = true; } ~EnsureNoPendingOperation() { hasPendingOperation = false; } private: void printFatalErrorMessage(); bool &hasPendingOperation; }; #endif /* ENSURENOPENDINGOPERATION_H */ kaffeine-1.2.2/src/sqlinterface.h0000644000175000017500000000540511552636277016354 0ustar lxuserlxuser/* * sqlinterface.h * * Copyright (C) 2009-2010 Christoph Pfister * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SQLINTERFACE_H #define SQLINTERFACE_H #include #include #include class SqlHelper; class SqlKey { public: explicit SqlKey(quint32 key = 0) : sqlKey(key) { } ~SqlKey() { } bool isSqlKeyValid() const { return (sqlKey != 0); } void setSqlKey(const SqlKey &other) { sqlKey = other.sqlKey; } bool operator==(const SqlKey &other) const { return (sqlKey == other.sqlKey); } bool operator!=(const SqlKey &other) const { return (sqlKey != other.sqlKey); } bool operator<(const SqlKey &other) const { return (sqlKey < other.sqlKey); } quint32 sqlKey; }; Q_DECLARE_TYPEINFO(SqlKey, Q_MOVABLE_TYPE); class SqlInterface { public: SqlInterface(); virtual ~SqlInterface(); void sqlInit(const QString &tableName, const QStringList &columnNames); void sqlInsert(SqlKey key); void sqlUpdate(SqlKey key); void sqlRemove(SqlKey key); void sqlFlush(); /* for SqlHelper */ void sqlSubmit(); template SqlKey sqlFindFreeKey(const Container &container) const { SqlKey sqlKey(1); if (!container.isEmpty()) { sqlKey = SqlKey((container.constEnd() - 1).key().sqlKey + 1); while (container.contains(sqlKey) || !sqlKey.isSqlKeyValid()) { sqlKey = SqlKey(qrand()); } } return sqlKey; } protected: virtual void bindToSqlQuery(SqlKey sqlKey, QSqlQuery &query, int index) const = 0; virtual bool insertFromSqlQuery(SqlKey sqlKey, const QSqlQuery &query, int index) = 0; private: enum PendingStatement { Nothing, RemoveAndInsert, Insert, Update, Remove }; void requestSubmission(); QExplicitlySharedDataPointer sqlHelper; QMap pendingStatements; bool createTable; bool hasPendingStatements; int sqlColumnCount; QString createStatement; QString insertStatement; QString updateStatement; QString deleteStatement; QSqlQuery insertQuery; QSqlQuery updateQuery; QSqlQuery deleteQuery; }; #endif /* SQLINTERFACE_H */ kaffeine-1.2.2/profiles/0000755000175000017500000000000011552636277014553 5ustar lxuserlxuserkaffeine-1.2.2/profiles/kaffeine.profile.xml0000644000175000017500000001043711552636277020511 0ustar lxuserlxuser Kaffeine Pascal Pollet [pascal@bongosoft.de] Get Capabilities returns the players capabilities. Decrease Volume Decrease the volume. Increase Volume Increase the volume. Get Volume Gets the actual volume. Set Volume Sets the audio volume. a number between 0 and 100. Next Skips to the start of the next track. Previous Skips to the start of the previous track. Get Metadata Gets the metadata of the current track. Start Playing Starts playback of the current track. Stop Playing Stops current playback, if any. Pause Playing Toggles between playback and pause. Get Position Gets the current playback position (in milliseconds). Set Position Sets the playback position (in milliseconds). time from beginning of track in milliseconds. Repeat Sets the repeat playback mode for the current track. true or false. Toggle Fullscreen Toggles fullscreen. Toggle Muted Toggles muting of sound. Digit Pressed Enter a channel digit. A digit. Play Channel Plays the channel with given name or number. Can be a channel name or number. Play Last Channel Recall last DVB channel. Toggle Instant Record Toggles the instant recording of the channel actually being played back. Toggle OSD Toggles OSD. Quit Quits application. kaffeine-1.2.2/profiles/CMakeLists.txt0000644000175000017500000000017411552636277017315 0ustar lxuserlxuserset(kdelirc_profiles kaffeine.profile.xml) install(FILES ${kdelirc_profiles} DESTINATION ${DATA_INSTALL_DIR}/profiles) kaffeine-1.2.2/README0000644000175000017500000000151111552636277013606 0ustar lxuserlxuser------------------- Installing Kaffeine ------------------- The following development headers are needed (recommended versions): * Qt >= 4.6 * KDE >= 4.4 * xine-lib * libXss * libX11 For the translations you need: * gettext Create an empty build directory and do the following steps: # cmake # make # make install Useful options include: * -DCMAKE_BUILD_TYPE= (Debug or Release) * -DCMAKE_INSTALL_PREFIX= (installation prefix for Kaffeine, e.g. /usr) For further information look for generic KDE4 / cmake instructions. -------- Homepage -------- http://kaffeine.kde.org ------- Authors ------- Maintainer: Christoph Pfister Former maintainers: Christophe Thommeret Jürgen Kofler Thanks to various contributors, translators, testers ... kaffeine-1.2.2/include/0000755000175000017500000000000011552636277014353 5ustar lxuserlxuserkaffeine-1.2.2/include/frontend.h0000644000175000017500000002507411552636277016353 0ustar lxuserlxuser/* * frontend.h * * Copyright (C) 2000 Marcus Metzler * Ralph Metzler * Holger Waechtler * Andre Draszik * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBFRONTEND_H_ #define _DVBFRONTEND_H_ #include typedef enum fe_type { FE_QPSK, FE_QAM, FE_OFDM, FE_ATSC } fe_type_t; typedef enum fe_caps { FE_IS_STUPID = 0, FE_CAN_INVERSION_AUTO = 0x1, FE_CAN_FEC_1_2 = 0x2, FE_CAN_FEC_2_3 = 0x4, FE_CAN_FEC_3_4 = 0x8, FE_CAN_FEC_4_5 = 0x10, FE_CAN_FEC_5_6 = 0x20, FE_CAN_FEC_6_7 = 0x40, FE_CAN_FEC_7_8 = 0x80, FE_CAN_FEC_8_9 = 0x100, FE_CAN_FEC_AUTO = 0x200, FE_CAN_QPSK = 0x400, FE_CAN_QAM_16 = 0x800, FE_CAN_QAM_32 = 0x1000, FE_CAN_QAM_64 = 0x2000, FE_CAN_QAM_128 = 0x4000, FE_CAN_QAM_256 = 0x8000, FE_CAN_QAM_AUTO = 0x10000, FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, FE_CAN_BANDWIDTH_AUTO = 0x40000, FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, FE_CAN_HIERARCHY_AUTO = 0x100000, FE_CAN_8VSB = 0x200000, FE_CAN_16VSB = 0x400000, FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */ } fe_caps_t; struct dvb_frontend_info { char name[128]; fe_type_t type; __u32 frequency_min; __u32 frequency_max; __u32 frequency_stepsize; __u32 frequency_tolerance; __u32 symbol_rate_min; __u32 symbol_rate_max; __u32 symbol_rate_tolerance; /* ppm */ __u32 notifier_delay; /* DEPRECATED */ fe_caps_t caps; }; /** * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for * the meaning of this struct... */ struct dvb_diseqc_master_cmd { __u8 msg [6]; /* { framing, address, command, data [3] } */ __u8 msg_len; /* valid values are 3...6 */ }; struct dvb_diseqc_slave_reply { __u8 msg [4]; /* { framing, data [3] } */ __u8 msg_len; /* valid values are 0...4, 0 means no msg */ int timeout; /* return from ioctl after timeout ms with */ }; /* errorcode when no message was received */ typedef enum fe_sec_voltage { SEC_VOLTAGE_13, SEC_VOLTAGE_18, SEC_VOLTAGE_OFF } fe_sec_voltage_t; typedef enum fe_sec_tone_mode { SEC_TONE_ON, SEC_TONE_OFF } fe_sec_tone_mode_t; typedef enum fe_sec_mini_cmd { SEC_MINI_A, SEC_MINI_B } fe_sec_mini_cmd_t; typedef enum fe_status { FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ FE_HAS_CARRIER = 0x02, /* found a DVB signal */ FE_HAS_VITERBI = 0x04, /* FEC is stable */ FE_HAS_SYNC = 0x08, /* found sync bytes */ FE_HAS_LOCK = 0x10, /* everything's working... */ FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ FE_REINIT = 0x40 /* frontend was reinitialized, */ } fe_status_t; /* application is recommended to reset */ /* DiSEqC, tone and parameters */ typedef enum fe_spectral_inversion { INVERSION_OFF, INVERSION_ON, INVERSION_AUTO } fe_spectral_inversion_t; typedef enum fe_code_rate { FEC_NONE = 0, FEC_1_2, FEC_2_3, FEC_3_4, FEC_4_5, FEC_5_6, FEC_6_7, FEC_7_8, FEC_8_9, FEC_AUTO, FEC_3_5, FEC_9_10 } fe_code_rate_t; typedef enum fe_modulation { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO, VSB_8, VSB_16, PSK_8, APSK_16, APSK_32, DQPSK } fe_modulation_t; typedef enum fe_transmit_mode { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_4K } fe_transmit_mode_t; typedef enum fe_bandwidth { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, BANDWIDTH_AUTO } fe_bandwidth_t; typedef enum fe_guard_interval { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, GUARD_INTERVAL_AUTO } fe_guard_interval_t; typedef enum fe_hierarchy { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO } fe_hierarchy_t; struct dvb_qpsk_parameters { __u32 symbol_rate; /* symbol rate in Symbols per second */ fe_code_rate_t fec_inner; /* forward error correction (see above) */ }; struct dvb_qam_parameters { __u32 symbol_rate; /* symbol rate in Symbols per second */ fe_code_rate_t fec_inner; /* forward error correction (see above) */ fe_modulation_t modulation; /* modulation type (see above) */ }; struct dvb_vsb_parameters { fe_modulation_t modulation; /* modulation type (see above) */ }; struct dvb_ofdm_parameters { fe_bandwidth_t bandwidth; fe_code_rate_t code_rate_HP; /* high priority stream code rate */ fe_code_rate_t code_rate_LP; /* low priority stream code rate */ fe_modulation_t constellation; /* modulation type (see above) */ fe_transmit_mode_t transmission_mode; fe_guard_interval_t guard_interval; fe_hierarchy_t hierarchy_information; }; struct dvb_frontend_parameters { __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */ /* intermediate frequency in kHz for QPSK */ fe_spectral_inversion_t inversion; union { struct dvb_qpsk_parameters qpsk; struct dvb_qam_parameters qam; struct dvb_ofdm_parameters ofdm; struct dvb_vsb_parameters vsb; } u; }; struct dvb_frontend_event { fe_status_t status; struct dvb_frontend_parameters parameters; }; /* S2API Commands */ #define DTV_UNDEFINED 0 #define DTV_TUNE 1 #define DTV_CLEAR 2 #define DTV_FREQUENCY 3 #define DTV_MODULATION 4 #define DTV_BANDWIDTH_HZ 5 #define DTV_INVERSION 6 #define DTV_DISEQC_MASTER 7 #define DTV_SYMBOL_RATE 8 #define DTV_INNER_FEC 9 #define DTV_VOLTAGE 10 #define DTV_TONE 11 #define DTV_PILOT 12 #define DTV_ROLLOFF 13 #define DTV_DISEQC_SLAVE_REPLY 14 /* Basic enumeration set for querying unlimited capabilities */ #define DTV_FE_CAPABILITY_COUNT 15 #define DTV_FE_CAPABILITY 16 #define DTV_DELIVERY_SYSTEM 17 /* ISDB-T and ISDB-Tsb */ #define DTV_ISDBT_PARTIAL_RECEPTION 18 #define DTV_ISDBT_SOUND_BROADCASTING 19 #define DTV_ISDBT_SB_SUBCHANNEL_ID 20 #define DTV_ISDBT_SB_SEGMENT_IDX 21 #define DTV_ISDBT_SB_SEGMENT_COUNT 22 #define DTV_ISDBT_LAYERA_FEC 23 #define DTV_ISDBT_LAYERA_MODULATION 24 #define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 #define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 #define DTV_ISDBT_LAYERB_FEC 27 #define DTV_ISDBT_LAYERB_MODULATION 28 #define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 #define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 #define DTV_ISDBT_LAYERC_FEC 31 #define DTV_ISDBT_LAYERC_MODULATION 32 #define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 #define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 #define DTV_API_VERSION 35 #define DTV_CODE_RATE_HP 36 #define DTV_CODE_RATE_LP 37 #define DTV_GUARD_INTERVAL 38 #define DTV_TRANSMISSION_MODE 39 #define DTV_HIERARCHY 40 #define DTV_ISDBT_LAYER_ENABLED 41 #define DTV_ISDBS_TS_ID 42 #define DTV_MAX_COMMAND DTV_ISDBS_TS_ID typedef enum fe_pilot { PILOT_ON, PILOT_OFF, PILOT_AUTO } fe_pilot_t; typedef enum fe_rolloff { ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ ROLLOFF_20, ROLLOFF_25, ROLLOFF_AUTO } fe_rolloff_t; typedef enum fe_delivery_system { SYS_UNDEFINED, SYS_DVBC_ANNEX_AC, SYS_DVBC_ANNEX_B, SYS_DVBT, SYS_DSS, SYS_DVBS, SYS_DVBS2, SYS_DVBH, SYS_ISDBT, SYS_ISDBS, SYS_ISDBC, SYS_ATSC, SYS_ATSCMH, SYS_DMBTH, SYS_CMMB, SYS_DAB } fe_delivery_system_t; struct dtv_cmds_h { char *name; /* A display name for debugging purposes */ __u32 cmd; /* A unique ID */ /* Flags */ __u32 set:1; /* Either a set or get property */ __u32 buffer:1; /* Does this property use the buffer? */ __u32 reserved:30; /* Align */ }; struct dtv_property { __u32 cmd; __u32 reserved[3]; union { __u32 data; struct { __u8 data[32]; __u32 len; __u32 reserved1[3]; void *reserved2; } buffer; } u; int result; } __attribute__ ((packed)); /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ #define DTV_IOCTL_MAX_MSGS 64 struct dtv_properties { __u32 num; struct dtv_property *props; }; #define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties) #define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties) /** * When set, this flag will disable any zigzagging or other "normal" tuning * behaviour. Additionally, there will be no automatic monitoring of the lock * status, and hence no frontend events will be generated. If a frontend device * is closed, this flag will be automatically turned off when the device is * reopened read-write. */ #define FE_TUNE_MODE_ONESHOT 0x01 #define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) #define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) #define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) #define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) #define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ #define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ #define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ #define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ #define FE_READ_STATUS _IOR('o', 69, fe_status_t) #define FE_READ_BER _IOR('o', 70, __u32) #define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16) #define FE_READ_SNR _IOR('o', 72, __u16) #define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32) #define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) #define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) #define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */ #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */ #endif /*_DVBFRONTEND_H_*/ kaffeine-1.2.2/include/dmx.h0000644000175000017500000000747511552636277015331 0ustar lxuserlxuser/* * dmx.h * * Copyright (C) 2000 Marcus Metzler * & Ralph Metzler * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBDMX_H_ #define _DVBDMX_H_ #include #include #define DMX_FILTER_SIZE 16 typedef enum { DMX_OUT_DECODER, /* Streaming directly to decoder. */ DMX_OUT_TAP, /* Output going to a memory buffer */ /* (to be retrieved via the read command).*/ DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */ /* (to be retrieved by reading from the */ /* logical DVR device). */ DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */ } dmx_output_t; typedef enum { DMX_IN_FRONTEND, /* Input from a front-end device. */ DMX_IN_DVR /* Input from the logical DVR device. */ } dmx_input_t; typedef enum { DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0, DMX_PES_PCR0, DMX_PES_AUDIO1, DMX_PES_VIDEO1, DMX_PES_TELETEXT1, DMX_PES_SUBTITLE1, DMX_PES_PCR1, DMX_PES_AUDIO2, DMX_PES_VIDEO2, DMX_PES_TELETEXT2, DMX_PES_SUBTITLE2, DMX_PES_PCR2, DMX_PES_AUDIO3, DMX_PES_VIDEO3, DMX_PES_TELETEXT3, DMX_PES_SUBTITLE3, DMX_PES_PCR3, DMX_PES_OTHER } dmx_pes_type_t; #define DMX_PES_AUDIO DMX_PES_AUDIO0 #define DMX_PES_VIDEO DMX_PES_VIDEO0 #define DMX_PES_TELETEXT DMX_PES_TELETEXT0 #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 #define DMX_PES_PCR DMX_PES_PCR0 typedef struct dmx_filter { __u8 filter[DMX_FILTER_SIZE]; __u8 mask[DMX_FILTER_SIZE]; __u8 mode[DMX_FILTER_SIZE]; } dmx_filter_t; struct dmx_sct_filter_params { __u16 pid; dmx_filter_t filter; __u32 timeout; __u32 flags; #define DMX_CHECK_CRC 1 #define DMX_ONESHOT 2 #define DMX_IMMEDIATE_START 4 #define DMX_KERNEL_CLIENT 0x8000 }; struct dmx_pes_filter_params { __u16 pid; dmx_input_t input; dmx_output_t output; dmx_pes_type_t pes_type; __u32 flags; }; typedef struct dmx_caps { __u32 caps; int num_decoders; } dmx_caps_t; typedef enum { DMX_SOURCE_FRONT0 = 0, DMX_SOURCE_FRONT1, DMX_SOURCE_FRONT2, DMX_SOURCE_FRONT3, DMX_SOURCE_DVR0 = 16, DMX_SOURCE_DVR1, DMX_SOURCE_DVR2, DMX_SOURCE_DVR3 } dmx_source_t; struct dmx_stc { unsigned int num; /* input : which STC? 0..N */ unsigned int base; /* output: divisor for stc to get 90 kHz clock */ __u64 stc; /* output: stc in 'base'*90 kHz units */ }; #define DMX_START _IO('o', 41) #define DMX_STOP _IO('o', 42) #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params) #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params) #define DMX_SET_BUFFER_SIZE _IO('o', 45) #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) #define DMX_ADD_PID _IOW('o', 51, __u16) #define DMX_REMOVE_PID _IOW('o', 52, __u16) #endif /*_DVBDMX_H_*/ kaffeine-1.2.2/CMakeLists.txt0000644000175000017500000000155711552636277015500 0ustar lxuserlxuserproject(kaffeine) find_package(KDE4 REQUIRED) find_package(X11 REQUIRED) find_package(Xine REQUIRED) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${X11_INCLUDE_DIR} ${X11_Xscreensaver_INCLUDE_PATH} ${XINE_INCLUDE_DIR}) add_definitions(${KDE4_DEFINITIONS}) if(DEFINED QT_VERSION_MAJOR) # qt 4.5.?? has problems with strict iterators add_definitions(-DQT_STRICT_ITERATORS) endif(DEFINED QT_VERSION_MAJOR) check_include_files(${CMAKE_CURRENT_SOURCE_DIR}/include/frontend.h HAVE_DVB) if(NOT HAVE_DVB) MESSAGE(STATUS "Disabled features:\nDVB Digital television support for Linux\n") set(HAVE_DVB 0) endif(NOT HAVE_DVB) add_subdirectory(deviceactions) add_subdirectory(icons) add_subdirectory(profiles) add_subdirectory(src) macro_optional_add_subdirectory(po) if(BUILD_TOOLS) add_subdirectory(tools) endif(BUILD_TOOLS) kaffeine-1.2.2/COPYING-DOCS0000644000175000017500000005466211552636277014526 0ustar lxuserlxuser GNU Free Documentation License Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.