[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -1,9 +1,8 @@
<services>
<service name="tar_git">
- <param name="url">https://github.com/poetaster/fahrplan</param>
+ <param name="url">https://github.com/poetaster/fahrplan.git</param>
<param name="branch">master</param>
- <param name="revision"> 2.0.40</param>
- <param name="token"/>
+ <param name="revision">2.0.41</param>
<param name="debian">N</param>
<param name="dumb">N</param>
</service>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/fahrplan2.pro
^
|
@@ -2,7 +2,7 @@
APP_NAME = Fahrplan
# Define Version
-VERSION = 2.0.40-1
+VERSION = 2.0.41-1
#CONFIG+= openrepos
@@ -102,26 +102,21 @@
unix:!symbian: LIBS += -lz
HEADERS += \
- src/parser/parser_hafasxml.h \
- src/parser/parser_abstract.h \
- src/parser/parser_definitions.h \
- src/parser/parser_xmlrejseplanendk.h \
- src/parser/parser_xmloebbat.h \
- src/parser/parser_xmlvasttrafikse.h \
src/fahrplan.h \
src/fahrplan_backend_manager.h \
- src/parser/parser_mobilebahnde.h \
src/calendarthreadwrapper.h \
src/calendar_sfos_wrapper.h \
- src/parser/parser_xmlnri.h \
- src/parser/parser_hafasbinary.h \
src/fahrplan_parser_thread.h \
src/fahrplan_calendar_manager.h \
+ src/models/backends.h \
src/models/stationslistmodel.h \
src/models/favorites.h \
src/models/stationsearchresults.h \
src/models/timetable.h \
src/models/trainrestrictions.h \
+ src/parser/parser_xmlnri.h \
+ src/parser/parser_hafasbinary.h \
+ src/parser/parser_mobilebahnde.h \
src/parser/parser_ptvvicgovau.h \
src/parser/parser_efa.h \
src/parser/parser_ireland_efa.h \
@@ -132,29 +127,30 @@
src/parser/parser_resrobot.h \
src/parser/parser_finland_matka.h \
src/parser/parser_vrr_efa.h \
- src/models/backends.h
+ src/parser/parser_hafasxml.h \
+ src/parser/parser_abstract.h \
+ src/parser/parser_definitions.h \
+ src/parser/parser_xmlrejseplanendk.h \
+ src/parser/parser_xmloebbat.h \
+ src/parser/parser_xmlvasttrafikse.h \
+ src/parser/parser_search_ch.h
SOURCES += src/main.cpp \
- src/parser/parser_hafasxml.cpp \
- src/parser/parser_abstract.cpp \
- src/parser/parser_definitions.cpp \
- src/parser/parser_xmlrejseplanendk.cpp \
- src/parser/parser_xmloebbat.cpp \
- src/parser/parser_xmlvasttrafikse.cpp \
src/fahrplan.cpp \
src/fahrplan_backend_manager.cpp \
- src/parser/parser_mobilebahnde.cpp \
src/calendarthreadwrapper.cpp \
src/calendar_sfos_wrapper.cpp \
- src/parser/parser_xmlnri.cpp \
- src/parser/parser_hafasbinary.cpp \
src/fahrplan_parser_thread.cpp \
src/fahrplan_calendar_manager.cpp \
+ src/models/backends.cpp \
src/models/stationslistmodel.cpp \
src/models/favorites.cpp \
src/models/stationsearchresults.cpp \
src/models/timetable.cpp \
src/models/trainrestrictions.cpp \
+ src/parser/parser_mobilebahnde.cpp \
+ src/parser/parser_xmlnri.cpp \
+ src/parser/parser_hafasbinary.cpp \
src/parser/parser_ptvvicgovau.cpp \
src/parser/parser_efa.cpp \
src/parser/parser_ireland_efa.cpp \
@@ -165,7 +161,14 @@
src/parser/parser_resrobot.cpp \
src/parser/parser_finland_matka.cpp \
src/parser/parser_vrr_efa.cpp \
- src/models/backends.cpp
+ src/parser/parser_hafasxml.cpp \
+ src/parser/parser_abstract.cpp \
+ src/parser/parser_definitions.cpp \
+ src/parser/parser_xmlrejseplanendk.cpp \
+ src/parser/parser_xmloebbat.cpp \
+ src/parser/parser_xmlvasttrafikse.cpp \
+ src/parser/parser_search_ch.cpp
+
LIBS += $$PWD/3rdparty/gauss-kruger-cpp/gausskruger.cpp
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/src/fahrplan_backend_manager.cpp
^
|
@@ -43,6 +43,7 @@
result.append(ParserResRobot::getName());
result.append(ParserFinlandMatka::getName());
result.append(ParserVRREFA::getName());
+ result.append(ParserSearchCH::getName());
// Make sure the index is in bounds
if (currentParserIndex > (result.count() - 1) || currentParserIndex < 0) {
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/src/fahrplan_parser_thread.cpp
^
|
@@ -164,6 +164,9 @@
case 13:
m_parser = new ParserVRREFA();
break;
+ case 14:
+ m_parser = new ParserSearchCH();
+ break;
}
m_name = m_parser->name();
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/src/fahrplan_parser_thread.h
^
|
@@ -38,6 +38,7 @@
#include "parser/parser_resrobot.h"
#include "parser/parser_finland_matka.h"
#include "parser/parser_vrr_efa.h"
+#include "parser/parser_search_ch.h"
class FahrplanParserThread : public QThread
{
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/src/parser/parser_search_ch.cpp
^
|
@@ -0,0 +1,869 @@
+/****************************************************************************
+**
+** This file is a part of Fahrplan.
+**
+** 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, see <http://www.gnu.org/licenses/>.
+**
+****************************************************************************/
+
+#include <QUrl>
+#ifdef BUILD_FOR_QT5
+#include <QUrlQuery>
+#include <QTimeZone>
+#include <QJsonDocument>
+#else
+#include <QScriptEngine>
+#endif
+#include <QLocale>
+#include <QRegExp>
+#include <QVariantMap>
+#include <QFile>
+
+#include "parser_search_ch.h"
+
+using namespace parser_search_ch;
+
+/*
+ * TimetableRow Class
+ */
+
+TimetableRow::TimetableRow(const QVariantMap& stop)
+ : stop(stop)
+{
+ const QVariant& lat = stop.value("lat");
+ const QVariant& lon = stop.value("lon");
+
+ if (!lon.isNull() && !lat.isNull()) {
+ timetable.latitude = lat.toDouble();
+ timetable.longitude = lon.toDouble();
+ }
+}
+
+void TimetableRow::load(const QVariantMap& departure)
+{
+ const QVariantMap& dest = departure.value("terminal").toMap();
+
+ timetable.destinationStation = dest.value("name").toString();
+ timetable.time = ParserSearchCH::tsFromMap(departure, "time").time();
+
+ this->loadTrainType(departure);
+ this->loadDelay(departure);
+ this->loadDeparturePlatform(departure);
+}
+
+void TimetableRow::appendTo(TimetableEntriesList& tt) {
+ tt.append(timetable);
+}
+
+void TimetableRow::loadTrainTypeWithoutLine(const QVariant& trainType)
+{
+ const QString& type = trainType.toString();
+
+ if (type == "ship") {
+ timetable.trainType = tr("Ship");
+ } else if (type == "funicular") {
+ timetable.trainType = tr("Funicular");
+ } else if (type == "cablecar") {
+ timetable.trainType = tr("Cablecar");
+ } else if (type == "gondola") {
+ timetable.trainType = tr("Gondola");
+ }
+}
+
+void TimetableRow::loadTrainType(const QVariantMap& departure)
+{
+ const QVariant& line = departure.value("line");
+ const QVariant& type = departure.value("type");
+
+ if (type.toString() == "bus") {
+ timetable.trainType = tr("Bus %1").arg(line.toString());
+ } else if (type.toString() == "post") {
+ timetable.trainType = tr("Bus %1").arg(line.toString());
+ } else if (type.toString() == "tram") {
+ timetable.trainType = tr("Tram %1").arg(line.toString());
+ } else if (line.isNull()) {
+ this->loadTrainTypeWithoutLine(type);
+ } else {
+ timetable.trainType = line.toString();
+ }
+}
+
+void TimetableRow::loadDeparturePlatform(const QVariantMap& departure)
+{
+ const QVariant& platform = departure.value("track");
+
+ if (platform.isNull()) {
+ timetable.currentStation = stop.value("name").toString();
+ } else {
+ timetable.platform = platform.toString();
+ }
+}
+
+void TimetableRow::loadDelay(const QVariantMap& departure)
+{
+ const QVariant& delay = departure.value("dep_delay");
+
+ if (delay.isNull()) {
+ return;
+ }
+
+ const QString& minutes = delay.toString();
+
+ if (minutes == "X") {
+ timetable.miscInfo = tr("Cancelled");
+ } else if (minutes != "+0") {
+ timetable.miscInfo = tr("Departure delayed: %1'").arg(minutes);
+ }
+}
+
+/*
+ * Class TrainTypeList
+ */
+
+TrainTypeList::TrainTypeList() :
+ QObject()
+{
+}
+
+void TrainTypeList::appendUnique(const QString& type)
+{
+ if (!types.contains(type)) {
+ types.append(type);
+ }
+}
+
+void TrainTypeList::append(const QString& type)
+{
+ if (type == "B") {
+ appendUnique(tr("Bus"));
+ } else if (type == "BN") {
+ appendUnique(tr("Bus"));
+ } else if (type == "T") {
+ appendUnique(tr("Tram"));
+ } else if (type == "FUN") {
+ appendUnique(tr("Funi"));
+ } else if (type == "GB") {
+ appendUnique(tr("Gondola"));
+ } else if (type == "PB") {
+ appendUnique(tr("Cableway"));
+ } else if (type == "BAT") {
+ appendUnique(tr("Ship"));
+ } else {
+ appendUnique(type);
+ }
+}
+
+QString TrainTypeList::toString()
+{
+ if (types.length() > 0) {
+ return types.join(" ");
+ } else {
+ return tr("Walk");
+ }
+}
+
+/*
+ * Class JourneySegment
+ */
+
+JourneySegment::JourneySegment(const QVariantMap& leg, const QVariant& exit)
+{
+ this->setDepartureStation(leg.value("name").toString());
+ this->setDirection(leg.value("terminal").toString());
+
+ this->loadDepartureTrack(leg);
+ this->loadDelay(leg);
+ this->loadTrainType(leg);
+ this->loadExit(leg, exit.toMap());
+
+// this->setInternalData1("UNUSED");
+// this->setInternalData2("UNUSED");
+}
+
+void JourneySegment::loadDepartureTrack(const QVariantMap& leg)
+{
+ const QVariant& track = leg.value("track");
+
+ if (!track.isNull()) {
+ this->setDepartureInfo(tr("Track %1").arg(track.toString()));
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/src/parser/parser_search_ch.h
^
|
@@ -0,0 +1,170 @@
+#ifndef PARSER_SEARCH_CH_H
+#define PARSER_SEARCH_CH_H
+
+#include <QNetworkReply>
+#include <QList>
+#include <QMap>
+
+#include "parser_abstract.h"
+
+namespace parser_search_ch
+{
+ class TimetableRow : public QObject
+ {
+ Q_OBJECT
+
+ public:
+ TimetableRow(const QVariantMap& stop);
+ void load(const QVariantMap& departure);
+ void appendTo(TimetableEntriesList& tt);
+ private:
+ const QVariantMap& stop;
+ void loadTrainType(const QVariantMap& departure);
+ void loadTrainTypeWithoutLine(const QVariant& trainType);
+ void loadDelay(const QVariantMap& departure);
+ void loadDeparturePlatform(const QVariantMap&);
+
+ TimetableEntry timetable;
+ };
+
+ class TrainTypeList : public QObject
+ {
+ Q_OBJECT
+
+ public:
+ TrainTypeList();
+ void append(const QString&);
+ QString toString();
+ private:
+ void appendUnique(const QString&);
+ QStringList types;
+ };
+
+ class JourneySearch
+ {
+ public:
+ Station from;
+ Station via;
+ Station to;
+ QDateTime when;
+ ParserAbstract::Mode mode;
+ int restrictions;
+ };
+
+ class JourneySearchResult : public JourneyResultList
+ {
+ public:
+ JourneySearchResult(const JourneySearch&);
+ private:
+ void loadTimeInfo(const QDateTime&, const ParserAbstract::Mode&);
+ };
+
+ class JourneyConnection : public JourneyResultItem
+ {
+ public:
+ JourneyConnection(int id);
+ void load(const QVariantMap&);
+ private:
+ QDateTime departure;
+ QDateTime arrival;
+ QVariantList legs;
+
+ void loadDepartureTime(const QDateTime&, const QVariant& delay);
+ void loadArrivalTime(const QDateTime&, const QVariant& delay);
+ void loadDuration(const QVariant&);
+ void loadTrainTypes(const QVariantList&);
+ void countTransfers(const QVariantList&);
+ void checkIfCancelled(const QVariant& dep_delay);
+ friend class JourneyConnectionDetails;
+ };
+
+ class JourneyConnectionDetails : public JourneyDetailResultList
+ {
+ public:
+ JourneyConnectionDetails(JourneyConnection*, const JourneySearch&);
+ private:
+ void loadSegments(JourneyConnection*);
+ };
+
+ class JourneyConnectionTime
+ {
+ public:
+ JourneyConnectionTime(const QDateTime& time, const QVariant& delay);
+ QString toString();
+ private:
+ const QDateTime& ts;
+ const QVariant& delay;
+ };
+
+ class JourneySegment : public JourneyDetailResultItem
+ {
+ Q_OBJECT
+ public:
+ JourneySegment(const QVariantMap& leg, const QVariant& exit);
+ private:
+ void loadTrainType(const QVariantMap& leg);
+ void loadExit(const QVariantMap& leg, const QVariantMap& exit);
+ void loadDelay(const QVariantMap& leg);
+ void loadDepartureTrack(const QVariantMap& leg);
+ };
+}
+
+class ParserSearchCH : public ParserAbstract
+{
+ Q_OBJECT
+public:
+ explicit ParserSearchCH(QObject *parent=0);
+ static QString getName() { return QString("%1 (timetable.search.ch)").arg(tr("Switzerland")); }
+ virtual QString name() { return getName(); }
+ virtual QString shortName() { return "search.ch"; }
+ static QDateTime tsFromMap(const QVariantMap& map, const QString& key);
+
+public slots:
+ virtual bool supportsGps();
+ virtual bool supportsVia();
+ virtual bool supportsTimeTable();
+ virtual void findStationsByName(const QString &stationName);
+ virtual void findStationsByCoordinates(qreal longitude, qreal latitude);
+ virtual void getTimeTableForStation(const Station ¤tStation,
+ const Station &directionStation,
+ const QDateTime &dateTime,
+ ParserAbstract::Mode mode,
+ int trainrestrictions);
+ virtual void searchJourney(const Station &departureStation,
+ const Station &viaStation,
+ const Station &arrivalStation,
+ const QDateTime &dateTime,
+ ParserAbstract::Mode mode,
+ int trainrestrictions);
+ virtual void getJourneyDetails(const QString &id);
+
+protected:
+ QStringList getTrainRestrictions();
+ virtual void parseStations(QNetworkReply *);
+ virtual void parseStationsByName(QNetworkReply *);
+ virtual void parseStationsByCoordinates(QNetworkReply *);
+ virtual void parseTimeTable(QNetworkReply *);
+ virtual void parseSearchJourney(QNetworkReply *);
+ virtual void searchJourneyLater();
+ virtual void searchJourneyEarlier();
+ virtual void sendRequest(QUrl url);
+
+ QList<JourneyDetailResultList*> details;
+ parser_search_ch::JourneySearch lastJourneySearch;
+
+private:
+ QVariantList parseJsonList(const QByteArray &json) const;
+#if defined(BUILD_FOR_QT5)
+ void addRestrictionsToQuery(QUrlQuery&, int);
+#else
+ void addRestrictionsToQuery(QUrl&, int);
+#endif
+ void parseStationRow(StationsList& results, const QVariantMap& properties);
+ void setTTTrainTypeWithoutLine(TimetableEntry&, const QVariant&);
+ void setTTDepartureGPSPosition(TimetableEntry&, const QVariantMap&);
+ void setTTDeparturePlatform(TimetableEntry&, const QVariantMap&, const QVariantMap&);
+ void setTTDelay(TimetableEntry&, const QVariantMap&);
+};
+
+#endif
+
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fahrplan2-2.0.41.tar.bz2/translations/fahrplan_de.ts
^
|
@@ -2368,6 +2368,199 @@
</message>
</context>
<context>
+ <name>ParserSearchCH</name>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="223"/>
+ <source>All</source>
+ <translation>Alle</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="224"/>
+ <source>Train</source>
+ <translation>Zug</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="225"/>
+ <source>Tram</source>
+ <translation>Tram</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="226"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="482"/>
+ <source>Ship</source>
+ <translation>Schiff</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="227"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="646"/>
+ <source>Bus</source>
+ <translation>Bus</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="228"/>
+ <source>Cableway</source>
+ <translation>Seilbahn</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="375"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="377"/>
+ <source>Train station</source>
+ <translation>Bahnhof</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="379"/>
+ <source>Tram stop</source>
+ <translation>Tramhaltestelle</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="381"/>
+ <source>Port</source>
+ <translation>Hafen</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="383"/>
+ <source>Bus stop</source>
+ <translation>Bushaltestelle</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="385"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="484"/>
+ <source>Funicular</source>
+ <translation>Standseilbahn</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="387"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="488"/>
+ <source>Gondola</source>
+ <translation>Gondel</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="389"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="486"/>
+ <source>Cablecar</source>
+ <translation>Seilbahn</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="410"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="562"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="763"/>
+ <source>Cannot parse reply from the server</source>
+ <translation>Kann Antwort vom Server nicht verarbeiten</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="499"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="501"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="648"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="650"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="652"/>
+ <source>Bus %1</source>
+ <translation>Bus %1</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="503"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="654"/>
+ <source>Tram %1</source>
+ <translation>Tram %1</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="548"/>
+ <source>Cancelled</source>
+ <translation>Ausfall</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="550"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="698"/>
+ <source>Departure delayed: %1'</source>
+ <translation>AbfahrtsverspƤtung: %1'</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="669"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="689"/>
+ <source>Track %1</source>
+ <translation>Gleis %1</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="696"/>
+ <source>Train cancelled</source>
+ <translation>Zugausfall</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="804"/>
+ <source>No journey details found.</source>
+ <translation>Verbindungsdetails nicht gefunden.</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.h" line="62"/>
+ <source>Switzerland</source>
+ <translation>Schweiz</translation>
+ </message>
+</context>
+<context>
+ <name>parser_search_ch::JourneyConnection</name>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="154"/>
+ <source>Walk</source>
+ <translation>Fussweg</translation>
+ </message>
+</context>
+<context>
+ <name>parser_search_ch::JourneySearchResult</name>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="191"/>
+ <source>Arrivals %1</source>
+ <translation>AnkĆ¼nfte %1</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="193"/>
+ <source>Departures %1</source>
+ <translation>Abfahrten %1</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="196"/>
+ <source>ddd MMM d, HH:mm</source>
+ <translation>ddd MMM d, HH:mm</translation>
+ </message>
+</context>
+<context>
+ <name>parser_search_ch::TrainTypeList</name>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="52"/>
+ <location filename="../src/parser/parser_search_ch.cpp" line="54"/>
+ <source>Bus</source>
+ <translation>Bus</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="56"/>
+ <source>Tram</source>
+ <translation>Tram</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="58"/>
+ <source>Funi</source>
+ <translation>Funi</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="60"/>
+ <source>Gondola</source>
+ <translation>Gondel</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="62"/>
+ <source>Cableway</source>
+ <translation>Seilbahn</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="64"/>
+ <source>Ship</source>
+ <translation>Schiff</translation>
+ </message>
+ <message>
+ <location filename="../src/parser/parser_search_ch.cpp" line="75"/>
+ <source>Walk</source>
+ <translation>Fussweg</translation>
+ </message>
+</context>
+<context>
<name>ParserSydneyEFA</name>
<message>
<location filename="../src/parser/parser_sydney_efa.cpp" line="45"/>
|