use display name instead of address for security example so the magic search does not search this fake address

outboundproxy configuration #LINQT-2012

fix chat events order

fix image picto only when file does not exist #LINQT-2049/2059
This commit is contained in:
Gaelle Braud 2025-10-09 15:03:40 +02:00
parent 9fd686c2ed
commit 82679ab997
27 changed files with 680 additions and 434 deletions

View file

@ -65,9 +65,11 @@ AccountCore::AccountCore(const std::shared_ptr<linphone::Account> &account) : QO
<< "TLS"
<< "DTLS";
mTransport = LinphoneEnums::toString(LinphoneEnums::fromLinphone(params->getTransport()));
mServerAddress =
mRegistrarUri =
params->getServerAddress() ? Utils::coreStringToAppString(params->getServerAddress()->asString()) : "";
mOutboundProxyEnabled = params->outboundProxyEnabled();
auto routesAddresses = params->getRoutesAddresses();
mOutboundProxyUri =
routesAddresses.empty() ? "" : Utils::coreStringToAppString(routesAddresses.front()->asString());
auto policy = params->getNatPolicy() ? params->getNatPolicy() : account->getCore()->createNatPolicy();
mStunServer = Utils::coreStringToAppString(policy->getStunServer());
mIceEnabled = policy->iceEnabled();
@ -136,8 +138,8 @@ AccountCore::AccountCore(const AccountCore &accountCore) {
mVoicemailAddress = accountCore.mVoicemailAddress;
mTransport = accountCore.mTransport;
mTransports = accountCore.mTransports;
mServerAddress = accountCore.mServerAddress;
mOutboundProxyEnabled = accountCore.mOutboundProxyEnabled;
mRegistrarUri = accountCore.mRegistrarUri;
mOutboundProxyUri = accountCore.mOutboundProxyUri;
mStunServer = accountCore.mStunServer;
mIceEnabled = accountCore.mIceEnabled;
mAvpfEnabled = accountCore.mAvpfEnabled;
@ -201,11 +203,11 @@ void AccountCore::setSelf(QSharedPointer<AccountCore> me) {
mAccountModelConnection->invokeToCore(
[this, value]() { onTransportChanged(LinphoneEnums::toString(LinphoneEnums::fromLinphone(value))); });
});
mAccountModelConnection->makeConnectToModel(&AccountModel::serverAddressChanged, [this](QString value) {
mAccountModelConnection->invokeToCore([this, value]() { onServerAddressChanged(value); });
mAccountModelConnection->makeConnectToModel(&AccountModel::registrarUriChanged, [this](QString value) {
mAccountModelConnection->invokeToCore([this, value]() { onRegistrarUriChanged(value); });
});
mAccountModelConnection->makeConnectToModel(&AccountModel::outboundProxyEnabledChanged, [this](bool value) {
mAccountModelConnection->invokeToCore([this, value]() { onOutboundProxyEnabledChanged(value); });
mAccountModelConnection->makeConnectToModel(&AccountModel::outboundProxyUriChanged, [this](QString value) {
mAccountModelConnection->invokeToCore([this, value]() { onOutboundProxyUriChanged(value); });
});
mAccountModelConnection->makeConnectToModel(&AccountModel::stunServerChanged, [this](QString value) {
mAccountModelConnection->invokeToCore([this, value]() { onStunServerChanged(value); });
@ -307,8 +309,8 @@ void AccountCore::reset(const AccountCore &accountCore) {
setMwiServerAddress(accountCore.mMwiServerAddress);
setVoicemailAddress(accountCore.mVoicemailAddress);
setTransport(accountCore.mTransport);
setServerAddress(accountCore.mServerAddress);
setOutboundProxyEnabled(accountCore.mOutboundProxyEnabled);
setRegistrarUri(accountCore.mRegistrarUri);
setOutboundProxyUri(accountCore.mOutboundProxyUri);
setStunServer(accountCore.mStunServer);
setIceEnabled(accountCore.mIceEnabled);
setAvpfEnabled(accountCore.mAvpfEnabled);
@ -524,12 +526,12 @@ QString AccountCore::getTransport() {
return mTransport;
}
QString AccountCore::getServerAddress() {
return mServerAddress;
QString AccountCore::getRegistrarUri() {
return mRegistrarUri;
}
bool AccountCore::getOutboundProxyEnabled() {
return mOutboundProxyEnabled;
QString AccountCore::getOutboundProxyUri() {
return mOutboundProxyUri;
}
QString AccountCore::getStunServer() {
@ -582,32 +584,24 @@ void AccountCore::setVoicemailAddress(QString value) {
void AccountCore::setTransport(QString value) {
if (mTransport != value) {
mAccountModelConnection->invokeToModel([this, value] {
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
LinphoneEnums::TransportType transport;
LinphoneEnums::fromString(value, &transport);
mAccountModel->setTransport(LinphoneEnums::toLinphone(transport), false);
});
mTransport = value;
emit transportChanged();
setIsSaved(false);
}
}
void AccountCore::setServerAddress(QString value) {
if (mServerAddress != value) {
mAccountModelConnection->invokeToModel([this, value, transportString = mTransport] {
LinphoneEnums::TransportType transport;
LinphoneEnums::fromString(transportString, &transport);
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
mAccountModel->setServerAddress(value, LinphoneEnums::toLinphone(transport), false);
});
void AccountCore::setRegistrarUri(QString value) {
if (mRegistrarUri != value) {
mRegistrarUri = value;
emit registrarUriChanged();
setIsSaved(false);
}
}
void AccountCore::setOutboundProxyEnabled(bool value) {
if (mOutboundProxyEnabled != value) {
mOutboundProxyEnabled = value;
emit outboundProxyEnabledChanged();
void AccountCore::setOutboundProxyUri(QString value) {
if (mOutboundProxyUri != value) {
mOutboundProxyUri = value;
emit outboundProxyUriChanged();
setIsSaved(false);
}
}
@ -715,19 +709,20 @@ void AccountCore::onTransportChanged(QString value) {
}
}
void AccountCore::onServerAddressChanged(QString value) {
if (value != mServerAddress) {
mServerAddress = value;
emit serverAddressChanged();
void AccountCore::onRegistrarUriChanged(QString value) {
if (value != mRegistrarUri) {
mRegistrarUri = value;
emit registrarUriChanged();
}
}
void AccountCore::onOutboundProxyEnabledChanged(bool value) {
if (value != mOutboundProxyEnabled) {
mOutboundProxyEnabled = value;
emit outboundProxyEnabledChanged();
void AccountCore::onOutboundProxyUriChanged(QString value) {
if (value != mOutboundProxyUri) {
mOutboundProxyUri = value;
emit outboundProxyUriChanged();
}
}
void AccountCore::onStunServerChanged(QString value) {
if (value != mStunServer) {
mStunServer = value;
@ -793,8 +788,8 @@ void AccountCore::writeIntoModel(std::shared_ptr<AccountModel> model) const {
LinphoneEnums::TransportType transport;
LinphoneEnums::fromString(mTransport, &transport);
model->setTransport(LinphoneEnums::toLinphone(transport), true);
model->setServerAddress(mServerAddress, LinphoneEnums::toLinphone(transport), true);
model->setOutboundProxyEnabled(mOutboundProxyEnabled);
model->setRegistrarUri(mRegistrarUri);
model->setOutboundProxyUri(mOutboundProxyUri);
model->setStunServer(mStunServer);
model->setIceEnabled(mIceEnabled);
model->setAvpfEnabled(mAvpfEnabled);
@ -810,19 +805,19 @@ void AccountCore::writeFromModel(const std::shared_ptr<AccountModel> &model) {
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
setUnreadCallNotifications(model->getMissedCallsCount());
setUnreadMessageNotifications(model->getUnreadMessagesCount());
setMwiServerAddress(model->getMwiServerAddress());
setTransport(LinphoneEnums::toString(LinphoneEnums::fromLinphone(model->getTransport())));
setServerAddress(model->getServerAddress());
setOutboundProxyEnabled(model->getOutboundProxyEnabled());
setStunServer(model->getStunServer());
setIceEnabled(model->getIceEnabled());
setAvpfEnabled(model->getAvpfEnabled());
setBundleModeEnabled(model->getBundleModeEnabled());
setExpire(model->getExpire());
setConferenceFactoryAddress(model->getConferenceFactoryAddress());
setAudioVideoConferenceFactoryAddress(model->getAudioVideoConferenceFactoryAddress());
setLimeServerUrl(model->getLimeServerUrl());
setVoicemailAddress(model->getVoicemailAddress());
onMwiServerAddressChanged(model->getMwiServerAddress());
onTransportChanged(LinphoneEnums::toString(LinphoneEnums::fromLinphone(model->getTransport())));
onRegistrarUriChanged(model->getRegistrarUri());
onOutboundProxyUriChanged(model->getOutboundProxyUri());
onStunServerChanged(model->getStunServer());
onIceEnabledChanged(model->getIceEnabled());
onAvpfEnabledChanged(model->getAvpfEnabled());
onBundleModeEnabledChanged(model->getBundleModeEnabled());
onExpireChanged(model->getExpire());
onConferenceFactoryAddressChanged(model->getConferenceFactoryAddress());
onAudioVideoConferenceFactoryAddressChanged(model->getAudioVideoConferenceFactoryAddress());
onLimeServerUrlChanged(model->getLimeServerUrl());
onVoicemailAddressChanged(model->getVoicemailAddress());
}
void AccountCore::save() {

View file

@ -58,9 +58,9 @@ public:
QString mwiServerAddress READ getMwiServerAddress WRITE setMwiServerAddress NOTIFY mwiServerAddressChanged)
Q_PROPERTY(QStringList transports READ getTransports CONSTANT)
Q_PROPERTY(QString transport READ getTransport WRITE setTransport NOTIFY transportChanged)
Q_PROPERTY(QString serverAddress READ getServerAddress WRITE setServerAddress NOTIFY serverAddressChanged)
Q_PROPERTY(bool outboundProxyEnabled READ getOutboundProxyEnabled WRITE setOutboundProxyEnabled NOTIFY
outboundProxyEnabledChanged)
Q_PROPERTY(QString registrarUri READ getRegistrarUri WRITE setRegistrarUri NOTIFY registrarUriChanged)
Q_PROPERTY(
QString outboundProxyUri READ getOutboundProxyUri WRITE setOutboundProxyUri NOTIFY outboundProxyUriChanged)
Q_PROPERTY(QString stunServer READ getStunServer WRITE setStunServer NOTIFY stunServerChanged)
Q_PROPERTY(bool iceEnabled READ getIceEnabled WRITE setIceEnabled NOTIFY iceEnabledChanged)
Q_PROPERTY(bool avpfEnabled READ getAvpfEnabled WRITE setAvpfEnabled NOTIFY avpfEnabledChanged)
@ -132,8 +132,8 @@ public:
QString getMwiServerAddress();
QString getTransport();
QStringList getTransports();
QString getServerAddress();
bool getOutboundProxyEnabled();
QString getRegistrarUri();
QString getOutboundProxyUri();
QString getStunServer();
bool getIceEnabled();
bool getAvpfEnabled();
@ -146,8 +146,8 @@ public:
void setMwiServerAddress(QString value);
void setTransport(QString value);
void setServerAddress(QString value);
void setOutboundProxyEnabled(bool value);
void setRegistrarUri(QString value);
void setOutboundProxyUri(QString value);
void setStunServer(QString value);
void setIceEnabled(bool value);
void setAvpfEnabled(bool value);
@ -165,8 +165,8 @@ public:
void onMwiServerAddressChanged(QString value);
void onVoicemailAddressChanged(QString value);
void onTransportChanged(QString value);
void onServerAddressChanged(QString value);
void onOutboundProxyEnabledChanged(bool value);
void onRegistrarUriChanged(QString value);
void onOutboundProxyUriChanged(QString value);
void onStunServerChanged(QString value);
void onIceEnabledChanged(bool value);
void onAvpfEnabledChanged(bool value);
@ -206,8 +206,8 @@ signals:
void notificationsAllowedChanged();
void mwiServerAddressChanged();
void transportChanged();
void serverAddressChanged();
void outboundProxyEnabledChanged();
void registrarUriChanged();
void outboundProxyUriChanged();
void stunServerChanged();
void iceEnabledChanged();
void avpfEnabledChanged();
@ -257,8 +257,8 @@ private:
QString mMwiServerAddress;
QString mTransport;
QStringList mTransports;
QString mServerAddress;
bool mOutboundProxyEnabled;
QString mRegistrarUri;
QString mOutboundProxyUri;
QString mStunServer;
bool mIceEnabled;
bool mAvpfEnabled;

View file

@ -21,9 +21,9 @@
#ifndef ACCOUNT_DEVICE_LIST_H_
#define ACCOUNT_DEVICE_LIST_H_
#include "../proxy/ListProxy.hpp"
#include "AccountDeviceCore.hpp"
#include "core/account/AccountGui.hpp"
#include "core/proxy/ListProxy.hpp"
#include "model/account/AccountManagerServicesModel.hpp"
#include "tool/AbstractObject.hpp"
#include "tool/thread/SafeConnection.hpp"

View file

@ -163,9 +163,9 @@ void EventLogList::displayMore() {
}
mCoreModelConnection->invokeToCore([this, events, newCount] {
int currentCount = mList.count();
for (auto &event : *events) {
connectItem(event);
add(event);
for (auto it = events->end() - 1; it >= events->begin(); --it) {
connectItem(*it);
prepend(*it);
}
});
});

View file

@ -65,7 +65,8 @@ void LoginPage::login(const QString &username,
QString displayName,
QString domain,
LinphoneEnums::TransportType transportType,
QString serverAddress,
QString registrarUri,
QString outboundProxyAddress,
QString connectionId) {
setErrorMessage("");
App::postModelAsync([=]() {
@ -114,7 +115,7 @@ void LoginPage::login(const QString &username,
QString error;
if (!accountManager->login(username, password, displayName, domain, LinphoneEnums::toLinphone(transportType),
&error, serverAddress, connectionId)) {
&error, registrarUri, outboundProxyAddress, connectionId)) {
setErrorMessage(error);
emit accountManager->registrationStateChanged(linphone::RegistrationState::None, linphone::Reason::None);
}

View file

@ -42,7 +42,8 @@ public:
QString displayName = QString(),
QString domain = QString(),
LinphoneEnums::TransportType transportType = LinphoneEnums::TransportType::Tls,
QString serverAddress = QString(),
QString registrarUri = QString(),
QString outboundProxyAddress = QString(),
QString connectionId = QString());
linphone::RegistrationState getRegistrationState() const;

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_13014_8071)">
<path d="M12 12.75C13.63 12.75 15.07 13.14 16.24 13.65C17.32 14.13 18 15.21 18 16.38V18H6V16.39C6 15.21 6.68 14.13 7.76 13.66C8.93 13.14 10.37 12.75 12 12.75ZM4 13C5.1 13 6 12.1 6 11C6 9.9 5.1 9 4 9C2.9 9 2 9.9 2 11C2 12.1 2.9 13 4 13ZM5.13 14.1C4.76 14.04 4.39 14 4 14C3.01 14 2.07 14.21 1.22 14.58C0.48 14.9 0 15.62 0 16.43V18H4.5V16.39C4.5 15.56 4.73 14.78 5.13 14.1ZM20 13C21.1 13 22 12.1 22 11C22 9.9 21.1 9 20 9C18.9 9 18 9.9 18 11C18 12.1 18.9 13 20 13ZM24 16.43C24 15.62 23.52 14.9 22.78 14.58C21.93 14.21 20.99 14 20 14C19.61 14 19.24 14.04 18.87 14.1C19.27 14.78 19.5 15.56 19.5 16.39V18H24V16.43ZM12 6C13.66 6 15 7.34 15 9C15 10.66 13.66 12 12 12C10.34 12 9 10.66 9 9C9 7.34 10.34 6 12 6Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_13014_8071">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 967 B

View file

@ -27,45 +27,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="436"/>
<location filename="../../core/account/AccountCore.cpp" line="438"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Verbunden</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="439"/>
<location filename="../../core/account/AccountCore.cpp" line="441"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>Aktualisiere</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="442"/>
<location filename="../../core/account/AccountCore.cpp" line="444"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Verbinde</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="445"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="451"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Deaktiviert</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="483"/>
<location filename="../../core/account/AccountCore.cpp" line="485"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>Sie sind online und erreichbar.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="486"/>
<location filename="../../core/account/AccountCore.cpp" line="488"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Verbindungsfehler, überprüfen Sie Ihre Einstellungen.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="490"/>
<location filename="../../core/account/AccountCore.cpp" line="492"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Konto deaktiviert, Sie erhalten keine Anrufe oder Nachrichten.</translation>
@ -83,43 +83,43 @@
<context>
<name>AccountManager</name>
<message>
<location filename="../../model/account/AccountManager.cpp" line="86"/>
<location filename="../../model/account/AccountManager.cpp" line="87"/>
<source>assistant_account_login_already_connected_error</source>
<extracomment>&quot;The account is already connected&quot;</extracomment>
<translation>Das Konto ist bereits verbunden</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="104"/>
<location filename="../../model/account/AccountManager.cpp" line="109"/>
<source>assistant_account_login_proxy_address_error</source>
<extracomment>&quot;Unable to create proxy address. Please check the domain name.&quot;</extracomment>
<translation>Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="117"/>
<location filename="../../model/account/AccountManager.cpp" line="122"/>
<source>assistant_account_login_address_configuration_error</source>
<extracomment>&quot;Unable to configure address: `%1`.&quot;</extracomment>
<translation>Folgende Adresse konnte nicht konfiguriert werden: `%1`.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="124"/>
<location filename="../../model/account/AccountManager.cpp" line="129"/>
<source>assistant_account_login_params_configuration_error</source>
<extracomment>&quot;Unable to configure account settings.&quot;</extracomment>
<translation>Kontoeinstellungen konnten nicht konfiguriert werden.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="148"/>
<location filename="../../model/account/AccountManager.cpp" line="153"/>
<source>assistant_account_login_forbidden_error</source>
<extracomment>&quot;Username and password do not match&quot;</extracomment>
<translation>Benutzername und Passwort stimmen nicht überein</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="150"/>
<location filename="../../model/account/AccountManager.cpp" line="155"/>
<source>assistant_account_login_error</source>
<extracomment>&quot;Error during connection, please verify your parameters&quot;</extracomment>
<translation>Fehler bei der Verbindung</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="163"/>
<location filename="../../model/account/AccountManager.cpp" line="168"/>
<source>assistant_account_add_error</source>
<extracomment>&quot;Unable to add account.&quot;</extracomment>
<translation>Konto konnte nicht hinzugefügt werden.</translation>
@ -134,25 +134,31 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="293"/>
<location filename="../../model/account/AccountModel.cpp" line="292"/>
<source>set_server_address_failed_error_message</source>
<extracomment>&quot;Unable to set server address, failed creating address from %1&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="398"/>
<location filename="../../model/account/AccountModel.cpp" line="309"/>
<source>set_outbound_proxy_uri_failed_error_message</source>
<extracomment>Unable to set outbound proxy uri, failed creating address from %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="418"/>
<source>set_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the conversation server address, failed creating address from %1&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="420"/>
<location filename="../../model/account/AccountModel.cpp" line="440"/>
<source>set_audio_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the meeting server address, failed creating address from %1&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="467"/>
<location filename="../../model/account/AccountModel.cpp" line="487"/>
<source>set_voicemail_address_failed_error_message</source>
<extracomment>Unable to set voicemail address, failed creating address from %1</extracomment>
<translation type="unfinished"></translation>
@ -325,104 +331,131 @@
<context>
<name>AccountSettingsParametersLayout</name>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="14"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="17"/>
<source>settings_title</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="18"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="21"/>
<source>settings_account_title</source>
<translation>Kontoeinstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="32"/>
<source>info_popup_invalid_registrar_uri_message</source>
<extracomment>Registrar uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="34"/>
<source>info_popup_invalid_outbound_proxy_message</source>
<extracomment>Outbound proxy uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="35"/>
<source>info_popup_error_title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="45"/>
<source>information_popup_success_title</source>
<translation>Erfolg</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="36"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="47"/>
<source>contact_editor_saved_changes_toast</source>
<extracomment>&quot;Modifications sauvegardés&quot;</extracomment>
<translation>Änderungen gespeichert</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="43"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="54"/>
<source>information_popup_error_title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="63"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="74"/>
<source>account_settings_mwi_uri_title</source>
<extracomment>&quot;URI du serveur de messagerie vocale&quot;</extracomment>
<translation>Voicemail-Server-URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="84"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="95"/>
<source>account_settings_voicemail_uri_title</source>
<extracomment>&quot;URI de messagerie vocale&quot;</extracomment>
<translation>Voicemail-URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="108"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="120"/>
<source>account_settings_transport_title</source>
<extracomment>&quot;Transport&quot;</extracomment>
<translation>Transport</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="122"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="127"/>
<source>account_settings_registrar_uri_title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="140"/>
<source>account_settings_sip_proxy_url_title</source>
<translation>Proxy-Server-URL</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="129"/>
<source>account_settings_outbound_proxy_title</source>
<extracomment>&quot;Serveur mandataire sortant&quot;</extracomment>
<translation>Ausgehender Proxy-Server</translation>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="145"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="138"/>
<source>account_settings_outbound_proxy_title</source>
<extracomment>&quot;Outbound proxy enabled&quot;</extracomment>
<translation type="vanished">Ausgehender Proxy-Server</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="157"/>
<source>account_settings_stun_server_url_title</source>
<extracomment>&quot;Adresse du serveur STUN&quot;</extracomment>
<translation>STUN-Server-Adresse</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="162"/>
<source>account_settings_enable_ice_title</source>
<extracomment>&quot;Activer ICE&quot;</extracomment>
<translation>ICE aktivieren</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="149"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="168"/>
<source>account_settings_avpf_title</source>
<extracomment>&quot;AVPF&quot;</extracomment>
<translation>AVPF</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="174"/>
<source>account_settings_bundle_mode_title</source>
<extracomment>&quot;Mode bundle&quot;</extracomment>
<translation>Bundle-Modus</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="164"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="183"/>
<source>account_settings_expire_title</source>
<extracomment>&quot;Expiration (en seconde)&quot;</extracomment>
<translation>Ablaufzeit (in Sekunden)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="175"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="194"/>
<source>account_settings_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de conversations&quot;</extracomment>
<translation>Konferenz-Factory-URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="192"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="211"/>
<source>account_settings_audio_video_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de réunions&quot;</extracomment>
<translation>Video-Konferenz-Factory-URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="206"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="225"/>
<source>account_settings_lime_server_url_title</source>
<extracomment>&quot;URL du serveur déchange de clés de chiffrement&quot;</extracomment>
<translation>Lime-Server-URL</translation>
@ -546,19 +579,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favoriten</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="323"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Kontakte</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="376"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="375"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Vorschläge</translation>
@ -900,42 +933,42 @@
<context>
<name>CallLayout</name>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="70"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="75"/>
<source>meeting_event_conference_destroyed</source>
<extracomment>&quot;Vous avez quitté la conférence&quot;</extracomment>
<translation>Sie haben die Besprechung verlassen</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="73"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="78"/>
<source>call_ended_by_user</source>
<extracomment>&quot;Vous avez terminé l&apos;appel&quot;</extracomment>
<translation>Sie haben den Anruf beendet</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="76"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="81"/>
<source>call_ended_by_remote</source>
<extracomment>&quot;Votre correspondant a terminé l&apos;appel&quot;</extracomment>
<translation>Der Anrufer hat das Gespräch beendet</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="152"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="157"/>
<source>conference_call_empty</source>
<extracomment>&quot;En attente d&apos;autres participants&quot;</extracomment>
<translation>Warten auf weitere Teilnehmer</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="170"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="175"/>
<source>conference_share_link_title</source>
<extracomment>&quot;Partager le lien&quot;</extracomment>
<translation>Link teilen</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="176"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="181"/>
<source>copied</source>
<translation>Kopiert</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="178"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="183"/>
<source>information_popup_meeting_address_copied_to_clipboard</source>
<extracomment>Le lien de la réunion a é copié dans le presse-papier</extracomment>
<translation>Der Besprechungs-Link wurde in die Zwischenablage kopiert</translation>
@ -1937,25 +1970,25 @@
<context>
<name>ChatMessage</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="429"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="430"/>
<source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="431"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="432"/>
<source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="439"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="440"/>
<source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="441"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="442"/>
<source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment>
<translation type="unfinished"></translation>
@ -1991,25 +2024,25 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="404"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="405"/>
<source>chat_message_reception_info</source>
<extracomment>&quot;Reception info&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="416"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="417"/>
<source>chat_message_reply</source>
<extracomment>Reply</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="448"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="449"/>
<source>chat_message_forward</source>
<extracomment>Forward</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="465"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="466"/>
<source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation type="unfinished"></translation>
@ -2171,45 +2204,45 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="161"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="171"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="169"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="211"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="209"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation>
@ -3197,13 +3230,13 @@ Error</extracomment>
<context>
<name>DecoratedTextField</name>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="54"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="56"/>
<source>textfield_error_message_cannot_be_empty</source>
<extracomment>&quot;ne peut être vide&quot;</extracomment>
<translation>darf nicht leer sein</translation>
</message>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="57"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="59"/>
<source>textfield_error_message_unknown_format</source>
<extracomment>&quot;Format non reconnu&quot;</extracomment>
<translation>Unbekanntes Format</translation>
@ -3490,50 +3523,50 @@ Error</extracomment>
<context>
<name>HelpPage</name>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="39"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="40"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Hilfe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="53"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="111"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="70"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="128"/>
<source>help_about_title</source>
<extracomment>&quot;À propos de %1&quot;</extracomment>
<translation>Über %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="67"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="84"/>
<source>help_about_privacy_policy_title</source>
<extracomment>&quot;Règles de confidentialité&quot;</extracomment>
<translation>Datenschutzrichtlinie</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="69"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="86"/>
<source>help_about_privacy_policy_subtitle</source>
<extracomment>Quelles informations %1 collecte et utilise</extracomment>
<translation>Welche Informationen sammelt und verwendet %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="79"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="96"/>
<source>help_about_version_title</source>
<extracomment>&quot;Version&quot;</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="87"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="104"/>
<source>help_about_gpl_licence_title</source>
<extracomment>&quot;Licences GPLv3&quot;</extracomment>
<translation>GPLv3-Lizenzen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="98"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="115"/>
<source>help_about_contribute_translations_title</source>
<extracomment>&quot;Contribuer à la traduction de %1&quot;</extracomment>
<translation>Zur Übersetzung von %1 beitragen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="123"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="140"/>
<source>help_troubleshooting_title</source>
<extracomment>&quot;Dépannage&quot;</extracomment>
<translation>Fehlerbehebung</translation>
@ -3819,7 +3852,7 @@ Error</extracomment>
<translation>Link zur Remote-Konfiguration</translation>
</message>
<message>
<location filename="../../core/login/LoginPage.cpp" line="85"/>
<location filename="../../core/login/LoginPage.cpp" line="86"/>
<source>default_account_connection_state_error_toast</source>
<translation>Fehler bei der Verbindung</translation>
</message>
@ -3906,31 +3939,31 @@ Error</extracomment>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="489"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Aufnahmen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="504"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Hilfe</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="521"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>App beenden</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="531"/>
<source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>%1 beenden?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="555"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="560"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Konto hinzufügen</translation>
@ -4279,13 +4312,13 @@ Error</extracomment>
<translation>Zeitzone</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="899"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="898"/>
<source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organisator</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="918"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="917"/>
<source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Besprechung beitreten</translation>
@ -5028,13 +5061,25 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="375"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Proxy server URL&quot;</extracomment>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="386"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="377"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="388"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="400"/>
<source>login_id</source>
<extracomment>&quot;Connexion ID (if different)&quot;</extracomment>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
@ -5214,15 +5259,14 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<translation>Besprechungen</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="27"/>
<source>settings_security_title</source>
<extracomment>&quot;Affichage&quot; &quot;Security&quot;</extracomment>
<translation type="unfinished">Sicherheit / Verschlüsselung</translation>
<translation type="obsolete">Sicherheit / Verschlüsselung</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="29"/>
<source>settings_network_title</source>
<extracomment>&quot;Réseau&quot;</extracomment>
<extracomment>&quot;Affichage&quot; &quot;Security&quot; &quot;Réseau&quot;</extracomment>
<translation>Netzwerk</translation>
</message>
<message>
@ -5324,7 +5368,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<context>
<name>Utils</name>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2271"/>
<location filename="../../tool/Utils.cpp" line="2275"/>
<source>nMinute</source>
<translation type="unfinished">
<numerusform></numerusform>
@ -5332,7 +5376,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2272"/>
<location filename="../../tool/Utils.cpp" line="2276"/>
<source>nHour</source>
<translation type="unfinished">
<numerusform></numerusform>
@ -5340,8 +5384,8 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2273"/>
<location filename="../../tool/Utils.cpp" line="2274"/>
<location filename="../../tool/Utils.cpp" line="2277"/>
<location filename="../../tool/Utils.cpp" line="2278"/>
<source>nDay</source>
<translation type="unfinished">
<numerusform></numerusform>
@ -5349,7 +5393,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2275"/>
<location filename="../../tool/Utils.cpp" line="2279"/>
<source>nWeek</source>
<translation type="unfinished">
<numerusform></numerusform>
@ -5357,7 +5401,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2276"/>
<location filename="../../tool/Utils.cpp" line="2280"/>
<source>nSeconds</source>
<translation type="unfinished">
<numerusform></numerusform>

View file

@ -27,45 +27,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="436"/>
<location filename="../../core/account/AccountCore.cpp" line="438"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connected</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="439"/>
<location filename="../../core/account/AccountCore.cpp" line="441"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>Refreshing</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="442"/>
<location filename="../../core/account/AccountCore.cpp" line="444"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connecting</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="445"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="451"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Disabled</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="483"/>
<location filename="../../core/account/AccountCore.cpp" line="485"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>You are online and reachable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="486"/>
<location filename="../../core/account/AccountCore.cpp" line="488"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Connection error, check your settings.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="490"/>
<location filename="../../core/account/AccountCore.cpp" line="492"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Account disabled, you will not receive calls or messages.</translation>
@ -83,43 +83,43 @@
<context>
<name>AccountManager</name>
<message>
<location filename="../../model/account/AccountManager.cpp" line="86"/>
<location filename="../../model/account/AccountManager.cpp" line="87"/>
<source>assistant_account_login_already_connected_error</source>
<extracomment>&quot;The account is already connected&quot;</extracomment>
<translation>The account is already connected</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="104"/>
<location filename="../../model/account/AccountManager.cpp" line="109"/>
<source>assistant_account_login_proxy_address_error</source>
<extracomment>&quot;Unable to create proxy address. Please check the domain name.&quot;</extracomment>
<translation>Unable to create proxy address. Please check the domain name.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="117"/>
<location filename="../../model/account/AccountManager.cpp" line="122"/>
<source>assistant_account_login_address_configuration_error</source>
<extracomment>&quot;Unable to configure address: `%1`.&quot;</extracomment>
<translation>Unable to configure address: `%1`.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="124"/>
<location filename="../../model/account/AccountManager.cpp" line="129"/>
<source>assistant_account_login_params_configuration_error</source>
<extracomment>&quot;Unable to configure account settings.&quot;</extracomment>
<translation>Unable to configure account settings.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="148"/>
<location filename="../../model/account/AccountManager.cpp" line="153"/>
<source>assistant_account_login_forbidden_error</source>
<extracomment>&quot;Username and password do not match&quot;</extracomment>
<translation>Username and password do not match</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="150"/>
<location filename="../../model/account/AccountManager.cpp" line="155"/>
<source>assistant_account_login_error</source>
<extracomment>&quot;Error during connection, please verify your parameters&quot;</extracomment>
<translation>Error during connection</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="163"/>
<location filename="../../model/account/AccountManager.cpp" line="168"/>
<source>assistant_account_add_error</source>
<extracomment>&quot;Unable to add account.&quot;</extracomment>
<translation>Unable to add account.</translation>
@ -134,25 +134,31 @@
<translation>Unable to set voicemail server address, failed creating address from %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="293"/>
<location filename="../../model/account/AccountModel.cpp" line="292"/>
<source>set_server_address_failed_error_message</source>
<extracomment>&quot;Unable to set server address, failed creating address from %1&quot;</extracomment>
<translation>Unable to set server address, failed creating address from %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="398"/>
<location filename="../../model/account/AccountModel.cpp" line="309"/>
<source>set_outbound_proxy_uri_failed_error_message</source>
<extracomment>Unable to set outbound proxy uri, failed creating address from %1</extracomment>
<translation>Unable to set outbound proxy uri, failed creating address from %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="418"/>
<source>set_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the conversation server address, failed creating address from %1&quot;</extracomment>
<translation>Unable to set the conversation server address, failed creating address from %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="420"/>
<location filename="../../model/account/AccountModel.cpp" line="440"/>
<source>set_audio_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the meeting server address, failed creating address from %1&quot;</extracomment>
<translation>Unable to set the meeting server address, failed creating address from %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="467"/>
<location filename="../../model/account/AccountModel.cpp" line="487"/>
<source>set_voicemail_address_failed_error_message</source>
<extracomment>Unable to set voicemail address, failed creating address from %1</extracomment>
<translation>Unable to set voicemail address, failed creating address from %1</translation>
@ -325,104 +331,131 @@
<context>
<name>AccountSettingsParametersLayout</name>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="14"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="17"/>
<source>settings_title</source>
<translation>Settings</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="18"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="21"/>
<source>settings_account_title</source>
<translation>Account settings</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="32"/>
<source>info_popup_invalid_registrar_uri_message</source>
<extracomment>Registrar uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation>Registrar uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="34"/>
<source>info_popup_invalid_outbound_proxy_message</source>
<extracomment>Outbound proxy uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation>Outbound proxy uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="35"/>
<source>info_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="45"/>
<source>information_popup_success_title</source>
<translation>Success</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="36"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="47"/>
<source>contact_editor_saved_changes_toast</source>
<extracomment>&quot;Modifications sauvegardés&quot;</extracomment>
<translation>Changes saved</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="43"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="54"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="63"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="74"/>
<source>account_settings_mwi_uri_title</source>
<extracomment>&quot;URI du serveur de messagerie vocale&quot;</extracomment>
<translation>Voicemail server URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="84"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="95"/>
<source>account_settings_voicemail_uri_title</source>
<extracomment>&quot;URI de messagerie vocale&quot;</extracomment>
<translation>Voicemail URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="108"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="120"/>
<source>account_settings_transport_title</source>
<extracomment>&quot;Transport&quot;</extracomment>
<translation>Transport</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="122"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="127"/>
<source>account_settings_registrar_uri_title</source>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="140"/>
<source>account_settings_sip_proxy_url_title</source>
<translation>Proxy server URL</translation>
<translation>Outbound SIP Proxy URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="145"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="129"/>
<source>account_settings_outbound_proxy_title</source>
<extracomment>&quot;Serveur mandataire sortant&quot;</extracomment>
<translation>Outgoing proxy server</translation>
<extracomment>&quot;Outbound proxy enabled&quot;</extracomment>
<translation type="vanished">Outbound proxy server enabled</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="138"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="157"/>
<source>account_settings_stun_server_url_title</source>
<extracomment>&quot;Adresse du serveur STUN&quot;</extracomment>
<translation>STUN server address</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="162"/>
<source>account_settings_enable_ice_title</source>
<extracomment>&quot;Activer ICE&quot;</extracomment>
<translation>Enable ICE</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="149"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="168"/>
<source>account_settings_avpf_title</source>
<extracomment>&quot;AVPF&quot;</extracomment>
<translation>AVPF</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="174"/>
<source>account_settings_bundle_mode_title</source>
<extracomment>&quot;Mode bundle&quot;</extracomment>
<translation>Bundle mode</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="164"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="183"/>
<source>account_settings_expire_title</source>
<extracomment>&quot;Expiration (en seconde)&quot;</extracomment>
<translation>Expiration (in seconds)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="175"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="194"/>
<source>account_settings_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de conversations&quot;</extracomment>
<translation>Conference factory URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="192"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="211"/>
<source>account_settings_audio_video_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de réunions&quot;</extracomment>
<translation>Video conference factory uri</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="206"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="225"/>
<source>account_settings_lime_server_url_title</source>
<extracomment>&quot;URL du serveur déchange de clés de chiffrement&quot;</extracomment>
<translation>Lime server URL</translation>
@ -546,19 +579,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favorites</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="323"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="376"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="375"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Suggestions</translation>
@ -880,42 +913,42 @@
<context>
<name>CallLayout</name>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="70"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="75"/>
<source>meeting_event_conference_destroyed</source>
<extracomment>&quot;Vous avez quitté la conférence&quot;</extracomment>
<translation>You have left the meeting</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="73"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="78"/>
<source>call_ended_by_user</source>
<extracomment>&quot;Vous avez terminé l&apos;appel&quot;</extracomment>
<translation>You have ended the call</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="76"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="81"/>
<source>call_ended_by_remote</source>
<extracomment>&quot;Votre correspondant a terminé l&apos;appel&quot;</extracomment>
<translation>Your caller has ended the call</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="152"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="157"/>
<source>conference_call_empty</source>
<extracomment>&quot;En attente d&apos;autres participants&quot;</extracomment>
<translation>Waiting for other participants</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="170"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="175"/>
<source>conference_share_link_title</source>
<extracomment>&quot;Partager le lien&quot;</extracomment>
<translation>Share link</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="176"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="181"/>
<source>copied</source>
<translation>Copied</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="178"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="183"/>
<source>information_popup_meeting_address_copied_to_clipboard</source>
<extracomment>Le lien de la réunion a é copié dans le presse-papier</extracomment>
<translation>The meeting link has been copied to the clipboard</translation>
@ -1899,25 +1932,25 @@
<context>
<name>ChatMessage</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="429"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="430"/>
<source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copy selection</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="431"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="432"/>
<source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment>
<translation>Copy</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="439"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="440"/>
<source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment>
<translation>Copied</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="441"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="442"/>
<source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment>
<translation>in clipboard</translation>
@ -1953,25 +1986,25 @@
<translation>You replied</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="404"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="405"/>
<source>chat_message_reception_info</source>
<extracomment>&quot;Reception info&quot;</extracomment>
<translation>Reception info</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="416"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="417"/>
<source>chat_message_reply</source>
<extracomment>Reply</extracomment>
<translation>Reply</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="448"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="449"/>
<source>chat_message_forward</source>
<extracomment>Forward</extracomment>
<translation>Forward</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="465"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="466"/>
<source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Delete</translation>
@ -2133,38 +2166,38 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Find message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>No result found</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>First result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Last result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="161"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>End to end encrypted chat</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="171"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="169"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -2172,7 +2205,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="211"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="209"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation>
@ -3110,13 +3143,13 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>DecoratedTextField</name>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="54"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="56"/>
<source>textfield_error_message_cannot_be_empty</source>
<extracomment>&quot;ne peut être vide&quot;</extracomment>
<translation>can not be empty</translation>
</message>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="57"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="59"/>
<source>textfield_error_message_unknown_format</source>
<extracomment>&quot;Format non reconnu&quot;</extracomment>
<translation>Unknown format</translation>
@ -3400,50 +3433,50 @@ Expiration : %1</translation>
<context>
<name>HelpPage</name>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="39"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="40"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Help</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="53"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="111"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="70"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="128"/>
<source>help_about_title</source>
<extracomment>&quot;À propos de %1&quot;</extracomment>
<translation>About %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="67"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="84"/>
<source>help_about_privacy_policy_title</source>
<extracomment>&quot;Règles de confidentialité&quot;</extracomment>
<translation>Privacy Policy</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="69"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="86"/>
<source>help_about_privacy_policy_subtitle</source>
<extracomment>Quelles informations %1 collecte et utilise</extracomment>
<translation>What information does %1 collect and use</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="79"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="96"/>
<source>help_about_version_title</source>
<extracomment>&quot;Version&quot;</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="87"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="104"/>
<source>help_about_gpl_licence_title</source>
<extracomment>&quot;Licences GPLv3&quot;</extracomment>
<translation>GPLv3 licences</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="98"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="115"/>
<source>help_about_contribute_translations_title</source>
<extracomment>&quot;Contribuer à la traduction de %1&quot;</extracomment>
<translation>Contribute to the translation of %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="123"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="140"/>
<source>help_troubleshooting_title</source>
<extracomment>&quot;Dépannage&quot;</extracomment>
<translation>Troubleshooting</translation>
@ -3729,7 +3762,7 @@ Expiration : %1</translation>
<translation>Remote provisioning link</translation>
</message>
<message>
<location filename="../../core/login/LoginPage.cpp" line="85"/>
<location filename="../../core/login/LoginPage.cpp" line="86"/>
<source>default_account_connection_state_error_toast</source>
<translation>Error during connection</translation>
</message>
@ -3816,31 +3849,31 @@ Expiration : %1</translation>
<translation>Settings</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="489"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Records</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="504"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Help</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="521"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>Quit the app</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="531"/>
<source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>Quit %1 ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="555"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="560"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Add an account</translation>
@ -4185,13 +4218,13 @@ Expiration : %1</translation>
<translation>Timezone</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="899"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="898"/>
<source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organizer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="918"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="917"/>
<source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Join meeting</translation>
@ -4917,14 +4950,26 @@ To enable them in a commercial project, please contact us.</translation>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="375"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Proxy server URL&quot;</extracomment>
<translation>Proxy server URL</translation>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation>Outbound SIP Proxy URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="386"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="377"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="388"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="400"/>
<source>login_id</source>
<extracomment>&quot;Connexion ID (if different)&quot;</extracomment>
<translation>Connexion ID (if different)</translation>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation>Authentication ID (if different)</translation>
</message>
</context>
<context>
@ -5103,15 +5148,14 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Meetings</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="27"/>
<source>settings_security_title</source>
<extracomment>&quot;Affichage&quot; &quot;Security&quot;</extracomment>
<translation>Security / Encryption</translation>
<translation type="vanished">Security / Encryption</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="29"/>
<source>settings_network_title</source>
<extracomment>&quot;Réseau&quot;</extracomment>
<extracomment>&quot;Affichage&quot; &quot;Security&quot; &quot;Réseau&quot;</extracomment>
<translation>Network</translation>
</message>
<message>
@ -5213,7 +5257,7 @@ To enable them in a commercial project, please contact us.</translation>
<context>
<name>Utils</name>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2276"/>
<location filename="../../tool/Utils.cpp" line="2280"/>
<source>nSeconds</source>
<translation>
<numerusform>%1 second</numerusform>
@ -5221,7 +5265,7 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2271"/>
<location filename="../../tool/Utils.cpp" line="2275"/>
<source>nMinute</source>
<translation>
<numerusform>%1 minute</numerusform>
@ -5265,7 +5309,7 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Failed to create reply message</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2272"/>
<location filename="../../tool/Utils.cpp" line="2276"/>
<source>nHour</source>
<translation>
<numerusform>%1 hour</numerusform>
@ -5273,8 +5317,8 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2273"/>
<location filename="../../tool/Utils.cpp" line="2274"/>
<location filename="../../tool/Utils.cpp" line="2277"/>
<location filename="../../tool/Utils.cpp" line="2278"/>
<source>nDay</source>
<translation>
<numerusform>%1 day</numerusform>
@ -5282,7 +5326,7 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2275"/>
<location filename="../../tool/Utils.cpp" line="2279"/>
<source>nWeek</source>
<translation>
<numerusform>%1 week</numerusform>

View file

@ -27,45 +27,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="436"/>
<location filename="../../core/account/AccountCore.cpp" line="438"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connecté</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="439"/>
<location filename="../../core/account/AccountCore.cpp" line="441"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>En cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="442"/>
<location filename="../../core/account/AccountCore.cpp" line="444"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connexion</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="445"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="451"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Désactivé</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="483"/>
<location filename="../../core/account/AccountCore.cpp" line="485"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>Vous êtes en ligne et joignable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="486"/>
<location filename="../../core/account/AccountCore.cpp" line="488"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Erreur de connexion, vérifiez vos paramètres.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="490"/>
<location filename="../../core/account/AccountCore.cpp" line="492"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Compte désactivé, vous ne recevrez ni appel ni message.</translation>
@ -83,43 +83,43 @@
<context>
<name>AccountManager</name>
<message>
<location filename="../../model/account/AccountManager.cpp" line="86"/>
<location filename="../../model/account/AccountManager.cpp" line="87"/>
<source>assistant_account_login_already_connected_error</source>
<extracomment>&quot;The account is already connected&quot;</extracomment>
<translation>Le compte est déjà connecté</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="104"/>
<location filename="../../model/account/AccountManager.cpp" line="109"/>
<source>assistant_account_login_proxy_address_error</source>
<extracomment>&quot;Unable to create proxy address. Please check the domain name.&quot;</extracomment>
<translation>Impossible de créer l&apos;adresse proxy. Merci de vérifier le nom de domaine.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="117"/>
<location filename="../../model/account/AccountManager.cpp" line="122"/>
<source>assistant_account_login_address_configuration_error</source>
<extracomment>&quot;Unable to configure address: `%1`.&quot;</extracomment>
<translation>Impossible de configurer l&apos;adresse : `%1`.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="124"/>
<location filename="../../model/account/AccountManager.cpp" line="129"/>
<source>assistant_account_login_params_configuration_error</source>
<extracomment>&quot;Unable to configure account settings.&quot;</extracomment>
<translation>Impossible de configurer les paramètres du compte.</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="148"/>
<location filename="../../model/account/AccountManager.cpp" line="153"/>
<source>assistant_account_login_forbidden_error</source>
<extracomment>&quot;Username and password do not match&quot;</extracomment>
<translation>Le couple identifiant mot de passe ne correspond pas</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="150"/>
<location filename="../../model/account/AccountManager.cpp" line="155"/>
<source>assistant_account_login_error</source>
<extracomment>&quot;Error during connection, please verify your parameters&quot;</extracomment>
<translation>Erreur durant la connexion, veuillez vérifier vos paramètres</translation>
</message>
<message>
<location filename="../../model/account/AccountManager.cpp" line="163"/>
<location filename="../../model/account/AccountManager.cpp" line="168"/>
<source>assistant_account_add_error</source>
<extracomment>&quot;Unable to add account.&quot;</extracomment>
<translation>Impossible d&apos;ajouter le compte.</translation>
@ -134,25 +134,31 @@
<translation>Impossible de définir l&apos;adresse du serveur de messagerie vocale depuis l&apos;adresse %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="293"/>
<location filename="../../model/account/AccountModel.cpp" line="292"/>
<source>set_server_address_failed_error_message</source>
<extracomment>&quot;Unable to set server address, failed creating address from %1&quot;</extracomment>
<translation>Impossible de définir l&apos;adresse du serveur depuis l&apos;adresse %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="398"/>
<location filename="../../model/account/AccountModel.cpp" line="309"/>
<source>set_outbound_proxy_uri_failed_error_message</source>
<extracomment>Unable to set outbound proxy uri, failed creating address from %1</extracomment>
<translation>Impossible de définir l&apos;adresse du proxy sip sortant depuis l&apos;adresse %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="418"/>
<source>set_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the conversation server address, failed creating address from %1&quot;</extracomment>
<translation>Impossible de définir l&apos;uri du serveur de conversations depuis l&apos;adresse %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="420"/>
<location filename="../../model/account/AccountModel.cpp" line="440"/>
<source>set_audio_conference_factory_address_failed_error_message</source>
<extracomment>&quot;Unable to set the meeting server address, failed creating address from %1&quot;</extracomment>
<translation>Impossible de définir l&apos;uri du serveur de réunions depuis l&apos;adresse %1</translation>
</message>
<message>
<location filename="../../model/account/AccountModel.cpp" line="467"/>
<location filename="../../model/account/AccountModel.cpp" line="487"/>
<source>set_voicemail_address_failed_error_message</source>
<extracomment>Unable to set voicemail address, failed creating address from %1</extracomment>
<translation>Impossible de définir l&apos;adresse de messagerie vocale depuis l&apos;adresse %1</translation>
@ -325,104 +331,131 @@
<context>
<name>AccountSettingsParametersLayout</name>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="14"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="17"/>
<source>settings_title</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="18"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="21"/>
<source>settings_account_title</source>
<translation>Paramètres de compte</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="32"/>
<source>info_popup_invalid_registrar_uri_message</source>
<extracomment>Registrar uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation>La registrar URI est invalide. Veuillez vous assurer qu&apos;elle respecte le format suivant : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; est facultatif)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="34"/>
<source>info_popup_invalid_outbound_proxy_message</source>
<extracomment>Outbound proxy uri is invalid. Please make sure it matches the following format : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; is optional)</extracomment>
<translation>L&apos;uri du proxy sip sortant est invalide. Veuillez vous assurer qu&apos;elle respecte le format suivant : sip:&lt;host&gt;:&lt;port&gt;;transport=&lt;transport&gt; (:&lt;port&gt; est facultatif)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="35"/>
<source>info_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="45"/>
<source>information_popup_success_title</source>
<translation>Succès</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="36"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="47"/>
<source>contact_editor_saved_changes_toast</source>
<extracomment>&quot;Modifications sauvegardés&quot;</extracomment>
<translation>Modifications sauvegardés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="43"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="54"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="63"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="74"/>
<source>account_settings_mwi_uri_title</source>
<extracomment>&quot;URI du serveur de messagerie vocale&quot;</extracomment>
<translation>URI du serveur de messagerie vocale</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="84"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="95"/>
<source>account_settings_voicemail_uri_title</source>
<extracomment>&quot;URI de messagerie vocale&quot;</extracomment>
<translation>URI de messagerie vocale</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="108"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="120"/>
<source>account_settings_transport_title</source>
<extracomment>&quot;Transport&quot;</extracomment>
<translation>Transport</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="122"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="127"/>
<source>account_settings_registrar_uri_title</source>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="140"/>
<source>account_settings_sip_proxy_url_title</source>
<translation>URL du serveur mandataire</translation>
<translation>URL du proxy SIP sortant</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="145"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>Si ce champ est rempli, loutbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="129"/>
<source>account_settings_outbound_proxy_title</source>
<extracomment>&quot;Serveur mandataire sortant&quot;</extracomment>
<translation>Serveur mandataire sortant</translation>
<extracomment>&quot;Outbound proxy enabled&quot;</extracomment>
<translation type="vanished">Serveur mandataire sortant</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="138"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="157"/>
<source>account_settings_stun_server_url_title</source>
<extracomment>&quot;Adresse du serveur STUN&quot;</extracomment>
<translation>Adresse du serveur STUN</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="162"/>
<source>account_settings_enable_ice_title</source>
<extracomment>&quot;Activer ICE&quot;</extracomment>
<translation>Activer ICE</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="149"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="168"/>
<source>account_settings_avpf_title</source>
<extracomment>&quot;AVPF&quot;</extracomment>
<translation>AVPF</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="174"/>
<source>account_settings_bundle_mode_title</source>
<extracomment>&quot;Mode bundle&quot;</extracomment>
<translation>Mode bundle</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="164"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="183"/>
<source>account_settings_expire_title</source>
<extracomment>&quot;Expiration (en seconde)&quot;</extracomment>
<translation>Expiration (en seconde)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="175"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="194"/>
<source>account_settings_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de conversations&quot;</extracomment>
<translation>URI du serveur de conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="192"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="211"/>
<source>account_settings_audio_video_conference_factory_uri_title</source>
<extracomment>&quot;URI du serveur de réunions&quot;</extracomment>
<translation>URI du serveur de réunions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="206"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="225"/>
<source>account_settings_lime_server_url_title</source>
<extracomment>&quot;URL du serveur déchange de clés de chiffrement&quot;</extracomment>
<translation>URL du serveur déchange de clés de chiffrement</translation>
@ -546,19 +579,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favoris</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="323"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="376"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="375"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Suggestions</translation>
@ -880,42 +913,42 @@
<context>
<name>CallLayout</name>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="70"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="75"/>
<source>meeting_event_conference_destroyed</source>
<extracomment>&quot;Vous avez quitté la conférence&quot;</extracomment>
<translation>Vous avez quitté la conférence</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="73"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="78"/>
<source>call_ended_by_user</source>
<extracomment>&quot;Vous avez terminé l&apos;appel&quot;</extracomment>
<translation>Vous avez terminé l&apos;appel</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="76"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="81"/>
<source>call_ended_by_remote</source>
<extracomment>&quot;Votre correspondant a terminé l&apos;appel&quot;</extracomment>
<translation>Votre correspondant a terminé l&apos;appel</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="152"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="157"/>
<source>conference_call_empty</source>
<extracomment>&quot;En attente d&apos;autres participants&quot;</extracomment>
<translation>En attente d&apos;autres participants</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="170"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="175"/>
<source>conference_share_link_title</source>
<extracomment>&quot;Partager le lien&quot;</extracomment>
<translation>Partager le lien</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="176"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="181"/>
<source>copied</source>
<translation>Copié</translation>
</message>
<message>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="178"/>
<location filename="../../view/Control/Container/Call/CallLayout.qml" line="183"/>
<source>information_popup_meeting_address_copied_to_clipboard</source>
<extracomment>Le lien de la réunion a é copié dans le presse-papier</extracomment>
<translation>Le lien de la réunion a é copié dans le presse-papier</translation>
@ -1899,25 +1932,25 @@
<context>
<name>ChatMessage</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="429"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="430"/>
<source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copier la sélection</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="431"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="432"/>
<source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment>
<translation>Copier</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="439"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="440"/>
<source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment>
<translation>Copié</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="441"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="442"/>
<source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment>
<translation>dans le presse-papiers</translation>
@ -1953,25 +1986,25 @@
<translation>Vous avez répondu</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="404"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="405"/>
<source>chat_message_reception_info</source>
<extracomment>&quot;Reception info&quot;</extracomment>
<translation>Info de réception</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="416"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="417"/>
<source>chat_message_reply</source>
<extracomment>Reply</extracomment>
<translation>Répondre</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="448"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="449"/>
<source>chat_message_forward</source>
<extracomment>Forward</extracomment>
<translation>Transférer</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="465"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="466"/>
<source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Supprimer</translation>
@ -2133,38 +2166,38 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Trouver un message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>Aucun résultat trouvé</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>Premier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Dernier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="161"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>Conversation chiffrée de bout en bout</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="171"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="169"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -2172,7 +2205,7 @@ Error</extracomment>
en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="211"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="209"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation>
@ -3105,13 +3138,13 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>DecoratedTextField</name>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="54"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="56"/>
<source>textfield_error_message_cannot_be_empty</source>
<extracomment>&quot;ne peut être vide&quot;</extracomment>
<translation>ne peut être vide</translation>
</message>
<message>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="57"/>
<location filename="../../view/Control/Input/DecoratedTextField.qml" line="59"/>
<source>textfield_error_message_unknown_format</source>
<extracomment>&quot;Format non reconnu&quot;</extracomment>
<translation>Format non reconnu</translation>
@ -3395,50 +3428,50 @@ Expiration : %1</translation>
<context>
<name>HelpPage</name>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="39"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="40"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Aide</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="53"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="111"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="70"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="128"/>
<source>help_about_title</source>
<extracomment>&quot;À propos de %1&quot;</extracomment>
<translation>À propos de %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="67"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="84"/>
<source>help_about_privacy_policy_title</source>
<extracomment>&quot;Règles de confidentialité&quot;</extracomment>
<translation>Règles de confidentialité</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="69"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="86"/>
<source>help_about_privacy_policy_subtitle</source>
<extracomment>Quelles informations %1 collecte et utilise</extracomment>
<translation>Quelles informations %1 collecte et utilise</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="79"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="96"/>
<source>help_about_version_title</source>
<extracomment>&quot;Version&quot;</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="87"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="104"/>
<source>help_about_gpl_licence_title</source>
<extracomment>&quot;Licences GPLv3&quot;</extracomment>
<translation>Licences GPLv3</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="98"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="115"/>
<source>help_about_contribute_translations_title</source>
<extracomment>&quot;Contribuer à la traduction de %1&quot;</extracomment>
<translation>Contribuer à la traduction de %1</translation>
</message>
<message>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="123"/>
<location filename="../../view/Page/Main/Help/HelpPage.qml" line="140"/>
<source>help_troubleshooting_title</source>
<extracomment>&quot;Dépannage&quot;</extracomment>
<translation>Dépannage</translation>
@ -3724,7 +3757,7 @@ Expiration : %1</translation>
<translation>Lien de configuration distante</translation>
</message>
<message>
<location filename="../../core/login/LoginPage.cpp" line="85"/>
<location filename="../../core/login/LoginPage.cpp" line="86"/>
<source>default_account_connection_state_error_toast</source>
<translation>Erreur durant la connexion</translation>
</message>
@ -3811,31 +3844,31 @@ Expiration : %1</translation>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="489"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Enregistrements</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="504"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Aide</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="521"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>Quitter l&apos;application</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="526"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="531"/>
<source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>Quitter %1 ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="555"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="560"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Ajouter un compte</translation>
@ -4180,13 +4213,13 @@ Expiration : %1</translation>
<translation>Fuseau horaire</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="899"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="898"/>
<source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organisateur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="918"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="917"/>
<source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Rejoindre la réunion</translation>
@ -4912,13 +4945,25 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="375"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Proxy server URL&quot;</extracomment>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation>URI du proxy SIP sortant</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="386"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="377"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>Si ce champ est rempli, loutbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver.</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="388"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="400"/>
<source>login_id</source>
<extracomment>&quot;Connexion ID (if different)&quot;</extracomment>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation>Identifiant de connexion (si différent)</translation>
</message>
</context>
@ -5098,15 +5143,14 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Réunions</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="27"/>
<source>settings_security_title</source>
<extracomment>&quot;Affichage&quot; &quot;Security&quot;</extracomment>
<translation>Sécurité / Chiffrement</translation>
<translation type="vanished">Sécurité / Chiffrement</translation>
</message>
<message>
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="29"/>
<source>settings_network_title</source>
<extracomment>&quot;Réseau&quot;</extracomment>
<extracomment>&quot;Affichage&quot; &quot;Security&quot; &quot;Réseau&quot;</extracomment>
<translation>Réseau</translation>
</message>
<message>
@ -5208,7 +5252,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<context>
<name>Utils</name>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2271"/>
<location filename="../../tool/Utils.cpp" line="2275"/>
<source>nMinute</source>
<translation>
<numerusform>%1 minute</numerusform>
@ -5216,7 +5260,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2272"/>
<location filename="../../tool/Utils.cpp" line="2276"/>
<source>nHour</source>
<translation>
<numerusform>%1 heure</numerusform>
@ -5224,8 +5268,8 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2273"/>
<location filename="../../tool/Utils.cpp" line="2274"/>
<location filename="../../tool/Utils.cpp" line="2277"/>
<location filename="../../tool/Utils.cpp" line="2278"/>
<source>nDay</source>
<translation>
<numerusform>%1 jour</numerusform>
@ -5233,7 +5277,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2275"/>
<location filename="../../tool/Utils.cpp" line="2279"/>
<source>nWeek</source>
<translation>
<numerusform>%1 semaine</numerusform>
@ -5241,7 +5285,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2276"/>
<location filename="../../tool/Utils.cpp" line="2280"/>
<source>nSeconds</source>
<translation>
<numerusform>%1 seconde</numerusform>

View file

@ -60,7 +60,8 @@ bool AccountManager::login(QString username,
QString domain,
linphone::TransportType transportType,
QString *errorMessage,
QString serverAddress,
QString registrarUri,
QString outboundProxyAddress,
QString connectionId) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
auto core = CoreModel::getInstance()->getCore();
@ -89,9 +90,13 @@ bool AccountManager::login(QString username,
}
if (!displayName.isEmpty()) identity->setDisplayName(Utils::appStringToCoreString(displayName));
if (!serverAddress.isEmpty()) {
auto linServerAddress = ToolModel::interpretUrl(serverAddress);
params->setServerAddress(linServerAddress);
if (!registrarUri.isEmpty()) {
auto linRegistrarUri = ToolModel::interpretUrl(registrarUri);
params->setServerAddress(linRegistrarUri);
}
if (!outboundProxyAddress.isEmpty()) {
auto linOutboundProxyAddress = ToolModel::interpretUrl(outboundProxyAddress);
params->setRoutesAddresses({linOutboundProxyAddress});
}
if (!domain.isEmpty()) {
identity->setDomain(Utils::appStringToCoreString(domain));

View file

@ -42,7 +42,8 @@ public:
QString domain = QString(),
linphone::TransportType transportType = linphone::TransportType::Tls,
QString *errorMessage = nullptr,
QString serverAddress = QString(),
QString registrarUri = QString(),
QString outboundProxyAddress = QString(),
QString connectionId = QString());
std::shared_ptr<linphone::Account> createAccount(const QString &assistantFile);

View file

@ -268,31 +268,51 @@ void AccountModel::setTransport(linphone::TransportType value, bool save) {
params->setServerAddress(addressClone);
if (save) mMonitor->setParams(params);
emit transportChanged(value);
emit serverAddressChanged(Utils::coreStringToAppString(addressClone->asString()));
emit registrarUriChanged(Utils::coreStringToAppString(addressClone->asString()));
}
}
QString AccountModel::getServerAddress() const {
QString AccountModel::getRegistrarUri() const {
if (mMonitor->getParams()->getServerAddress())
return Utils::coreStringToAppString(mMonitor->getParams()->getServerAddress()->asString());
else return "";
}
void AccountModel::setServerAddress(QString value, linphone::TransportType transport, bool save) {
void AccountModel::setRegistrarUri(QString value) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
auto params = mMonitor->getParams()->clone();
auto address = CoreModel::getInstance()->getCore()->interpretUrl(Utils::appStringToCoreString(value), false);
if (address) {
if (save) address->setTransport(transport);
params->setServerAddress(address);
if (save) mMonitor->setParams(params);
emit serverAddressChanged(value);
mMonitor->setParams(params);
emit registrarUriChanged(value);
emit transportChanged(address->getTransport());
} else {
//: "Unable to set server address, failed creating address from %1"
emit setValueFailed(tr("set_server_address_failed_error_message").arg(value));
qWarning() << "Unable to set ServerAddress, failed creating address from" << value;
}
emit registrarUriChanged(Utils::coreStringToAppString(address->asString()));
}
QString AccountModel::getOutboundProxyUri() const {
auto routeAddresses = mMonitor->getParams()->getRoutesAddresses();
auto outbound =
routeAddresses.empty() ? QString() : Utils::coreStringToAppString(routeAddresses.front()->asString());
return outbound;
}
void AccountModel::setOutboundProxyUri(QString value) {
auto linOutboundProxyAddress = ToolModel::interpretUrl(value);
if (!linOutboundProxyAddress) {
//: Unable to set outbound proxy uri, failed creating address from %1
emit setValueFailed(tr("set_outbound_proxy_uri_failed_error_message").arg(value));
return;
}
auto params = mMonitor->getParams()->clone();
params->setRoutesAddresses({linOutboundProxyAddress});
emit outboundProxyUriChanged(value);
}
bool AccountModel::getOutboundProxyEnabled() const {

View file

@ -59,8 +59,10 @@ public:
void setMwiServerAddress(QString value);
linphone::TransportType getTransport() const;
void setTransport(linphone::TransportType value, bool save);
QString getServerAddress() const;
void setServerAddress(QString value, linphone::TransportType transport, bool save);
QString getRegistrarUri() const;
void setRegistrarUri(QString value);
QString getOutboundProxyUri() const;
void setOutboundProxyUri(QString value);
bool getOutboundProxyEnabled() const;
void setOutboundProxyEnabled(bool value);
QString getStunServer() const;
@ -107,7 +109,8 @@ signals:
void notificationsAllowedChanged(bool value);
void mwiServerAddressChanged(QString value);
void transportChanged(linphone::TransportType value);
void serverAddressChanged(QString value);
void registrarUriChanged(QString value);
void outboundProxyUriChanged(QString value);
void outboundProxyEnabledChanged(bool value);
void stunServerChanged(QString value);
void iceEnabledChanged(bool value);

View file

@ -23,6 +23,7 @@
#include <QDir>
#include <QObject>
#include <QRegularExpression>
#include <QString>
#include "config.h"
@ -102,6 +103,11 @@ public:
Q_PROPERTY(QString DefaultLocale MEMBER DefaultLocale CONSTANT)
Q_PROPERTY(int maxMosaicParticipants MEMBER MaxMosaicParticipants CONSTANT)
Q_PROPERTY(QStringList reactionsList READ getReactionsList CONSTANT)
Q_PROPERTY(QRegularExpression uriRegExp MEMBER mUriRegExp CONSTANT)
// Uri regexp
QRegularExpression mUriRegExp = QRegularExpression(
"(sip|sips):[[:alnum:]]+[.]*[[[:alnum:]]+[.]*[[:alnum:]]+]*:?[0-9]*?;transport=(tls|tcp|udp|dtls)");
// For Webviews
static constexpr char DefaultAssistantRegistrationUrl[] = "https://subscribe.linphone.org/register";

View file

@ -2242,6 +2242,10 @@ bool Utils::isAnimatedImage(const QString &path) {
return reader.canRead() && reader.supportsAnimation() && reader.imageCount() > 1;
}
bool Utils::fileExists(const QString &path) {
return QFileInfo::exists(path);
}
bool Utils::canHaveThumbnail(const QString &path) {
if (path.isEmpty()) return false;
return isImage(path) || isAnimatedImage(path) /*|| isPdf(path)*/ || isVideo(path);
@ -2275,3 +2279,9 @@ QString Utils::getEphemeralFormatedTime(int selectedTime) {
else if (selectedTime == 604800) return tr("nWeek", "", 1).arg(1);
else return tr("nSeconds", "", selectedTime).arg(selectedTime);
}
bool Utils::stringMatchFormat(QString toMatch, QRegularExpression regExp) {
if (!regExp.isValid()) return false;
auto match = regExp.match(toMatch);
return match.hasMatch();
}

View file

@ -166,6 +166,7 @@ public:
Q_INVOKABLE static bool isVideo(const QString &path);
static QString getSafeFilePath(const QString &filePath, bool *soFarSoGood);
Q_INVOKABLE static bool isAnimatedImage(const QString &path);
Q_INVOKABLE static bool fileExists(const QString &path);
Q_INVOKABLE static bool canHaveThumbnail(const QString &path);
Q_INVOKABLE static bool isImage(const QString &path);
Q_INVOKABLE static bool isPdf(const QString &path);
@ -186,6 +187,8 @@ public:
Q_INVOKABLE static void sendVoiceRecordingMessage(RecorderGui *recorderGui, ChatGui *chatGui);
Q_INVOKABLE static QString getEphemeralFormatedTime(int selectedTime);
Q_INVOKABLE static bool stringMatchFormat(QString toMatch, QRegularExpression regExp);
// QDir findDirectoryByName(QString startPath, QString name);
static QString getApplicationProduct();

View file

@ -21,8 +21,8 @@ Button {
topPadding: 0
bottomPadding: 0
icon.source: AppIcons.verticalDots
icon.width: Math.round(24 * DefaultStyle.dp)
icon.height: Math.round(24 * DefaultStyle.dp)
icon.width: width
icon.height: width
function close() {
popup.close()
}

View file

@ -69,11 +69,19 @@ FocusScope {
contentItem: RowLayout {
spacing: Math.round(16 * DefaultStyle.dp)
anchors.verticalCenter: parent.verticalCenter
Image {
source: AppIcons.groupCall
Layout.preferredWidth: Math.round(44 * DefaultStyle.dp)
sourceSize.width: Math.round(44 * DefaultStyle.dp)
Rectangle {
width: Math.round(44 * DefaultStyle.dp)
height: width
radius: width / 2
color: DefaultStyle.main1_500_main
EffectImage {
imageSource: AppIcons.usersThreeFilled
anchors.centerIn: parent
width: Math.round(24 * DefaultStyle.dp)
height: width
fillMode: Image.PreserveAspectFit
colorizationColor: DefaultStyle.grey_0
}
}
Text {
text: mainItem.startGroupButtonText

View file

@ -2,11 +2,13 @@ import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
import Linphone
import "qrc:/qt/qml/Linphone/view/Style/buttonStyle.js" as ButtonStyle
FocusScope{
id: mainItem
property alias contentItem: contentItem.data
property string label: ""
property string tooltip: ""
property bool mandatory: false
property alias errorTextItem: errorText
@ -41,7 +43,8 @@ FocusScope{
spacing: Math.round(5 * DefaultStyle.dp)
anchors.left: parent.left
anchors.right: parent.right
RowLayout {
spacing: Math.round(8 * DefaultStyle.dp)
Text {
visible: label.length > 0
verticalAlignment: Text.AlignVCenter
@ -57,6 +60,18 @@ FocusScope{
weight: Typography.p2.weight
}
}
Item{Layout.fillWidth: true}
PopupButton {
visible: mainItem.tooltip !== ""
Layout.preferredWidth: Math.round(24 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(24 * DefaultStyle.dp)
style: ButtonStyle.noBackground
icon.source: AppIcons.info
popup.contentItem: Text {
text: mainItem.tooltip
}
}
}
Item {
Layout.preferredHeight: childrenRect.height

View file

@ -67,15 +67,20 @@ Item {
sourceSize.height: mainItem.height
fillMode: Image.PreserveAspectFit
}
Rectangle {
anchors.fill: parent
color: DefaultStyle.main1_200
opacity: 0.5
Image {
anchors.fill: image
z: image.z + 1
visible: image.status == Image.Error || image.status == Image.Null || image.frameCount === 0
z: parent.z + 1
visible: image.status == Image.Error || image.status == Image.Null || !UtilsCpp.fileExists(mainItem.filePath)
source: AppIcons.fileImage
sourceSize.width: mainItem.width
sourceSize.height: mainItem.height
fillMode: Image.PreserveAspectFit
}
}
Image {
id: image
visible: mainItem.isImage && status !== Image.Loading

View file

@ -20,6 +20,8 @@ FormItemLayout {
property bool toValidate: false
property alias text: textField.text
property var value: propertyOwnerGui ? propertyOwnerGui.core[propertyName] : propertyOwner[propertyName]
function value() {
return propertyOwnerGui ? propertyOwnerGui.core[propertyName] : propertyOwner[propertyName]
}

View file

@ -347,7 +347,7 @@ LoginLayout {
}
console.debug("[SIPLoginPage] User: Log in")
LoginPageCpp.login(usernameEdit.text, passwordEdit.text, displayName.text, domainEdit.text,
transportCbox.currentValue, serverAddressEdit.text, connectionIdEdit.text);
transportCbox.currentValue, registrarUriEdit.text, outboundProxyUriEdit.text, connectionIdEdit.text);
connectionButton.enabled = false
connectionButtonContent.currentIndex = 1
}
@ -370,25 +370,39 @@ LoginLayout {
ColumnLayout {
spacing: Math.round(10 * DefaultStyle.dp)
FormItemLayout {
id: serverAddress
//: "Proxy server URL"
id: outboundProxyUri
//: "Outbound SIP Proxy URI"
label: qsTr("login_proxy_server_url")
//: "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it."
tooltip: qsTr("login_proxy_server_url_tooltip")
Layout.fillWidth: true
contentItem: TextField {
id: serverAddressEdit
id: outboundProxyUriEdit
Layout.preferredWidth: Math.round(360 * DefaultStyle.dp)
KeyNavigation.down: registrarUriEdit
}
}
FormItemLayout {
id: registrarUri
//: "Registrar URI"
label: qsTr("login_registrar_uri")
Layout.fillWidth: true
contentItem: TextField {
id: registrarUriEdit
Layout.preferredWidth: Math.round(360 * DefaultStyle.dp)
KeyNavigation.up: outboundProxyUriEdit
KeyNavigation.down: connectionIdEdit
}
}
FormItemLayout {
id: connectionId
//: "Connexion ID (if different)"
//: "Authentication ID (if different)"
label: qsTr("login_id")
Layout.fillWidth: true
contentItem: TextField {
id: connectionIdEdit
Layout.preferredWidth: Math.round(360 * DefaultStyle.dp)
KeyNavigation.up: serverAddressEdit
KeyNavigation.up: registrarUriEdit
}
}
}

View file

@ -6,10 +6,13 @@ import QtQuick.Dialogs
import Linphone
import SettingsCpp 1.0
import UtilsCpp
import ConstantsCpp
AbstractSettingsLayout {
id: mainItem
width: parent?.width
property bool registrarUriIsValid
property bool outboundProxyIsValid
contentModel: [{
"title": qsTr("settings_title"),
"subTitle": "",
@ -23,7 +26,15 @@ AbstractSettingsLayout {
property alias account: mainItem.model
onSave: {
account.core.save()
if (!registrarUriIsValid || !outboundProxyIsValid) {
var message = !registrarUriIsValid
//: Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional)
? qsTr("info_popup_invalid_registrar_uri_message")
//: Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional)
: qsTr("info_popup_invalid_outbound_proxy_message")
mainWindow.showInformationPopup(qsTr("info_popup_error_title"), message, false)
}
else account.core.save()
}
onUndo: account.core.undo()
Connections {
@ -110,26 +121,33 @@ AbstractSettingsLayout {
color: DefaultStyle.main2_600
font: Typography.p2l
}
ComboSetting {
DecoratedTextField {
Layout.fillWidth: true
Layout.topMargin: Math.round(-15 * DefaultStyle.dp)
entries: account.core.transports
propertyName: "transport"
//:"Registrar URI"
title: qsTr("account_settings_registrar_uri_title")
propertyName: "registrarUri"
propertyOwnerGui: account
toValidate: true
isValid: function(text) {
var valid = text === "" || UtilsCpp.stringMatchFormat(text, ConstantsCpp.uriRegExp)
mainItem.registrarUriIsValid = valid
return valid
}
}
DecoratedTextField {
Layout.fillWidth: true
//:"URL du serveur mandataire"
//:"Outbound SIP Proxy URI"
title: qsTr("account_settings_sip_proxy_url_title")
propertyName: "serverAddress"
propertyName: "outboundProxyUri"
propertyOwnerGui: account
toValidate: true
//: "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it."
tooltip: qsTr("login_proxy_server_url_tooltip")
isValid: function(text) {
var isValid = text === "" || UtilsCpp.stringMatchFormat(text, ConstantsCpp.uriRegExp)
mainItem.outboundProxyIsValid = isValid
return isValid
}
SwitchSetting {
//: "Serveur mandataire sortant"
titleText: qsTr("account_settings_outbound_proxy_title")
propertyName: "outboundProxyEnabled"
propertyOwnerGui: account
}
DecoratedTextField {
Layout.fillWidth: true

View file

@ -178,7 +178,7 @@ FriendGui{
content: RowLayout {
spacing: Math.round(50 * DefaultStyle.dp)
Avatar {
_address: "sip:a.c@sip.linphone.org"
displayNameVal: "A C"
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
}
@ -189,7 +189,7 @@ FriendGui{
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
}
Avatar {
_address: "sip:a.c@sip.linphone.org"
displayNameVal: "A C"
secured: true
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)

View file

@ -49,6 +49,7 @@ QtObject {
property string chatTeardropTextSelected: "image://internal/chat-teardrop-text-fill.svg"
property string usersThree: "image://internal/users-three.svg"
property string usersThreeSelected: "image://internal/users-three-fill.svg"
property string usersThreeFilled: "image://internal/users-three-filled.svg"
property string userPlus: "image://internal/user-plus.svg"
property string noItemImage: "image://internal/noItemImage.svg"
property string verticalDots: "image://internal/dots-three-vertical.svg"