Make error polling configurable

This commit is contained in:
Martchus 2017-01-12 22:38:36 +01:00
parent b2a66c806b
commit bbac12f9e9
8 changed files with 277 additions and 204 deletions

View File

@ -54,9 +54,6 @@ SyncthingConnection::SyncthingConnection(const QString &syncthingUrl, const QByt
m_keepPolling(false), m_keepPolling(false),
m_reconnecting(false), m_reconnecting(false),
m_lastEventId(0), m_lastEventId(0),
m_trafficPollTimer(),
m_devStatsPollTimer(),
m_autoReconnectTimer(),
m_autoReconnectTries(0), m_autoReconnectTries(0),
m_totalIncomingTraffic(0), m_totalIncomingTraffic(0),
m_totalOutgoingTraffic(0), m_totalOutgoingTraffic(0),
@ -80,6 +77,10 @@ SyncthingConnection::SyncthingConnection(const QString &syncthingUrl, const QByt
m_devStatsPollTimer.setTimerType(Qt::VeryCoarseTimer); m_devStatsPollTimer.setTimerType(Qt::VeryCoarseTimer);
m_devStatsPollTimer.setSingleShot(true); m_devStatsPollTimer.setSingleShot(true);
QObject::connect(&m_devStatsPollTimer, &QTimer::timeout, this, &SyncthingConnection::requestDeviceStatistics); QObject::connect(&m_devStatsPollTimer, &QTimer::timeout, this, &SyncthingConnection::requestDeviceStatistics);
m_errorsPollTimer.setInterval(30000);
m_errorsPollTimer.setTimerType(Qt::VeryCoarseTimer);
m_errorsPollTimer.setSingleShot(true);
QObject::connect(&m_errorsPollTimer, &QTimer::timeout, this, &SyncthingConnection::requestErrors);
m_autoReconnectTimer.setTimerType(Qt::VeryCoarseTimer); m_autoReconnectTimer.setTimerType(Qt::VeryCoarseTimer);
QObject::connect(&m_autoReconnectTimer, &QTimer::timeout, this, &SyncthingConnection::autoReconnect); QObject::connect(&m_autoReconnectTimer, &QTimer::timeout, this, &SyncthingConnection::autoReconnect);
} }
@ -731,6 +732,7 @@ bool SyncthingConnection::applySettings(SyncthingConnectionSettings &connectionS
setTrafficPollInterval(connectionSettings.trafficPollInterval); setTrafficPollInterval(connectionSettings.trafficPollInterval);
setDevStatsPollInterval(connectionSettings.devStatsPollInterval); setDevStatsPollInterval(connectionSettings.devStatsPollInterval);
setErrorsPollInterval(connectionSettings.errorsPollInterval);
setAutoReconnectInterval(connectionSettings.reconnectInterval); setAutoReconnectInterval(connectionSettings.reconnectInterval);
return reconnectRequired; return reconnectRequired;
@ -941,7 +943,7 @@ void SyncthingConnection::readConnections()
m_lastConnectionsUpdate = DateTime::gmtNow(); m_lastConnectionsUpdate = DateTime::gmtNow();
// since there seems no event for this data, just request every 2 seconds // since there seems no event for this data, keep polling
if(m_keepPolling && m_trafficPollTimer.interval()) { if(m_keepPolling && m_trafficPollTimer.interval()) {
m_trafficPollTimer.start(); m_trafficPollTimer.start();
} }
@ -1043,7 +1045,7 @@ void SyncthingConnection::readDeviceStatistics()
} }
++index; ++index;
} }
// since there seems no event for this data, just request every minute // since there seems no event for this data, keep polling
if(m_keepPolling && m_devStatsPollTimer.interval()) { if(m_keepPolling && m_devStatsPollTimer.interval()) {
m_devStatsPollTimer.start(); m_devStatsPollTimer.start();
} }
@ -1095,15 +1097,15 @@ void SyncthingConnection::readErrors()
emit error(tr("Unable to parse errors: ") + jsonError.errorString(), SyncthingErrorCategory::Parsing, QNetworkReply::NoError); emit error(tr("Unable to parse errors: ") + jsonError.errorString(), SyncthingErrorCategory::Parsing, QNetworkReply::NoError);
} }
// since there seems no event for this data, just request every thirty seconds, FIXME: make interval configurable // since there seems no event for this data, keep polling
if(m_keepPolling) { if(m_keepPolling && m_errorsPollTimer.interval()) {
QTimer::singleShot(30000, Qt::VeryCoarseTimer, this, SLOT(requestErrors())); m_errorsPollTimer.start();
} }
break; break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
emit error(tr("Unable to request errors: ") + reply->errorString(), SyncthingErrorCategory::OverallConnection, reply->error()); emit error(tr("Unable to request errors: ") + reply->errorString(), SyncthingErrorCategory::SpecificRequest, reply->error());
} }
} }
@ -1529,6 +1531,7 @@ void SyncthingConnection::setStatus(SyncthingStatus status)
// don't consider synchronization finished in this this case // don't consider synchronization finished in this this case
m_devStatsPollTimer.stop(); m_devStatsPollTimer.stop();
m_trafficPollTimer.stop(); m_trafficPollTimer.stop();
m_errorsPollTimer.stop();
m_syncedDirs.clear(); m_syncedDirs.clear();
break; break;
default: default:

View File

@ -91,6 +91,8 @@ public:
void setTrafficPollInterval(int trafficPollInterval); void setTrafficPollInterval(int trafficPollInterval);
int devStatsPollInterval() const; int devStatsPollInterval() const;
void setDevStatsPollInterval(int devStatsPollInterval); void setDevStatsPollInterval(int devStatsPollInterval);
int errorsPollInterval() const;
void setErrorsPollInterval(int errorsPollInterval);
int autoReconnectInterval() const; int autoReconnectInterval() const;
unsigned int autoReconnectTries() const; unsigned int autoReconnectTries() const;
void setAutoReconnectInterval(int interval); void setAutoReconnectInterval(int interval);
@ -204,6 +206,7 @@ private:
int m_lastEventId; int m_lastEventId;
QTimer m_trafficPollTimer; QTimer m_trafficPollTimer;
QTimer m_devStatsPollTimer; QTimer m_devStatsPollTimer;
QTimer m_errorsPollTimer;
QTimer m_autoReconnectTimer; QTimer m_autoReconnectTimer;
unsigned int m_autoReconnectTries; unsigned int m_autoReconnectTries;
QString m_configDir; QString m_configDir;
@ -364,6 +367,27 @@ inline void SyncthingConnection::setDevStatsPollInterval(int devStatsPollInterva
m_devStatsPollTimer.setInterval(devStatsPollInterval); m_devStatsPollTimer.setInterval(devStatsPollInterval);
} }
/*!
* \brief Returns the interval for polling Syncthing errors (which currently can not be received via event API) in milliseconds.
* \remarks Default value is 30000 milliseconds.
*/
inline int SyncthingConnection::errorsPollInterval() const
{
return m_errorsPollTimer.interval();
}
/*!
* \brief Sets the interval for polling Syncthing errors (which currently can not be received via event API) in milliseconds.
* \remarks Default value is 30000 milliseconds.
*/
inline void SyncthingConnection::setErrorsPollInterval(int errorPollInterval)
{
if(!errorPollInterval) {
m_errorsPollTimer.stop();
}
m_errorsPollTimer.setInterval(errorPollInterval);
}
/*! /*!
* \brief Returns the reconnect interval in milliseconds. * \brief Returns the reconnect interval in milliseconds.
* \remarks Default value is 0 which indicates disabled auto-reconnect. * \remarks Default value is 0 which indicates disabled auto-reconnect.

View File

@ -18,6 +18,7 @@ struct LIB_SYNCTHING_CONNECTOR_EXPORT SyncthingConnectionSettings {
QByteArray apiKey; QByteArray apiKey;
int trafficPollInterval = 2000; int trafficPollInterval = 2000;
int devStatsPollInterval = 60000; int devStatsPollInterval = 60000;
int errorsPollInterval = 30000;
int reconnectInterval = 0; int reconnectInterval = 0;
QString httpsCertPath; QString httpsCertPath;
QList<QSslError> expectedSslErrors; QList<QSslError> expectedSslErrors;

View File

@ -63,6 +63,7 @@ void restore()
connectionSettings->apiKey = settings.value(QStringLiteral("apiKey")).toByteArray(); connectionSettings->apiKey = settings.value(QStringLiteral("apiKey")).toByteArray();
connectionSettings->trafficPollInterval = settings.value(QStringLiteral("trafficPollInterval"), connectionSettings->trafficPollInterval).toInt(); connectionSettings->trafficPollInterval = settings.value(QStringLiteral("trafficPollInterval"), connectionSettings->trafficPollInterval).toInt();
connectionSettings->devStatsPollInterval = settings.value(QStringLiteral("devStatsPollInterval"), connectionSettings->devStatsPollInterval).toInt(); connectionSettings->devStatsPollInterval = settings.value(QStringLiteral("devStatsPollInterval"), connectionSettings->devStatsPollInterval).toInt();
connectionSettings->errorsPollInterval = settings.value(QStringLiteral("errorsPollInterval"), connectionSettings->errorsPollInterval).toInt();
connectionSettings->reconnectInterval = settings.value(QStringLiteral("reconnectInterval"), connectionSettings->reconnectInterval).toInt(); connectionSettings->reconnectInterval = settings.value(QStringLiteral("reconnectInterval"), connectionSettings->reconnectInterval).toInt();
connectionSettings->httpsCertPath = settings.value(QStringLiteral("httpsCertPath")).toString(); connectionSettings->httpsCertPath = settings.value(QStringLiteral("httpsCertPath")).toString();
if(!connectionSettings->loadHttpsCert()) { if(!connectionSettings->loadHttpsCert()) {
@ -138,6 +139,7 @@ void save()
settings.setValue(QStringLiteral("apiKey"), connectionSettings->apiKey); settings.setValue(QStringLiteral("apiKey"), connectionSettings->apiKey);
settings.setValue(QStringLiteral("trafficPollInterval"), connectionSettings->trafficPollInterval); settings.setValue(QStringLiteral("trafficPollInterval"), connectionSettings->trafficPollInterval);
settings.setValue(QStringLiteral("devStatsPollInterval"), connectionSettings->devStatsPollInterval); settings.setValue(QStringLiteral("devStatsPollInterval"), connectionSettings->devStatsPollInterval);
settings.setValue(QStringLiteral("errorsPollInterval"), connectionSettings->errorsPollInterval);
settings.setValue(QStringLiteral("reconnectInterval"), connectionSettings->reconnectInterval); settings.setValue(QStringLiteral("reconnectInterval"), connectionSettings->reconnectInterval);
settings.setValue(QStringLiteral("httpsCertPath"), connectionSettings->httpsCertPath); settings.setValue(QStringLiteral("httpsCertPath"), connectionSettings->httpsCertPath);
} }

View File

@ -100,6 +100,16 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="instanceNoteIcon">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLabel" name="instanceNoteLabel"> <widget class="QLabel" name="instanceNoteLabel">
<property name="sizePolicy"> <property name="sizePolicy">
@ -240,31 +250,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="15" column="0">
<widget class="QLabel" name="statusTextLabel">
<property name="text">
<string>Status</string>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QLabel" name="statusLabel">
<property name="text">
<string>disconnected</string>
</property>
</widget>
</item>
<item row="18" column="1">
<widget class="QPushButton" name="connectPushButton">
<property name="text">
<string>Apply connection settings and try to reconnect with the currently selected config</string>
</property>
<property name="icon">
<iconset theme="view-refresh" resource="../resources/icons.qrc">
<normaloff>:/icons/hicolor/scalable/actions/view-refresh.svg</normaloff>:/icons/hicolor/scalable/actions/view-refresh.svg</iconset>
</property>
</widget>
</item>
<item row="13" column="0"> <item row="13" column="0">
<widget class="QLabel" name="pollLabel"> <widget class="QLabel" name="pollLabel">
<property name="text"> <property name="text">
@ -276,18 +261,14 @@
</widget> </widget>
</item> </item>
<item row="13" column="1"> <item row="13" column="1">
<layout class="QHBoxLayout" name="pollHorizontalLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="spacing"> <property name="horizontalSpacing">
<number>10</number> <number>10</number>
</property> </property>
<item> <property name="verticalSpacing">
<widget class="QLabel" name="pollTrafficLabel"> <number>0</number>
<property name="text"> </property>
<string>Traffic</string> <item row="0" column="1">
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="pollTrafficSpinBox"> <widget class="QSpinBox" name="pollTrafficSpinBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@ -306,21 +287,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="0">
<widget class="Line" name="line3"> <widget class="QLabel" name="pollTrafficLabel">
<property name="orientation"> <property name="text">
<enum>Qt::Vertical</enum> <string>Traffic</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="3">
<widget class="QLabel" name="pollDevStatsLabel"> <widget class="QLabel" name="pollDevStatsLabel">
<property name="text"> <property name="text">
<string>Device statistics</string> <string>Device statistics</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="2">
<widget class="Line" name="line3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QSpinBox" name="pollDevStatsSpinBox"> <widget class="QSpinBox" name="pollDevStatsSpinBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@ -339,21 +327,40 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="1" column="0">
<widget class="Line" name="line"> <widget class="QLabel" name="pollErrorsLabel">
<property name="orientation"> <property name="text">
<enum>Qt::Vertical</enum> <string>Errors</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="1" column="1">
<widget class="QSpinBox" name="pollErrorsSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string> ms</string>
</property>
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>999999999</number>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="reconnectLabel"> <widget class="QLabel" name="reconnectLabel">
<property name="text"> <property name="text">
<string>Reconnect</string> <string>Reconnect</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="1" column="4">
<widget class="QSpinBox" name="reconnectSpinBox"> <widget class="QSpinBox" name="reconnectSpinBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@ -372,15 +379,37 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> <item row="14" column="0">
<widget class="QLabel" name="instanceNoteIcon"> <widget class="QLabel" name="statusTextLabel">
<property name="minimumSize"> <property name="text">
<size> <string>Status</string>
<width>32</width> </property>
<height>32</height> </widget>
</size> </item>
<item row="14" column="1">
<widget class="QLabel" name="statusLabel">
<property name="text">
<string>disconnected</string>
</property>
</widget>
</item>
<item row="17" column="1">
<widget class="QPushButton" name="connectPushButton">
<property name="text">
<string>Apply connection settings and try to reconnect with the currently selected config</string>
</property>
<property name="icon">
<iconset theme="view-refresh" resource="../resources/icons.qrc">
<normaloff>:/icons/hicolor/scalable/actions/view-refresh.svg</normaloff>:/icons/hicolor/scalable/actions/view-refresh.svg</iconset>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -137,6 +137,7 @@ bool ConnectionOptionPage::showConnectionSettings(int index)
ui()->certPathSelection->lineEdit()->setText(connectionSettings.httpsCertPath); ui()->certPathSelection->lineEdit()->setText(connectionSettings.httpsCertPath);
ui()->pollTrafficSpinBox->setValue(connectionSettings.trafficPollInterval); ui()->pollTrafficSpinBox->setValue(connectionSettings.trafficPollInterval);
ui()->pollDevStatsSpinBox->setValue(connectionSettings.devStatsPollInterval); ui()->pollDevStatsSpinBox->setValue(connectionSettings.devStatsPollInterval);
ui()->pollErrorsSpinBox->setValue(connectionSettings.errorsPollInterval);
ui()->reconnectSpinBox->setValue(connectionSettings.reconnectInterval); ui()->reconnectSpinBox->setValue(connectionSettings.reconnectInterval);
m_currentIndex = index; m_currentIndex = index;
} else { } else {
@ -162,6 +163,7 @@ bool ConnectionOptionPage::cacheCurrentSettings(bool applying)
connectionSettings.httpsCertPath = ui()->certPathSelection->lineEdit()->text(); connectionSettings.httpsCertPath = ui()->certPathSelection->lineEdit()->text();
connectionSettings.trafficPollInterval = ui()->pollTrafficSpinBox->value(); connectionSettings.trafficPollInterval = ui()->pollTrafficSpinBox->value();
connectionSettings.devStatsPollInterval = ui()->pollDevStatsSpinBox->value(); connectionSettings.devStatsPollInterval = ui()->pollDevStatsSpinBox->value();
connectionSettings.errorsPollInterval = ui()->pollErrorsSpinBox->value();
connectionSettings.reconnectInterval = ui()->reconnectSpinBox->value(); connectionSettings.reconnectInterval = ui()->reconnectSpinBox->value();
if(!connectionSettings.loadHttpsCert()) { if(!connectionSettings.loadHttpsCert()) {
const QString errorMessage = QCoreApplication::translate("QtGui::ConnectionOptionPage", "Unable to load specified certificate \"%1\".").arg(connectionSettings.httpsCertPath); const QString errorMessage = QCoreApplication::translate("QtGui::ConnectionOptionPage", "Unable to load specified certificate \"%1\".").arg(connectionSettings.httpsCertPath);
@ -740,7 +742,7 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
categoryModel()->setCategories(categories); categoryModel()->setCategories(categories);
resize(850, 600); resize(860, 620);
setWindowTitle(tr("Settings") + QStringLiteral(" - " APP_NAME)); setWindowTitle(tr("Settings") + QStringLiteral(" - " APP_NAME));
setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg")))); setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))));

View File

@ -127,22 +127,22 @@
<translation>Tray-Icon beim Starten der Desktopumgebung automatisch starten</translation> <translation>Tray-Icon beim Starten der Desktopumgebung automatisch starten</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="361"/> <location filename="../gui/settingsdialog.cpp" line="363"/>
<source>This is achieved by adding a *.desktop file under &lt;i&gt;~/.config/autostart&lt;/i&gt; so the setting only affects the current user.</source> <source>This is achieved by adding a *.desktop file under &lt;i&gt;~/.config/autostart&lt;/i&gt; so the setting only affects the current user.</source>
<translation>Durch das Hinzufügen einer *.desktop-Datei unter &lt;i&gt;~/.config/autostart&lt;/i&gt; realisiert - betrifft also nur den aktuellen Benutzer.</translation> <translation>Durch das Hinzufügen einer *.desktop-Datei unter &lt;i&gt;~/.config/autostart&lt;/i&gt; realisiert - betrifft also nur den aktuellen Benutzer.</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="363"/> <location filename="../gui/settingsdialog.cpp" line="365"/>
<source>This is achieved by adding a registry key under &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; so the setting only affects the current user. Note that the startup entry is invalidated when moving &lt;i&gt;syncthingtray.exe&lt;/i&gt;.</source> <source>This is achieved by adding a registry key under &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; so the setting only affects the current user. Note that the startup entry is invalidated when moving &lt;i&gt;syncthingtray.exe&lt;/i&gt;.</source>
<translation>Durch das Hinzufügen eines Registry-Schlüssels unter &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; realisiert - betrifft also nur den aktuellen Benutzer.</translation> <translation>Durch das Hinzufügen eines Registry-Schlüssels unter &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; realisiert - betrifft also nur den aktuellen Benutzer.</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="365"/> <location filename="../gui/settingsdialog.cpp" line="367"/>
<source>This feature has not been implemented for your platform (yet).</source> <source>This feature has not been implemented for your platform (yet).</source>
<translation>Diese Funktion wurde für die aktuelle Plattform nicht nicht implementiert.</translation> <translation>Diese Funktion wurde für die aktuelle Plattform nicht nicht implementiert.</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="452"/> <location filename="../gui/settingsdialog.cpp" line="454"/>
<source>unable to modify startup entry</source> <source>unable to modify startup entry</source>
<translation>Fehler beim aktualisieren des Auto-Start-Eintrags</translation> <translation>Fehler beim aktualisieren des Auto-Start-Eintrags</translation>
</message> </message>
@ -170,89 +170,95 @@
<translation>Sekundäre Konfiguration löschen</translation> <translation>Sekundäre Konfiguration löschen</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="112"/> <location filename="../gui/connectionoptionpage.ui" line="122"/>
<source>It is possible to save multiple configurations. This allows switching quickly between multiple Syncthing instances using the connection button in the right corner of the tray menu. The config label is an arbitrary name to identify a configuration and does not have to match the name of the corresponding Syncthing device.</source> <source>It is possible to save multiple configurations. This allows switching quickly between multiple Syncthing instances using the connection button in the right corner of the tray menu. The config label is an arbitrary name to identify a configuration and does not have to match the name of the corresponding Syncthing device.</source>
<translation>Es ist möglich, mehrere Konfigurationen zu speichern. Zwischen diesen kann anschließend über das Verbindungsmenü rechts oben im Tray schnell hin- und hergewechselt werden. Der Name der Konfiguration muss nicht mit dem Namen des entsprechenden Syncthing-Gerätes übereinstimmen.</translation> <translation>Es ist möglich, mehrere Konfigurationen zu speichern. Zwischen diesen kann anschließend über das Verbindungsmenü rechts oben im Tray schnell hin- und hergewechselt werden. Der Name der Konfiguration muss nicht mit dem Namen des entsprechenden Syncthing-Gerätes übereinstimmen.</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="135"/> <location filename="../gui/connectionoptionpage.ui" line="145"/>
<source>Syncthing URL</source> <source>Syncthing URL</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="145"/> <location filename="../gui/connectionoptionpage.ui" line="155"/>
<source>Authentication</source> <source>Authentication</source>
<translation>Authentifizierung</translation> <translation>Authentifizierung</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="158"/> <location filename="../gui/connectionoptionpage.ui" line="168"/>
<source>User</source> <source>User</source>
<translation>Benutzername</translation> <translation>Benutzername</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="175"/> <location filename="../gui/connectionoptionpage.ui" line="185"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="192"/> <location filename="../gui/connectionoptionpage.ui" line="202"/>
<source>API key</source> <source>API key</source>
<translation>API-Schlüssel</translation> <translation>API-Schlüssel</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="202"/> <location filename="../gui/connectionoptionpage.ui" line="212"/>
<source>HTTPS certificate</source> <source>HTTPS certificate</source>
<translation>HTTPS-Zertifikat</translation> <translation>HTTPS-Zertifikat</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="222"/> <location filename="../gui/connectionoptionpage.ui" line="232"/>
<source>Insert values from local Syncthing configuration</source> <source>Insert values from local Syncthing configuration</source>
<translation>Werte aus lokaler Syncthing-Konfiguration einfügen</translation> <translation>Werte aus lokaler Syncthing-Konfiguration einfügen</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="246"/> <location filename="../gui/connectionoptionpage.ui" line="333"/>
<source>Errors</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../gui/connectionoptionpage.ui" line="394"/>
<source>Status</source> <source>Status</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="253"/> <location filename="../gui/connectionoptionpage.ui" line="401"/>
<source>disconnected</source> <source>disconnected</source>
<translation>getrennt</translation> <translation>getrennt</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="260"/> <location filename="../gui/connectionoptionpage.ui" line="408"/>
<source>Apply connection settings and try to reconnect with the currently selected config</source> <source>Apply connection settings and try to reconnect with the currently selected config</source>
<translation>Verbindungseinstellungen übernehmen und mit neuen Einstellungen verbinden</translation> <translation>Verbindungseinstellungen übernehmen und mit neuen Einstellungen verbinden</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="271"/> <location filename="../gui/connectionoptionpage.ui" line="256"/>
<source>Poll interval</source> <source>Poll interval</source>
<translation>Abfrageintervall</translation> <translation>Abfrageintervall</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="286"/> <location filename="../gui/connectionoptionpage.ui" line="293"/>
<source>Traffic</source> <source>Traffic</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="299"/> <location filename="../gui/connectionoptionpage.ui" line="280"/>
<location filename="../gui/connectionoptionpage.ui" line="332"/> <location filename="../gui/connectionoptionpage.ui" line="320"/>
<location filename="../gui/connectionoptionpage.ui" line="368"/> <location filename="../gui/connectionoptionpage.ui" line="346"/>
<location filename="../gui/connectionoptionpage.ui" line="375"/>
<source> ms</source> <source> ms</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="319"/> <location filename="../gui/connectionoptionpage.ui" line="300"/>
<source>Device statistics</source> <source>Device statistics</source>
<translation>Gerätestatistiken</translation> <translation>Gerätestatistiken</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="352"/> <location filename="../gui/connectionoptionpage.ui" line="359"/>
<source>Reconnect</source> <source>Reconnect</source>
<translation>Verbindungsveruch</translation> <translation>Verbindungsveruch</translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="365"/> <location filename="../gui/connectionoptionpage.ui" line="372"/>
<source>no</source> <source>no</source>
<translation>nicht neu verbinden</translation> <translation>nicht neu verbinden</translation>
</message> </message>
@ -272,12 +278,12 @@
<translation>Fehler beim Auslesen der Syncthing-Konfigurationsdatei.</translation> <translation>Fehler beim Auslesen der Syncthing-Konfigurationsdatei.</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="167"/> <location filename="../gui/settingsdialog.cpp" line="169"/>
<source>Unable to load specified certificate &quot;%1&quot;.</source> <source>Unable to load specified certificate &quot;%1&quot;.</source>
<translation>Fehler beim Auslesen des angegebenen Zertifikats: %1</translation> <translation>Fehler beim Auslesen des angegebenen Zertifikats: %1</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="191"/> <location filename="../gui/settingsdialog.cpp" line="193"/>
<source>Instance %1</source> <source>Instance %1</source>
<translation>Instanz %1</translation> <translation>Instanz %1</translation>
</message> </message>
@ -384,13 +390,13 @@
<translation>Log folgen</translation> <translation>Log folgen</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="534"/> <location filename="../gui/settingsdialog.cpp" line="536"/>
<source>Syncthing exited with exit code %1 <source>Syncthing exited with exit code %1
</source> </source>
<translation>Syncthing wurde mit dem Statuscode %1 beendet</translation> <translation>Syncthing wurde mit dem Statuscode %1 beendet</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="537"/> <location filename="../gui/settingsdialog.cpp" line="539"/>
<source>Syncthing crashed with exit code %1 <source>Syncthing crashed with exit code %1
</source> </source>
<translation>Syncthing ist mit dem Statuscode %1 abgestürzt</translation> <translation>Syncthing ist mit dem Statuscode %1 abgestürzt</translation>
@ -444,7 +450,7 @@
<translation>Methode die von Qt verwendet wird (kann vom QPA-Plugin überschrieben werden)</translation> <translation>Methode die von Qt verwendet wird (kann vom QPA-Plugin überschrieben werden)</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="263"/> <location filename="../gui/settingsdialog.cpp" line="265"/>
<source>Configured to use D-Bus notifications but D-Bus notification daemon seems unavailabe.</source> <source>Configured to use D-Bus notifications but D-Bus notification daemon seems unavailabe.</source>
<translation>Benachrichtigungen via D-Bus wurden eingestellt, aber es scheint kein Daemon zu laufen der den Dienst bereitstellt.</translation> <translation>Benachrichtigungen via D-Bus wurden eingestellt, aber es scheint kein Daemon zu laufen der den Dienst bereitstellt.</translation>
</message> </message>
@ -452,22 +458,22 @@
<context> <context>
<name>QtGui::SettingsDialog</name> <name>QtGui::SettingsDialog</name>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="718"/> <location filename="../gui/settingsdialog.cpp" line="720"/>
<source>Tray</source> <source>Tray</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="724"/> <location filename="../gui/settingsdialog.cpp" line="726"/>
<source>Web view</source> <source>Web view</source>
<translation>Weboberfläche</translation> <translation>Weboberfläche</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="730"/> <location filename="../gui/settingsdialog.cpp" line="732"/>
<source>Startup</source> <source>Startup</source>
<translation>Starten</translation> <translation>Starten</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="744"/> <location filename="../gui/settingsdialog.cpp" line="746"/>
<source>Settings</source> <source>Settings</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
@ -508,8 +514,8 @@
<location filename="../gui/systemdoptionpage.ui" line="99"/> <location filename="../gui/systemdoptionpage.ui" line="99"/>
<location filename="../gui/systemdoptionpage.ui" line="154"/> <location filename="../gui/systemdoptionpage.ui" line="154"/>
<location filename="../gui/systemdoptionpage.ui" line="231"/> <location filename="../gui/systemdoptionpage.ui" line="231"/>
<location filename="../gui/settingsdialog.cpp" line="642"/> <location filename="../gui/settingsdialog.cpp" line="644"/>
<location filename="../gui/settingsdialog.cpp" line="657"/> <location filename="../gui/settingsdialog.cpp" line="659"/>
<source>unknown</source> <source>unknown</source>
<translation>unbekannt</translation> <translation>unbekannt</translation>
</message> </message>
@ -543,7 +549,7 @@
<translation>Stoppen</translation> <translation>Stoppen</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="622"/> <location filename="../gui/settingsdialog.cpp" line="624"/>
<source>specified unit is either inactive or doesn&apos;t exist</source> <source>specified unit is either inactive or doesn&apos;t exist</source>
<translation>angegebene Unit ist entweder nicht geladen oder existiert nicht</translation> <translation>angegebene Unit ist entweder nicht geladen oder existiert nicht</translation>
</message> </message>
@ -551,133 +557,133 @@
<context> <context>
<name>QtGui::TrayIcon</name> <name>QtGui::TrayIcon</name>
<message> <message>
<location filename="../gui/trayicon.cpp" line="44"/> <location filename="../gui/trayicon.cpp" line="50"/>
<source> - internal error</source> <source> - internal error</source>
<translation> - interner Fehler</translation> <translation> - interner Fehler</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="45"/> <location filename="../gui/trayicon.cpp" line="51"/>
<source>Syncthing notification</source> <source>Syncthing notification</source>
<translation>Syncthing-Benachrichtigung</translation> <translation>Syncthing-Benachrichtigung</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="50"/> <location filename="../gui/trayicon.cpp" line="56"/>
<source>Web UI</source> <source>Web UI</source>
<translation>Weboberfäche</translation> <translation>Weboberfäche</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="51"/> <location filename="../gui/trayicon.cpp" line="57"/>
<source>Settings</source> <source>Settings</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="52"/> <location filename="../gui/trayicon.cpp" line="58"/>
<source>Rescan all</source> <source>Rescan all</source>
<translation>Alle neu scannen</translation> <translation>Alle neu scannen</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="55"/> <location filename="../gui/trayicon.cpp" line="61"/>
<source>About</source> <source>About</source>
<translation>Über Syncthing Tray</translation> <translation>Über Syncthing Tray</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="57"/> <location filename="../gui/trayicon.cpp" line="63"/>
<source>Close</source> <source>Close</source>
<translation>Beenden</translation> <translation>Beenden</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="139"/> <location filename="../gui/trayicon.cpp" line="149"/>
<source>Error</source> <source>Error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="155"/> <location filename="../gui/trayicon.cpp" line="165"/>
<source>Syncthing notification - click to dismiss</source> <source>Syncthing notification - click to dismiss</source>
<translation>Neue Syncthing-Benachrichtigung</translation> <translation>Neue Syncthing-Benachrichtigung</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="173"/> <location filename="../gui/trayicon.cpp" line="183"/>
<source>Not connected to Syncthing - trying to reconnect every %1 ms</source> <source>Not connected to Syncthing - trying to reconnect every %1 ms</source>
<translation>Nicht mit Syncthing verbunden - versuche alle %1 ms zu verbinden</translation> <translation>Nicht mit Syncthing verbunden - versuche alle %1 ms zu verbinden</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="176"/> <location filename="../gui/trayicon.cpp" line="186"/>
<source>Not connected to Syncthing</source> <source>Not connected to Syncthing</source>
<translation>Nicht mit Syncthing verbunden</translation> <translation>Nicht mit Syncthing verbunden</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="62"/> <location filename="../gui/trayicon.cpp" line="68"/>
<location filename="../gui/trayicon.cpp" line="185"/> <location filename="../gui/trayicon.cpp" line="199"/>
<source>Disconnected from Syncthing</source> <source>Disconnected from Syncthing</source>
<translation>Verbindung zu Syncthing getrennt</translation> <translation>Verbindung zu Syncthing getrennt</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="53"/> <location filename="../gui/trayicon.cpp" line="59"/>
<source>Log</source> <source>Log</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="63"/> <location filename="../gui/trayicon.cpp" line="69"/>
<source>Try to reconnect</source> <source>Try to reconnect</source>
<translation>Versuche Verbindung wieder herzustellen</translation> <translation>Versuche Verbindung wieder herzustellen</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="65"/> <location filename="../gui/trayicon.cpp" line="71"/>
<source>Dismiss</source> <source>Dismiss</source>
<translation>Ignorieren</translation> <translation>Ignorieren</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="65"/> <location filename="../gui/trayicon.cpp" line="71"/>
<source>Show</source> <source>Show</source>
<translation>Zeigen</translation> <translation>Zeigen</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="191"/> <location filename="../gui/trayicon.cpp" line="205"/>
<source>Reconnecting ...</source> <source>Reconnecting ...</source>
<translation>Neu verbinden ...</translation> <translation>Neu verbinden ...</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="200"/> <location filename="../gui/trayicon.cpp" line="214"/>
<source>Synchronization is ongoing but at least one directory is out of sync</source> <source>Synchronization is ongoing but at least one directory is out of sync</source>
<translation>Synchronisiert, aber mind. ein Verzeichnis hat Fehler</translation> <translation>Synchronisiert, aber mind. ein Verzeichnis hat Fehler</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="203"/> <location filename="../gui/trayicon.cpp" line="217"/>
<source>At least one directory is out of sync</source> <source>At least one directory is out of sync</source>
<translation>Mind. ein Verzeichnis hat Fehler</translation> <translation>Mind. ein Verzeichnis hat Fehler</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="207"/> <location filename="../gui/trayicon.cpp" line="221"/>
<source>Notifications available</source> <source>Notifications available</source>
<translation>Es gibt neue Benachrichtigungen</translation> <translation>Es gibt neue Benachrichtigungen</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="212"/> <location filename="../gui/trayicon.cpp" line="226"/>
<source>Syncthing is idling</source> <source>Syncthing is idling</source>
<translation>Syncthing ist im Leerlauf</translation> <translation>Syncthing ist im Leerlauf</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="216"/> <location filename="../gui/trayicon.cpp" line="230"/>
<source>Syncthing is scanning</source> <source>Syncthing is scanning</source>
<translation>Syncthing scannt</translation> <translation>Syncthing scannt</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="220"/> <location filename="../gui/trayicon.cpp" line="234"/>
<source>At least one device is paused</source> <source>At least one device is paused</source>
<translation>Mind. ein Gerät ist pausiert</translation> <translation>Mind. ein Gerät ist pausiert</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="224"/> <location filename="../gui/trayicon.cpp" line="238"/>
<source>Synchronization is ongoing</source> <source>Synchronization is ongoing</source>
<translation>Syncthing synchronisiert</translation> <translation>Syncthing synchronisiert</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="242"/> <location filename="../gui/trayicon.cpp" line="256"/>
<source>Synchronization of %1 complete</source> <source>Synchronization of %1 complete</source>
<translation>%1 wurde synchronisiert</translation> <translation>%1 wurde synchronisiert</translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="249"/> <location filename="../gui/trayicon.cpp" line="263"/>
<source>Synchronization of the following devices complete: <source>Synchronization of the following devices complete:
</source> </source>
<translation>Folgende Verzeichnisse wurden synchronisiert: <translation>Folgende Verzeichnisse wurden synchronisiert:
@ -710,7 +716,7 @@
</message> </message>
<message> <message>
<location filename="../gui/traywidget.ui" line="113"/> <location filename="../gui/traywidget.ui" line="113"/>
<location filename="../gui/traywidget.cpp" line="515"/> <location filename="../gui/traywidget.cpp" line="521"/>
<source>Start</source> <source>Start</source>
<translation>Starten</translation> <translation>Starten</translation>
</message> </message>
@ -742,7 +748,7 @@
<message> <message>
<location filename="../gui/traywidget.ui" line="250"/> <location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.ui" line="270"/> <location filename="../gui/traywidget.ui" line="270"/>
<location filename="../gui/traywidget.cpp" line="476"/> <location filename="../gui/traywidget.cpp" line="481"/>
<source>unknown</source> <source>unknown</source>
<translation>unbekannt</translation> <translation>unbekannt</translation>
</message> </message>
@ -871,17 +877,17 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation> <translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="423"/> <location filename="../gui/traywidget.cpp" line="428"/>
<source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation>Das Verzeichnis &lt;i&gt;%i&lt;/i&gt; existiert nicht (lokal).</translation> <translation>Das Verzeichnis &lt;i&gt;%i&lt;/i&gt; existiert nicht (lokal).</translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="432"/> <location filename="../gui/traywidget.cpp" line="437"/>
<source>The file &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The file &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation>Die Datei &lt;i&gt;%1&lt;/i&gt; existiert nicht (lokal).</translation> <translation>Die Datei &lt;i&gt;%1&lt;/i&gt; existiert nicht (lokal).</translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="511"/> <location filename="../gui/traywidget.cpp" line="517"/>
<source>Stop</source> <source>Stop</source>
<translation>Stoppen</translation> <translation>Stoppen</translation>
</message> </message>
@ -898,7 +904,7 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<name>QtGui::WebViewOptionPage</name> <name>QtGui::WebViewOptionPage</name>
<message> <message>
<location filename="../gui/webviewoptionpage.ui" line="14"/> <location filename="../gui/webviewoptionpage.ui" line="14"/>
<location filename="../gui/settingsdialog.cpp" line="678"/> <location filename="../gui/settingsdialog.cpp" line="680"/>
<source>General</source> <source>General</source>
<translation>Allgemein</translation> <translation>Allgemein</translation>
</message> </message>
@ -928,7 +934,7 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<translation>Lasse Weboberfläche im Hintgergrund weiter offen, wenn Fenster nicht offen</translation> <translation>Lasse Weboberfläche im Hintgergrund weiter offen, wenn Fenster nicht offen</translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="680"/> <location filename="../gui/settingsdialog.cpp" line="682"/>
<source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine. <source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine.
The Web UI will be opened in the default web browser instead.</source> The Web UI will be opened in the default web browser instead.</source>
<translation>Syncthing Tray wurde nicht mit Unterstützung für die eingebaute Anzeige der Weboberfläche unter Verwendung von Qt WebKit oder Qt WebEngine gebaut. <translation>Syncthing Tray wurde nicht mit Unterstützung für die eingebaute Anzeige der Weboberfläche unter Verwendung von Qt WebKit oder Qt WebEngine gebaut.
@ -938,7 +944,7 @@ Die Weboberfläche wird stattdessen im Standardwebrowser geöffnet.</translation
<context> <context>
<name>Settings::restore</name> <name>Settings::restore</name>
<message> <message>
<location filename="../application/settings.cpp" line="69"/> <location filename="../application/settings.cpp" line="70"/>
<source>Unable to load certificate &quot;%1&quot; when restoring settings.</source> <source>Unable to load certificate &quot;%1&quot; when restoring settings.</source>
<translation>Fehler beim laden des Zertifikats &quot;%1&quot; beim wiederherstellen der Einstellungen.</translation> <translation>Fehler beim laden des Zertifikats &quot;%1&quot; beim wiederherstellen der Einstellungen.</translation>
</message> </message>

View File

@ -127,22 +127,22 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="361"/> <location filename="../gui/settingsdialog.cpp" line="363"/>
<source>This is achieved by adding a *.desktop file under &lt;i&gt;~/.config/autostart&lt;/i&gt; so the setting only affects the current user.</source> <source>This is achieved by adding a *.desktop file under &lt;i&gt;~/.config/autostart&lt;/i&gt; so the setting only affects the current user.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="363"/> <location filename="../gui/settingsdialog.cpp" line="365"/>
<source>This is achieved by adding a registry key under &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; so the setting only affects the current user. Note that the startup entry is invalidated when moving &lt;i&gt;syncthingtray.exe&lt;/i&gt;.</source> <source>This is achieved by adding a registry key under &lt;i&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&lt;/i&gt; so the setting only affects the current user. Note that the startup entry is invalidated when moving &lt;i&gt;syncthingtray.exe&lt;/i&gt;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="365"/> <location filename="../gui/settingsdialog.cpp" line="367"/>
<source>This feature has not been implemented for your platform (yet).</source> <source>This feature has not been implemented for your platform (yet).</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="452"/> <location filename="../gui/settingsdialog.cpp" line="454"/>
<source>unable to modify startup entry</source> <source>unable to modify startup entry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -170,89 +170,95 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="112"/> <location filename="../gui/connectionoptionpage.ui" line="122"/>
<source>It is possible to save multiple configurations. This allows switching quickly between multiple Syncthing instances using the connection button in the right corner of the tray menu. The config label is an arbitrary name to identify a configuration and does not have to match the name of the corresponding Syncthing device.</source> <source>It is possible to save multiple configurations. This allows switching quickly between multiple Syncthing instances using the connection button in the right corner of the tray menu. The config label is an arbitrary name to identify a configuration and does not have to match the name of the corresponding Syncthing device.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="135"/> <location filename="../gui/connectionoptionpage.ui" line="145"/>
<source>Syncthing URL</source> <source>Syncthing URL</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="145"/> <location filename="../gui/connectionoptionpage.ui" line="155"/>
<source>Authentication</source> <source>Authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="158"/> <location filename="../gui/connectionoptionpage.ui" line="168"/>
<source>User</source> <source>User</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="175"/> <location filename="../gui/connectionoptionpage.ui" line="185"/>
<source>Password</source> <source>Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="192"/> <location filename="../gui/connectionoptionpage.ui" line="202"/>
<source>API key</source> <source>API key</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="202"/> <location filename="../gui/connectionoptionpage.ui" line="212"/>
<source>HTTPS certificate</source> <source>HTTPS certificate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="222"/> <location filename="../gui/connectionoptionpage.ui" line="232"/>
<source>Insert values from local Syncthing configuration</source> <source>Insert values from local Syncthing configuration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="246"/> <location filename="../gui/connectionoptionpage.ui" line="333"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/connectionoptionpage.ui" line="394"/>
<source>Status</source> <source>Status</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="253"/> <location filename="../gui/connectionoptionpage.ui" line="401"/>
<source>disconnected</source> <source>disconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="260"/> <location filename="../gui/connectionoptionpage.ui" line="408"/>
<source>Apply connection settings and try to reconnect with the currently selected config</source> <source>Apply connection settings and try to reconnect with the currently selected config</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="271"/> <location filename="../gui/connectionoptionpage.ui" line="256"/>
<source>Poll interval</source> <source>Poll interval</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="286"/> <location filename="../gui/connectionoptionpage.ui" line="293"/>
<source>Traffic</source> <source>Traffic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="299"/> <location filename="../gui/connectionoptionpage.ui" line="280"/>
<location filename="../gui/connectionoptionpage.ui" line="332"/> <location filename="../gui/connectionoptionpage.ui" line="320"/>
<location filename="../gui/connectionoptionpage.ui" line="368"/> <location filename="../gui/connectionoptionpage.ui" line="346"/>
<location filename="../gui/connectionoptionpage.ui" line="375"/>
<source> ms</source> <source> ms</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="319"/> <location filename="../gui/connectionoptionpage.ui" line="300"/>
<source>Device statistics</source> <source>Device statistics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="352"/> <location filename="../gui/connectionoptionpage.ui" line="359"/>
<source>Reconnect</source> <source>Reconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/connectionoptionpage.ui" line="365"/> <location filename="../gui/connectionoptionpage.ui" line="372"/>
<source>no</source> <source>no</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -272,12 +278,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="167"/> <location filename="../gui/settingsdialog.cpp" line="169"/>
<source>Unable to load specified certificate &quot;%1&quot;.</source> <source>Unable to load specified certificate &quot;%1&quot;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="191"/> <location filename="../gui/settingsdialog.cpp" line="193"/>
<source>Instance %1</source> <source>Instance %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -384,13 +390,13 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="534"/> <location filename="../gui/settingsdialog.cpp" line="536"/>
<source>Syncthing exited with exit code %1 <source>Syncthing exited with exit code %1
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="537"/> <location filename="../gui/settingsdialog.cpp" line="539"/>
<source>Syncthing crashed with exit code %1 <source>Syncthing crashed with exit code %1
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -444,7 +450,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="263"/> <location filename="../gui/settingsdialog.cpp" line="265"/>
<source>Configured to use D-Bus notifications but D-Bus notification daemon seems unavailabe.</source> <source>Configured to use D-Bus notifications but D-Bus notification daemon seems unavailabe.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -452,22 +458,22 @@
<context> <context>
<name>QtGui::SettingsDialog</name> <name>QtGui::SettingsDialog</name>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="718"/> <location filename="../gui/settingsdialog.cpp" line="720"/>
<source>Tray</source> <source>Tray</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="724"/> <location filename="../gui/settingsdialog.cpp" line="726"/>
<source>Web view</source> <source>Web view</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="730"/> <location filename="../gui/settingsdialog.cpp" line="732"/>
<source>Startup</source> <source>Startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="744"/> <location filename="../gui/settingsdialog.cpp" line="746"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -508,8 +514,8 @@
<location filename="../gui/systemdoptionpage.ui" line="99"/> <location filename="../gui/systemdoptionpage.ui" line="99"/>
<location filename="../gui/systemdoptionpage.ui" line="154"/> <location filename="../gui/systemdoptionpage.ui" line="154"/>
<location filename="../gui/systemdoptionpage.ui" line="231"/> <location filename="../gui/systemdoptionpage.ui" line="231"/>
<location filename="../gui/settingsdialog.cpp" line="642"/> <location filename="../gui/settingsdialog.cpp" line="644"/>
<location filename="../gui/settingsdialog.cpp" line="657"/> <location filename="../gui/settingsdialog.cpp" line="659"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -541,7 +547,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="622"/> <location filename="../gui/settingsdialog.cpp" line="624"/>
<source>specified unit is either inactive or doesn&apos;t exist</source> <source>specified unit is either inactive or doesn&apos;t exist</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -549,133 +555,133 @@
<context> <context>
<name>QtGui::TrayIcon</name> <name>QtGui::TrayIcon</name>
<message> <message>
<location filename="../gui/trayicon.cpp" line="44"/> <location filename="../gui/trayicon.cpp" line="50"/>
<source> - internal error</source> <source> - internal error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="45"/> <location filename="../gui/trayicon.cpp" line="51"/>
<source>Syncthing notification</source> <source>Syncthing notification</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="50"/> <location filename="../gui/trayicon.cpp" line="56"/>
<source>Web UI</source> <source>Web UI</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="51"/> <location filename="../gui/trayicon.cpp" line="57"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="52"/> <location filename="../gui/trayicon.cpp" line="58"/>
<source>Rescan all</source> <source>Rescan all</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="55"/> <location filename="../gui/trayicon.cpp" line="61"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="57"/> <location filename="../gui/trayicon.cpp" line="63"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="139"/> <location filename="../gui/trayicon.cpp" line="149"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="155"/> <location filename="../gui/trayicon.cpp" line="165"/>
<source>Syncthing notification - click to dismiss</source> <source>Syncthing notification - click to dismiss</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="173"/> <location filename="../gui/trayicon.cpp" line="183"/>
<source>Not connected to Syncthing - trying to reconnect every %1 ms</source> <source>Not connected to Syncthing - trying to reconnect every %1 ms</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="176"/> <location filename="../gui/trayicon.cpp" line="186"/>
<source>Not connected to Syncthing</source> <source>Not connected to Syncthing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="62"/> <location filename="../gui/trayicon.cpp" line="68"/>
<location filename="../gui/trayicon.cpp" line="185"/> <location filename="../gui/trayicon.cpp" line="199"/>
<source>Disconnected from Syncthing</source> <source>Disconnected from Syncthing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="53"/> <location filename="../gui/trayicon.cpp" line="59"/>
<source>Log</source> <source>Log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="63"/> <location filename="../gui/trayicon.cpp" line="69"/>
<source>Try to reconnect</source> <source>Try to reconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="65"/> <location filename="../gui/trayicon.cpp" line="71"/>
<source>Dismiss</source> <source>Dismiss</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="65"/> <location filename="../gui/trayicon.cpp" line="71"/>
<source>Show</source> <source>Show</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="191"/> <location filename="../gui/trayicon.cpp" line="205"/>
<source>Reconnecting ...</source> <source>Reconnecting ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="200"/> <location filename="../gui/trayicon.cpp" line="214"/>
<source>Synchronization is ongoing but at least one directory is out of sync</source> <source>Synchronization is ongoing but at least one directory is out of sync</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="203"/> <location filename="../gui/trayicon.cpp" line="217"/>
<source>At least one directory is out of sync</source> <source>At least one directory is out of sync</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="207"/> <location filename="../gui/trayicon.cpp" line="221"/>
<source>Notifications available</source> <source>Notifications available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="212"/> <location filename="../gui/trayicon.cpp" line="226"/>
<source>Syncthing is idling</source> <source>Syncthing is idling</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="216"/> <location filename="../gui/trayicon.cpp" line="230"/>
<source>Syncthing is scanning</source> <source>Syncthing is scanning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="220"/> <location filename="../gui/trayicon.cpp" line="234"/>
<source>At least one device is paused</source> <source>At least one device is paused</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="224"/> <location filename="../gui/trayicon.cpp" line="238"/>
<source>Synchronization is ongoing</source> <source>Synchronization is ongoing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="242"/> <location filename="../gui/trayicon.cpp" line="256"/>
<source>Synchronization of %1 complete</source> <source>Synchronization of %1 complete</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="249"/> <location filename="../gui/trayicon.cpp" line="263"/>
<source>Synchronization of the following devices complete: <source>Synchronization of the following devices complete:
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -707,7 +713,7 @@
</message> </message>
<message> <message>
<location filename="../gui/traywidget.ui" line="113"/> <location filename="../gui/traywidget.ui" line="113"/>
<location filename="../gui/traywidget.cpp" line="515"/> <location filename="../gui/traywidget.cpp" line="521"/>
<source>Start</source> <source>Start</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -739,7 +745,7 @@
<message> <message>
<location filename="../gui/traywidget.ui" line="250"/> <location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.ui" line="270"/> <location filename="../gui/traywidget.ui" line="270"/>
<location filename="../gui/traywidget.cpp" line="476"/> <location filename="../gui/traywidget.cpp" line="481"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -867,17 +873,17 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="423"/> <location filename="../gui/traywidget.cpp" line="428"/>
<source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="432"/> <location filename="../gui/traywidget.cpp" line="437"/>
<source>The file &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The file &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="511"/> <location filename="../gui/traywidget.cpp" line="517"/>
<source>Stop</source> <source>Stop</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -894,7 +900,7 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<name>QtGui::WebViewOptionPage</name> <name>QtGui::WebViewOptionPage</name>
<message> <message>
<location filename="../gui/webviewoptionpage.ui" line="14"/> <location filename="../gui/webviewoptionpage.ui" line="14"/>
<location filename="../gui/settingsdialog.cpp" line="678"/> <location filename="../gui/settingsdialog.cpp" line="680"/>
<source>General</source> <source>General</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -924,7 +930,7 @@ For &lt;i&gt;all&lt;/i&gt; notifications, checkout the log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/settingsdialog.cpp" line="680"/> <location filename="../gui/settingsdialog.cpp" line="682"/>
<source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine. <source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine.
The Web UI will be opened in the default web browser instead.</source> The Web UI will be opened in the default web browser instead.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -933,7 +939,7 @@ The Web UI will be opened in the default web browser instead.</source>
<context> <context>
<name>Settings::restore</name> <name>Settings::restore</name>
<message> <message>
<location filename="../application/settings.cpp" line="69"/> <location filename="../application/settings.cpp" line="70"/>
<source>Unable to load certificate &quot;%1&quot; when restoring settings.</source> <source>Unable to load certificate &quot;%1&quot; when restoring settings.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>