From 9982cd52929f624aaeafcc050fa4f94bf4f53f4e Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Sat, 7 Jul 2007 23:56:09 +0000 Subject: [PATCH] add possibility to set rotor turning speed to fast/slow or set a time epoch for turning fast add some missing and new translations --- lib/dvb/sec.cpp | 38 ++++++++++++++- lib/dvb/sec.h | 4 ++ lib/python/Components/NimManager.py | 67 ++++++++++++++++++-------- lib/python/Screens/Satconfig.py | 35 ++++++++++++-- po/de.po | 93 ++++++++++++++++++++++++++----------- 5 files changed, 185 insertions(+), 52 deletions(-) diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp index 7f45f57..ff3f9bd 100644 --- a/lib/dvb/sec.cpp +++ b/lib/dvb/sec.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include @@ -253,6 +254,30 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite return ret; } +bool need_turn_fast(int turn_speed) +{ + if (turn_speed == eDVBSatelliteRotorParameters::FAST) + return true; + else if (turn_speed != eDVBSatelliteRotorParameters::SLOW) + { + int begin = turn_speed >> 16; // high word is start time + int end = turn_speed&0xFFFF; // low word is end time + time_t now_time = eDVBLocalTimeHandler::getInstance()->nowTime(); + tm nowTime; + localtime_r(&now_time, &nowTime); + int now = (nowTime.tm_hour + 1) * 60 + nowTime.tm_min + 1; + bool neg = end <= begin; + if (neg) { + int tmp = begin; + begin = end; + end = tmp; + } + if ((now >= begin && now < end) ^ neg) + return true; + } + return false; +} + #define VOLTAGE(x) (lnb_param.m_increased_voltage ? iDVBFrontend::voltage##x##_5 : iDVBFrontend::voltage##x) RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int slot_id) @@ -678,7 +703,8 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA sec_sequence.push_back( eSecCommand(eSecCommand::IF_NO_MORE_ROTOR_DISEQC_RETRYS_GOTO, +9 ) ); // timeout .. we assume now the rotor is already at the correct position sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, -8) ); // goto loop start //////////////////// - sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) ); + if (need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed)) + sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) ); sec_sequence.push_back( eSecCommand(eSecCommand::SET_TIMEOUT, m_params[MOTOR_RUNNING_TIMEOUT]*20) ); // 2 minutes running timeout // rotor running loop sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) ); // wait 50msec @@ -1072,6 +1098,16 @@ RESULT eDVBSatelliteEquipmentControl::setRotorPosNum(int rotor_pos_num) return 0; } +RESULT eDVBSatelliteEquipmentControl::setRotorTurningSpeed(int speed) +{ + eSecDebug("eDVBSatelliteEquipmentControl::setRotorTurningSpeed(%d)", speed); + if ( currentLNBValid() ) + m_lnbs[m_lnbidx].m_rotor_parameters.m_inputpower_parameters.m_turning_speed = speed; + else + return -ENOENT; + return 0; +} + struct sat_compare { int orb_pos, lofl, lofh; diff --git a/lib/dvb/sec.h b/lib/dvb/sec.h index 31415c4..dba5565 100644 --- a/lib/dvb/sec.h +++ b/lib/dvb/sec.h @@ -180,6 +180,7 @@ class eDVBSatelliteRotorParameters #endif public: enum { NORTH, SOUTH, EAST, WEST }; + enum { FAST, SLOW }; #ifndef SWIG eDVBSatelliteRotorParameters() { setDefaultOptions(); } @@ -187,6 +188,7 @@ public: { bool m_use; // can we use rotor inputpower to detect rotor running state ? __u8 m_delta; // delta between running and stopped rotor + unsigned int m_turning_speed; // SLOW, FAST, or fast turning epoch }; eDVBSatelliteRotorInputpowerParameters m_inputpower_parameters; @@ -201,6 +203,7 @@ public: void setDefaultOptions() // set default rotor options { + m_inputpower_parameters.m_turning_speed = FAST; // fast turning m_inputpower_parameters.m_use = true; m_inputpower_parameters.m_delta = 60; m_gotoxx_parameters.m_lo_direction = EAST; @@ -307,6 +310,7 @@ public: RESULT setLaDirection(int direction); RESULT setUseInputpower(bool onoff); RESULT setInputpowerDelta(int delta); // delta between running and stopped rotor + RESULT setRotorTurningSpeed(int speed); // set turning speed.. /* Satellite Specific Parameters */ RESULT addSatellite(int orbital_position); RESULT setVoltageMode(int mode); diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 1ba676c..00f34c6 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -1,4 +1,4 @@ -from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff +from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff, ConfigDateTime from enigma import eDVBSatelliteEquipmentControl as secClass, \ eDVBSatelliteLNBParameters as lnbParam, \ @@ -16,6 +16,8 @@ from xml.sax import make_parser from xml.sax.handler import ContentHandler from Tools.BoundFunction import boundFunction +from time import localtime, mktime +from datetime import datetime def getConfigSatlist(orbpos, satlist): default_orbpos = None @@ -33,7 +35,7 @@ def tryOpen(filename): return procFile class SecConfigure: - def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = diseqcParam.NO, diseqcpos = diseqcParam.SENDNO, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0): + def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = diseqcParam.NO, diseqcpos = diseqcParam.SENDNO, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0, turningSpeed = rotorParam.FAST): #simple defaults sec.addLNB() tunermask = 1 << slotid @@ -71,6 +73,7 @@ class SecConfigure: sec.setLoDirection(loDirection) sec.setUseInputpower(True) sec.setInputpowerDelta(50) + sec.setRotorTurningSpeed(turningSpeed) for x in self.NimManager.satList: print "Add sat " + str(x[0]) @@ -102,9 +105,9 @@ class SecConfigure: self.linked = { } self.satposdepends = { } self.equal = { } - + nim_slots = self.NimManager.nim_slots - + for slot in nim_slots: x = slot.slot nim = slot.config @@ -155,11 +158,20 @@ class SecConfigure: loValue = rotorParam.EAST else: loValue = rotorParam.WEST + turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW } + if turn_speed_dict.has_key(nim.turningSpeed.value): + turning_speed = turn_speed_dict[nim.turningSpeed.value] + else: + beg_time = localtime(nim.fastTurningBegin.value) + end_time = localtime(nim.fastTurningEnd.value) + turning_speed = ((beg_time.tm_hour+1) * 60 + beg_time.tm_min + 1) << 16 + turning_speed |= (end_time.tm_hour+1) * 60 + end_time.tm_min + 1 self.addLNBSimple(sec, slotid = x, diseqcmode = 3, longitude = nim.longitude.float, loDirection = loValue, latitude = nim.latitude.float, - laDirection = laValue) + laDirection = laValue, + turningSpeed = turning_speed) elif nim.configMode.value == "advanced": #advanced config self.updateAdvanced(sec, x) print "sec config completed" @@ -196,18 +208,18 @@ class SecConfigure: sec.setLNBLOFL(currLnb.lofl.value * 1000) sec.setLNBLOFH(currLnb.lofh.value * 1000) sec.setLNBThreshold(currLnb.threshold.value * 1000) - + # if currLnb.output_12v.value == "0V": # pass # nyi in drivers # elif currLnb.output_12v.value == "12V": # pass # nyi in drivers - + if currLnb.increased_voltage.value: sec.setLNBIncreasedVoltage(lnbParam.ON) else: sec.setLNBIncreasedVoltage(lnbParam.OFF) - - dm = currLnb.diseqcMode.value + + dm = currLnb.diseqcMode.value if dm == "none": sec.setDiSEqCMode(diseqcParam.NONE) elif dm == "1_0": @@ -227,10 +239,10 @@ class SecConfigure: sec.setToneburst(diseqcParam.A) elif currLnb.toneburst.value == "B": sec.setToneburst(diseqcParam.B) - + # Committed Diseqc Command cdc = currLnb.commitedDiseqcCommand.value - + c = { "none": diseqcParam.SENDNO, "AA": diseqcParam.AA, "AB": diseqcParam.AB, @@ -243,9 +255,9 @@ class SecConfigure: sec.setCommittedCommand(long(cdc)) sec.setFastDiSEqC(currLnb.fastDiseqc.value) - + sec.setSeqRepeat(currLnb.sequenceRepeat.value) - + if currLnb.diseqcMode.value == "1_0": currCO = currLnb.commandOrder1_0.value else: @@ -260,9 +272,9 @@ class SecConfigure: sec.setRepeats({"none": 0, "one": 1, "two": 2, "three": 3}[currLnb.diseqcRepeats.value]) setCommandOrder = False - - # 0 "committed, toneburst", - # 1 "toneburst, committed", + + # 0 "committed, toneburst", + # 1 "toneburst, committed", # 2 "committed, uncommitted, toneburst", # 3 "toneburst, committed, uncommitted", # 4 "uncommitted, committed, toneburst" @@ -283,10 +295,19 @@ class SecConfigure: sec.setLoDirection(rotorParam.EAST) else: sec.setLoDirection(rotorParam.WEST) - + if currLnb.powerMeasurement.value: sec.setUseInputpower(True) sec.setInputpowerDelta(currLnb.powerThreshold.value) + turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW } + if turn_speed_dict.has_key(currLnb.turningSpeed.value): + turning_speed = turn_speed_dict[currLnb.turningSpeed.value] + else: + beg_time = localtime(currLnb.fastTurningBegin.value) + end_time = localtime(currLnb.fastTurningEnd.value) + turning_speed = ((beg_time.tm_hour + 1) * 60 + beg_time.tm_min + 1) << 16 + turning_speed |= (end_time.tm_hour + 1) * 60 + end_time.tm_min + 1 + sec.setRotorTurningSpeed(turning_speed) else: sec.setUseInputpower(False) @@ -817,7 +838,11 @@ def InitNimManager(nimmgr): nim.longitudeOrientation = ConfigSelection(choices={"east": _("East"), "west": _("West")}, default = "east") nim.latitude = ConfigFloat(default=[50,767], limits=[(0,359),(0,999)]) nim.latitudeOrientation = ConfigSelection(choices={"north": _("North"), "south": _("South")}, default="north") - + nim.turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch")) ], default = "fast") + btime = datetime(1970, 1, 1, 7, 0); + nim.fastTurningBegin = ConfigDateTime(default = mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 900) + etime = datetime(1970, 1, 1, 19, 0); + nim.fastTurningEnd = ConfigDateTime(default = mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 900) # get other frontends of the same type satNimList = nimmgr.getNimListOfType(slot.type, slot.slot) satNimListNames = {} @@ -887,7 +912,11 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].latitudeOrientation = ConfigSelection(choices = [("north", _("North")), ("south", _("South"))], default = "north") nim.advanced.lnb[x].powerMeasurement = ConfigYesNo(default=True) nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=50, limits=(0, 100)) - + nim.advanced.lnb[x].turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch"))], default = "fast") + btime = datetime(1970, 1, 1, 7, 0); + nim.advanced.lnb[x].fastTurningBegin = ConfigDateTime(default=mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 600) + etime = datetime(1970, 1, 1, 19, 0); + nim.advanced.lnb[x].fastTurningEnd = ConfigDateTime(default=mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 600) elif slot.isCompatible("DVB-C"): nim.configMode = ConfigSelection( choices = { diff --git a/lib/python/Screens/Satconfig.py b/lib/python/Screens/Satconfig.py index e07b45e..de04dc4 100644 --- a/lib/python/Screens/Satconfig.py +++ b/lib/python/Screens/Satconfig.py @@ -5,6 +5,9 @@ from Components.MenuList import MenuList from Components.NimManager import nimmanager from Components.config import getConfigListEntry, config, ConfigNothing +from time import mktime, localtime +from datetime import datetime + class NimSetup(Screen, ConfigListScreen): def createSimpleSetup(self, list, mode): if mode == "single": @@ -25,6 +28,14 @@ class NimSetup(Screen, ConfigListScreen): list.append(getConfigListEntry(" ", self.nimConfig.longitudeOrientation)) list.append(getConfigListEntry(_("Latitude"), self.nimConfig.latitude)) list.append(getConfigListEntry(" ", self.nimConfig.latitudeOrientation)) + self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), self.nimConfig.turningSpeed) + self.list.append(self.turningSpeed) + if self.nimConfig.turningSpeed.value == "fast epoch": + self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), self.nimConfig.fastTurningBegin) + self.turnFastEpochEnd = getConfigListEntry(_("End time"), self.nimConfig.fastTurningEnd) + self.list.append(self.turnFastEpochBegin) + self.list.append(self.turnFastEpochEnd) + # elif self.nimConfig.positionerMode.value == "manual": # manual # pass @@ -40,13 +51,16 @@ class NimSetup(Screen, ConfigListScreen): self.advancedUsalsEntry = None self.advancedLof = None self.advancedPowerMeasurement = None + self.turningSpeed = None + self.turnFastEpochBegin = None + self.turnFastEpochEnd = None self.cableScanType = None if self.nim.isCompatible("DVB-S"): self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode) self.list.append(self.configMode) - + if self.nimConfig.configMode.value == "simple": #simple setup self.diseqcModeEntry = getConfigListEntry(_("DiSEqC Mode"), self.nimConfig.diseqcMode) self.list.append(self.diseqcModeEntry) @@ -115,7 +129,7 @@ class NimSetup(Screen, ConfigListScreen): def newConfig(self): checkList = (self.configMode, self.diseqcModeEntry, self.advancedSatsEntry, \ self.advancedLnbsEntry, self.advancedDiseqcMode, self.advancedUsalsEntry, \ - self.advancedLof, self.advancedPowerMeasurement, self.cableScanType) + self.advancedLof, self.advancedPowerMeasurement, self.turningSpeed, self.cableScanType) for x in checkList: if self["config"].getCurrent() == x: self.createSetup() @@ -124,6 +138,12 @@ class NimSetup(Screen, ConfigListScreen): if self.have_advanced and self.nim.config_mode == "advanced": self.fillAdvancedList() for x in self["config"].list: + if x in [self.turnFastEpochBegin, self.turnFastEpochEnd]: + # workaround for storing only hour*3600+min*60 value in configfile + # not really needed.. just for cosmetics.. + tm = localtime(x[1].value) + dt = datetime(1970, 1, 1, tm.tm_hour, tm.tm_min) + x[1].value = int(mktime(dt.timetuple())) x[1].save() nimmanager.sec.update() @@ -165,8 +185,15 @@ class NimSetup(Screen, ConfigListScreen): self.list.append(getConfigListEntry(" ", currLnb.latitudeOrientation)) self.advancedPowerMeasurement = getConfigListEntry("Use Power Measurement", currLnb.powerMeasurement) self.list.append(self.advancedPowerMeasurement) - if currLnb.powerMeasurement.value == "yes": - self.list.append(getConfigListEntry("Power Threshold in mA", currLnb.powerThreshold)) + if currLnb.powerMeasurement.value: + self.list.append(getConfigListEntry(_("Power threshold in mA"), currLnb.powerThreshold)) + self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), currLnb.turningSpeed) + self.list.append(self.turningSpeed) + if currLnb.turningSpeed.value == "fast epoch": + self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), currLnb.fastTurningBegin) + self.turnFastEpochEnd = getConfigListEntry(_("End time"), currLnb.fastTurningEnd) + self.list.append(self.turnFastEpochBegin) + self.list.append(self.turnFastEpochEnd) self.advancedLof = getConfigListEntry(_("LOF"), currLnb.lof) self.list.append(self.advancedLof) if currLnb.lof.value == "user_defined": diff --git a/po/de.po b/po/de.po index 5ce9581..e7dd760 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tuxbox-enigma 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-06-19 00:20+0200\n" +"POT-Creation-Date: 2007-07-08 01:27+0200\n" "PO-Revision-Date: 2007-06-19 00:21+0100\n" "Last-Translator: Stefan Pluecken \n" "Language-Team: none\n" @@ -60,6 +60,9 @@ msgstr "" msgid "#ffffffff" msgstr "" +msgid "%H:%M" +msgstr "" + #, python-format msgid "%d min" msgstr "%d min" @@ -357,6 +360,9 @@ msgstr "Band" msgid "Bandwidth" msgstr "Bandbreite" +msgid "Begin time" +msgstr "Startzeit" + msgid "Brightness" msgstr "Helligkeit" @@ -612,7 +618,7 @@ msgid "Dish" msgstr "Schüssel" msgid "Display Setup" -msgstr "" +msgstr "Display Einstellungen" msgid "" "Do you really want to REMOVE\n" @@ -734,6 +740,9 @@ msgstr "Eingeschaltet" msgid "End" msgstr "Ende" +msgid "End time" +msgstr "Endzeit" + msgid "EndTime" msgstr "Endzeit" @@ -794,9 +803,15 @@ msgstr "Erweiterungen" msgid "FEC" msgstr "FEC" +msgid "Fast" +msgstr "Schnell" + msgid "Fast DiSEqC" msgstr "Schnelles DiSEqC" +msgid "Fast epoch" +msgstr "Schnell Zeitraum" + msgid "Favourites" msgstr "Favoriten" @@ -866,6 +881,9 @@ msgstr "Gehe zu 0" msgid "Goto position" msgstr "Auf Position drehen" +msgid "Greek" +msgstr "Griechisch" + msgid "Guard Interval" msgstr "" @@ -1411,6 +1429,9 @@ msgstr "Rotor-Einstellungen" msgid "Positioner storage" msgstr "Positionsspeicher" +msgid "Power threshold in mA" +msgstr "Strom Schwellwert in mA" + msgid "Predefined transponder" msgstr "Vordefinierte Transponder" @@ -1551,11 +1572,14 @@ msgstr "Rechts" msgid "Rolloff" msgstr "" +msgid "Rotor turning speed" +msgstr "Rotor Drehgeschwindigkeit" + msgid "Running" -msgstr "" +msgstr "Aktiviert" msgid "Russian" -msgstr "" +msgstr "Russisch" msgid "S-Video" msgstr "S-Video" @@ -1588,64 +1612,64 @@ msgid "Scan " msgstr "Suche " msgid "Scan QAM128" -msgstr "" +msgstr "Durchsuche QAM128" msgid "Scan QAM16" -msgstr "" +msgstr "Durchsuche QAM16" msgid "Scan QAM256" -msgstr "" +msgstr "Durchsuche QAM256" msgid "Scan QAM32" -msgstr "" +msgstr "Durchsuche QAM32" msgid "Scan QAM64" -msgstr "" +msgstr "Durchsuche QAM64" msgid "Scan SR6875" -msgstr "" +msgstr "Durchsuche SR6875" msgid "Scan SR6900" -msgstr "" +msgstr "Durchsuche SR6900" msgid "Scan additional SR" -msgstr "" +msgstr "Durchsuche weitere SR" msgid "Scan band EU HYPER" -msgstr "" +msgstr "Durchsuche EU HYPER" msgid "Scan band EU MID" -msgstr "" +msgstr "Durchsuche EU MID" msgid "Scan band EU SUPER" -msgstr "" +msgstr "Durchsuche EU SUPER" msgid "Scan band EU UHF IV" -msgstr "" +msgstr "Durchsuche EU UHF IV" msgid "Scan band EU UHF V" -msgstr "" +msgstr "Durchsuche EU UHF V" msgid "Scan band EU VHF I" -msgstr "" +msgstr "Durchsuche EU VHF I" msgid "Scan band EU VHF III" -msgstr "" +msgstr "Durchsucher EU VHF III" msgid "Scan band US HIGH" -msgstr "" +msgstr "Durchsuche US HIGH" msgid "Scan band US HYPER" -msgstr "" +msgstr "Durchsuche US HYPER" msgid "Scan band US LOW" -msgstr "" +msgstr "Durchsucher US LOW" msgid "Scan band US MID" -msgstr "" +msgstr "Durchsuche US MID" msgid "Scan band US SUPER" -msgstr "" +msgstr "Durchsuche US SUPER" msgid "Search east" msgstr "Östlich suchen" @@ -1697,7 +1721,7 @@ msgid "" "(Timeout reading PMT)" msgstr "" "Kanal ist ungültig!\n" -"(Zeit lief beim Lesen von PMT ab)" +"(Zeit lief beim Lesen der PMT ab)" msgid "" "Service not found!\n" @@ -1779,6 +1803,9 @@ msgstr "Diaschau-Intervall (sek.)" msgid "Slot %d" msgstr "Steckplatz %d" +msgid "Slow" +msgstr "" + msgid "Some plugins are not available:\n" msgstr "Einige Plugins sind nicht verfügbar:\n" @@ -1846,10 +1873,10 @@ msgid "Stop Timeshift?" msgstr "Timeshift beenden?" msgid "Stop current event and disable coming events" -msgstr "" +msgstr "Laufendes Ereigniss abbrechen und kommende ignorieren" msgid "Stop current event but not coming events" -msgstr "" +msgstr "Laufendes Ereigniss abbrechen aber kommende ausführen" msgid "Stop playing this movie?" msgstr "Das Abspielen dieses Films beenden?" @@ -2162,7 +2189,7 @@ msgid "VCR scart" msgstr "Scart-Videorekorder" msgid "View Rass interactive..." -msgstr "" +msgstr "Rass Interaktiv anzeigen..." msgid "View teletext..." msgstr "Videotext anzeigen ..." @@ -2316,9 +2343,13 @@ msgstr "" msgid "Zap back to service before positioner setup?" msgstr "" +"Zurück schalten zum Sender der vor dem\n" +"öffnen der Motor Einstellungen lief?" msgid "Zap back to service before satfinder?" msgstr "" +"Zurück schalten zum Sender der vor dem\n" +"öffnen des Satfinders lief?" msgid "[alternative edit]" msgstr "[Alternativen-Bearbeitung]" @@ -2755,9 +2786,15 @@ msgstr "einfach" msgid "skip backward" msgstr "Rückwärts spulen" +msgid "skip backward (enter time)" +msgstr "Rückwärts springen (Zeit eingeben)" + msgid "skip forward" msgstr "Vorwärts spulen" +msgid "skip forward (enter time)" +msgstr "Vorwärts springen (Zeit eingeben)" + msgid "standby" msgstr "Standby" -- 2.7.4